arn*_*ird 0 bash boot solr rhel
我正在尝试创建一个 solr 服务脚本,可以使用它在重新启动时自动启动 solr。这是我看到推荐的一个脚本:
#!/bin/sh
# Starts, stops, and restarts Apache Solr.
#
# chkconfig: 35 92 08
# description: Starts and stops Apache Solr
SOLR_DIR="/var/www/html/fas/solr/solr-latest"
JAVA_OPTIONS="-Xmx1024m -DSTOP.PORT=8983 -DSTOP.KEY=mustard -jar /var/www/html/fas/solr/solr-latest/server/start.jar"
LOG_FILE="/var/log/solr.log"
JAVA="/bin/java"
case $1 in
start)
echo "Starting Solr"
cd $SOLR_DIR
$JAVA $JAVA_OPTIONS 2> $LOG_FILE &
;;
stop)
echo "Stopping Solr"
cd $SOLR_DIR
$JAVA $JAVA_OPTIONS --stop
;;
restart)
$0 stop
sleep 1
$0 start
;;
*)
echo "Usage: $0 {start|stop|restart}" >&2
exit 1
;;
esac
Run Code Online (Sandbox Code Playgroud)
我想我已经为脚本中的变量设置了适当的值。但是当我尝试运行脚本时,我收到“连接被拒绝”。
$ service solr stop
Stopping Solr
java.net.ConnectException: Connection refused (Connection refused)
Run Code Online (Sandbox Code Playgroud)
无论我是否以 root 身份运行脚本,我都会得到相同的结果。
不过,我可以这样停止和启动 solr:
/path/to/my/solr/bin/solr start
Run Code Online (Sandbox Code Playgroud)
所以我也尝试在 /etc/init.d/solr-start 创建这个脚本
#!/bin/sh
# Starts Apache Solr.
#
# chkconfig: 35 92 08
# description: Starts Apache Solr
/var/www/html/fas/solr/solr-latest/bin/solr start
Run Code Online (Sandbox Code Playgroud)
该脚本在命令行下工作,但在重新启动时不起作用。为了尝试让它在重新启动时运行,我做了......
sudo systemctl enable solr-start
Run Code Online (Sandbox Code Playgroud)
但 solr 不会在重新启动时启动。
我的版本:RHEL 7、Solr 6.6.6
不幸的是,您几乎没有提供有关特定 Solr 安装的详细信息。不过,以下 systemd 单元示例可能提供一个起点。
创建包含以下内容的文件/etc/systemd/system/solr.service(并执行调整以使其适合您的 Solr 安装):
[Unit]
Description=Apache SOLR
After=syslog.target network.target remote-fs.target nss-lookup.target systemd-journald-dev-log.socket
Before=multi-user.target
Conflicts=shutdown.target
[Service]
User=solr
# Assumes SOLR_PID_DIR; change port if it differs
PIDFile=/var/lib/solr/solr-8983.pid
# Assumes proper configuration in /etc/default/solr.in.sh
Environment=SOLR_INCLUDE=/etc/default/solr.in.sh
ExecStart=/path/to/my/solr/bin/solr start
ExecStop=/path/to/my/solr/bin/solr stop
Restart=on-failure
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
以 root 身份执行以下命令或添加前缀sudo:
systemctl daemon-reloadsystemctl enable solr.servicesystemctl start solr.servicesystemctl status solr.service如果您在 systemd 单元中需要不同(或更多)选项,建议将此GitHub Gist作为上游包含的可能起点。