Tomcat Запуск при перезагрузке: сценарий init.d не выполнен - PullRequest
1 голос
/ 26 июня 2019

Мне нужно запустить Tomcat после перезагрузки ОС Linux. Я не могу заставить init.d нормально работать через перезагрузку.

ОС и версии:

JRE: 1.8.0
JAVA: 1.8.0
Tomcat:  8.5.34
Linux:  Amazon Linux 2

**** ВСЕ ШАГИ ЗАВЕРШЕНЫ КАК КОРНИ

Конфигурация развертывания TOMCAT:

1)  Install tomcat 8.5.34 using a tar.gz gzip file
2)  configure /{$TOMCAT}/conf/server.xml to use 443 connectors
3)  Deploy MicroStrategy application through deploying a .war file on restart
4)  configure SSL keys using Java Key Store
5)  configure microstrategy webapp for SAML authentication using PING

Настройка развертывания скрипта init.d

Примечание: я пробовал разные скрипты через /etc/init.d/tomcat и утилиту chkconfig.
1) Создать кота с помощью vi 2) Вставьте скрипт (я пробовал множество скриптов, но этот кажется будь как можно ближе к тому, что мне нужно, и самым явным) 3) chmod 755 /etc/init.d/tomcat 4) chkconfig - добавить кота 5) chkconfig --level 2345 tomcat on (эта команда не выполнена) 6) chkconfig --list tomcat (возвращает tomcat 0: выкл. 1: выкл. 2: выкл. 3: вкл. 4: вкл. 5: вкл. 6: выкл.)

Тестирование этого скрипта прошло успешно:

./etc/init.d/tomcat start
./etc/init.d/tomcat stop
./etc/init.d/tomcat restart 

Подтвердил, что chkconfig создал ссылки:

/etc/rc1.d  K20tomcat
/etc/rc2.d  K20tomcat
/etc/rc3.d  S82tomcat
/etc/rc4.d  S82tomcat
/etc/rc5.d  S82tomcat
/etc/rc6.d  K20tomcat

Файл сценария для Tomcat

#!/bin/sh
#
# chkconfig: 345 82 20
#
# description:  Tomcat Service


JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
JRE_HOME=/usr/lib/jvm/jre-1.8.0-openjdk
CATALINA_HOME=/opt/apache-tomcat-8.5.34
export JAVA_HOME JRE_HOME CATALINA_HOME
case $1 in
start)
cd $CATALINA_HOME/bin
./startup.sh
;;
stop)
cd $CATALINA_HOME/bin
./shutdown.sh
;;
restart)
cd $CATALINA_HOME/bin
./shutdown.sh    
./startup.sh
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0

Ожидания

Я ожидаю, что базовый URL-адрес в {$ TOMCAT} / webapps / ROOT будет доступен из общедоступного URL-адреса, указывающего на это устройство после перезагрузки. Службы Tomcat остаются в остановленном состоянии после перезагрузки.

Есть предложения?

Ответы [ 2 ]

1 голос
/ 27 июня 2019

Включить tomcat, используя systemd вместо systemv

Описание

Используемый скрипт относительно прост, потому что его единственная функция - запускать сервер при перезагрузке. Я установил все необходимые переменные окружения, используя setenv.sh в бункере TOMCAT.

Переменные

  1. ТЕСТ: Любое буквенно-цифровое значение
  2. TOMCAT_INSTALL_PATH: место, где вы установили TOMCAT

Steps

  1. Создать файл tomcat @ .service в / etc / systemd / system
  2. Шаблон можно найти в /etc/systemd/system/multi-user.target.wants/tomcat.service

tomcat @ .service

[Unit]
Description=Apache Tomcat Web Application Container
After=syslog.target network.target

[Service]
Type=forking
Environment="CATALINA_HOME={TOMCAT_INSTALL_PATH}"
ExecStart=/opt/apache-tomcat-8.5.34/bin/startup.sh
ExecStop=$CATALINA_HOME/bin/shutdown.sh
SuccessExitStatus=143
User=root

[Install]
WantedBy=multi-user.target
  1. создать пустой файл tomcat.pid (мой был в {TOMCAT_INSTALL_PATH} / conf
  2. записать CATALINA_PID = "{TOMCAT_INSTALL_PATH} /conf/tomcat.pid" строку в setenv.sh в {TOMCAT_INSTALL_PATH} / bin
  3. systemctl daemon-reload
  4. systemctl enable tomcat@test.service
  5. systemctl start tomcat@test.service

Troubleshoot

systemctl status tomcat@test.service -l

-Эта команда будет выводить журнал на консоль, которая отображает выходные данные, которые также записываются в журнал systemctl. Я получил ошибки при начальной настройке, потому что tomcat не мог интерпретировать, который был основным процессом tomcat и закрывался при чтении конца других процессов. Это было преодолено путем создания pid-файла в папке / conf и установки переменной CATALINA_PID в setenv.sh.

1 голос
/ 27 июня 2019

Amazon Linux 2 использует systemd менеджер сервисов, который должен быть обратно совместим с systemv сценариями инициализации при условии , что systemd-sysv-generator выполняется для генерации сервисных единиц из /etc/init.d скриптов (я думаю, не рекомендуется в вашем случае). Поскольку вы сами пишете сценарий, рекомендуется написать правильный сервисный блок .
Вероятно, такой файл * .service уже присутствует в tar.gz, используемом для установки tomcat.

...