Apache Solr部署配置:如何将配置存入VCS、数据保留在本地
看起来你已经走对了方向,但几个配置细节没衔接上,导致Solr找不到核心配置。咱们一步步来修正:
1. 先修正Solr安装脚本的冗余问题
你的安装脚本里重复执行了install_solr_service.sh,顺序也有点问题,调整成这样更清晰可靠:
apt-get install -q -y openjdk-8-jdk # Install Apache Solr if not already set up if [[ ! -e "/etc/default/solr.in.sh" ]]; then SOLR_VERSION="7.7.1" SOLR_TGZ="solr-${SOLR_VERSION}.tgz" # Download and extract Solr wget http://www-eu.apache.org/dist/lucene/solr/${SOLR_VERSION}/${SOLR_TGZ} # Run the official install script properly tar xzf ${SOLR_TGZ} ./solr-${SOLR_VERSION}/bin/install_solr_service.sh ${SOLR_TGZ} --strip-components=2 # Append custom config to solr.in.sh cat /vagrant/config/solr/solr.in.sh >> /etc/default/solr.in.sh # Replace solr.xml with your custom one rm -f /opt/solr/server/solr/solr.xml ln -s /vagrant/config/solr/solr.xml /opt/solr/server/solr/solr.xml # Clean up installation files rm -rf solr-${SOLR_VERSION} ${SOLR_TGZ} fi
注:原脚本里
chmod u+x ./install_solr_service.sh是多余的,官方解压后的脚本已经自带执行权限;重复运行安装脚本会生成冗余配置,所以只需要执行一次即可。
2. 让Solr正确识别核心的配置与数据路径
你的solr.xml已经把coreRootDirectory指向了Git托管的/vagrant/config/solr/cores,这一步是对的,但每个核心的core.properties里只指定了dataDir,缺失了配置目录的指向——Solr默认会去dataDir下找conf文件夹,但你的配置文件其实在Git目录的cores子目录里。
给每个核心的core.properties添加上配置路径的指定:
# 替换NAME_OF_CORE为实际核心名称 config=conf/solrconfig.xml dataDir=/var/solr/data/NAME_OF_CORE
这样Solr加载核心时,会从/vagrant/config/solr/cores/NAME_OF_CORE/conf读取配置文件,而数据会存储在本地的/var/solr/data/NAME_OF_CORE目录,完美实现配置Git托管、数据本地存储的需求。
3. 修复创建新核心的报错问题
当你尝试创建new_core时,Solr会默认在coreRootDirectory(也就是/vagrant/config/solr/cores)下查找该核心的配置文件夹,但这个目录里并没有new_core的conf目录,所以报错。要创建新核心,你需要:
- 先在
/vagrant/config/solr/cores下创建new_core目录,放入完整的配置文件夹(可以从现有核心复制模板) - 在
new_core目录下添加core.properties文件,指定dataDir=/var/solr/data/new_core - 重启Solr服务:
sudo service solr restart - 或者用Solr CLI命令直接创建(更便捷):
sudo -u solr solr create_core -c new_core -d /vagrant/config/solr/cores/new_core/conf
4. 确保Solr服务有足够权限
别忘了给相关目录设置正确的权限,避免Solr读不到配置或者写不了数据:
# 让Solr用户能读取Git里的配置目录 sudo chown -R solr:solr /vagrant/config/solr/cores # 确保本地数据目录权限正确 sudo mkdir -p /var/solr/data sudo chown -R solr:solr /var/solr/data
最后验证
重启Solr服务后,访问localhost:8983/solr,应该就能看到所有托管在/vagrant/config/solr/cores下的核心了,每个核心的数据都会存在本地的/var/solr/data目录,配置则通过Git管理,完全符合你的需求。
内容的提问来源于stack exchange,提问作者Philipp Wrann

