Как создать сервис solr для запуска solr при перезагрузке - PullRequest
0 голосов
/ 12 февраля 2020

Я пытаюсь создать служебный скрипт 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

Я думаю, что установил соответствующие значения для переменных в сценарии. Но когда я пытаюсь запустить скрипт, я получаю «Соединение отказано».

$ service solr stop
Stopping Solr
java.net.ConnectException: Connection refused (Connection refused)

Я получаю тот же результат, независимо от того, запускаю ли я скрипт как root или нет.

Я могу остановиться и запустить solr таким образом, однако:

/path/to/my/solr/bin/solr start

Итак, я также попытался создать этот скрипт в /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

Этот скрипт работает в командной строке, но он не работает при перезагрузке. Чтобы попытаться заставить его работать при перезагрузке, я сделал ...

sudo systemctl enable solr-start

Но Solr не запускается при перезагрузке.

Мои версии: RHEL 7, Solr 6.6.6

1 Ответ

0 голосов
/ 19 февраля 2020

К сожалению, вы почти не предоставляете подробных сведений о вашей установке c Solr. В следующем примере системного блока может быть предоставлена ​​отправная точка.

Создайте файл /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
Restart=on-failure
ExecStart=/path/to/my/solr/bin/solr start
ExecStop=/path/to/my/solr/bin/solr stop
Restart=on-failure

[Install]
WantedBy=multi-user.target

Выполните следующие команды как root или добавьте к ним префикс sudo:

  • systemctl daemon-reload
  • systemctl enable solr.service
  • systemctl start solr.service
  • systemctl status solr.service

Если вам нужны другие (или более) опции в системном блоке, этот GitHub Gist был предложен для восходящей как возможная отправная точка для включения вверх по течению.

...