./install_solr_service.sh
-i /opt # 安装路径(需已存在)
-d /var/solr # solr数据文件目录
-u solr # 以此系统用户身份运行
-s solr # 服务名
-p 8983 # 运行端口
安装命令
$ tar xzf solr-5.5.0.tgz solr-5.5.0/bin/install_solr_service.sh --strip-components=2
$ sudo bash ./install_solr_service.sh solr-5.5.0.tgz
$ sudo bash ./install_solr_service.sh solr-5.5.0.tgz -f # 强制安装 (solr5.3不支持)
安装结果与配置
1. 安装目录: /opt/solr
2. Linux系统启动脚本: /etc/init.d/solr
3. 环境变量设置文件(覆盖启动参数): /etc/default/solr.in.sh (solr5.3: /var/solr/solr.in.sh)
SOLR_PID_DIR=/var/solr
SOLR_HOME=/var/solr/data
LOG4J_PROPS=/var/solr/log4j.properties
SOLR_LOGS_DIR=/var/solr/logs
SOLR_PORT="8983"
...
SOLR_OPTS="$SOLR_OPTS -Dsolr.autoSoftCommit.maxTime=10000" # bin/solr start -Dsolr.autoSoftCommit.maxTime=10000
...
创建collection:
切换到solr进程运行用户(solr)下;
$ bin/solr create -c mycollection
-------------------
#!/bin/bash
solrver=solr-5.3.2
installDir=/opt
solrfileDir=/data/solr
sysuser=solr
port=8983
echo "- Start Installing ..."
tar xzf ${solrver}.tgz ${solrver}/bin/install_solr_service.sh --strip-components=2
./install_solr_service.sh ${solrver}.tgz -i ${installDir} -d ${solrfileDir} -p ${port}
-------------------
*Solr5.3强制安装脚本(solr5.5中使用-f参数) install-f.sh
-------------------
#!/bin/bash
solrver=solr-5.3.2
installDir=/opt
solrfileDir=/data/solr
sysuser=solr
port=8983
echo "- Stopping Solr instance if exists ..."
service solr stop
if [ -e "/opt/solr" ]; then
echo "- Removing old symlink /opt/solr ..."
rm -r /opt/solr
fi
if [ -e "/etc/init.d/solr" ]; then
echo "- Removing old /etc/init.d/solr script ..."
rm -f /etc/init.d/solr
fi
dt=`date "+%Y%m%d-%H%M%S"`
backupDir=backup-${dt}
if [ -e "${solrfileDir}" ]; then
echo "- Backing up old solr configurations:"
mkdir -p ${solrfileDir}/$backupDir/data
echo "${solrfileDir}/solr.in.sh -> ${solrfileDir}/$backupDir/"
cp -a ${solrfileDir}/solr.in.sh ${solrfileDir}/$backupDir/
echo "${solrfileDir}/log4j.properties -> ${solrfileDir}/$backupDir/"
cp -a ${solrfileDir}/log4j.properties ${solrfileDir}/$backupDir/
echo "${solrfileDir}/data/solr.xml -> ${solrfileDir}/$backupDir/data/"
cp -a ${solrfileDir}/data/solr.xml ${solrfileDir}/$backupDir/data/
fi
echo "- Start Installing ..."
tar xzf ${solrver}.tgz ${solrver}/bin/install_solr_service.sh --strip-components=2
./install_solr_service.sh ${solrver}.tgz -i ${installDir} -d ${solrfileDir} -p ${port}
-------------------
*NOTE:
1. 当使用安装脚本安装solr用于生产环境时,SOLR_HOME等设置通常已覆盖默认值(solr.in.sh),此时应通过service solr start/stop/restart来停止/运行solr(因为/etc/init.d/solr会引用环境变量设置文件).
若直接在安装目录/opt/solr执行bin/solr stop/start/restart, 且不设置启动参数和不引用配置文件,那么solr将使用默认的参数启动(如SOLR_HOME=server/solr).
2. 若服务默认以solr用户运行,创建core或collection时,应当以solr用户身份运行: bin/solr create -c mycoll, 否则可能会出现权限错误而创建失败。
如果使用root身份运行:bin/solr create -c mycoll,bin/solr脚本首先会创建一个有root用户权限的mycoll目录并拷贝配置,然后向solr服务进程发送一个http命令创建core, 而solr服务进程只拥有solr用户权限,将无法在有root权属的mycoll目录下写文件和创建data目录。
3. 在Solr Admin UI使用Core Admin/Add Core创建new_core, 需要先手动创建core目录并拷贝配置(切换到solr系统用户下操作):
$ mkdir new_core
$ cp -a ${solrInstallDir}/server/solr/configsets/basic_configs/conf new_core/