Назад | Перейти на главную страницу

Служба Tomcat 9 на Centos 7 не запускается при загрузке системы

Я не очень разбираюсь в Linux, поэтому, пожалуйста, простите меня, если вам это очевидно.

Я провел большое количество поисков по различным комбинациям ключевых слов, но не могу найти решения этой проблемы.

Я установил на виртуальную машину только командную строку (ядро) CentOS 7.

Я установил java и загрузил tomcat 9.0.14 (я знаю, что это не последняя версия). Я настроил tomcat для работы в качестве службы, используя systemd, то есть я создал файл:

/etc/systemd/system/tomcat.service

Мне пришлось пересмотреть этот пост примерно 15 раз, прежде чем форма отправки перестала думать, что это спам, поэтому мне пришлось удалить много информации, которую я изначально хотел включить, например, то, что находится в моем файле service.tomcat. Сожалею. Я бы хотел включить больше деталей, но форма мне не позволяет.

Это единственный экземпляр Tomcat на сервере Linux. Он установлен в /opt/tomcat/apache-tomcat-9.0.14, но я создал символическую ссылку с именем «latest», поэтому на нее можно ссылаться как / opt / tomcat / latest.

Tomcat запускается правильно, когда я запускаю сценарий запуска вручную, то есть:

cd /opt/tomcat/latest/bin sudo ./startup.sh

Когда я это сделаю, он правильно откликнется, и я могу увидеть целевую страницу в браузере на другом компьютере.

Я также могу запустить tomcat как службу - вручную запустить эту службу, используя:

sudo systemctl start tomcat

Если я это сделаю, то смогу увидеть, как tomcat работает и использует:

sudo systemctl status tomcat

говорит, что работает. Я также могу посетить целевую страницу, когда tomcat запущен таким образом. Таким образом, он запустится как служба, если я вручную запущу службу с помощью указанной выше команды.

Проблема в том, что когда я загружаю машину, tomcat не запускается. Я не думаю, что мне просто не удалось сослаться на службу, скорее, я считаю, что она может дать сбой (но я не уверен на 100%):

Если я перезагружаю компьютер, tomcat не запускается. Если я тогда пойду:

sudo systemctl status tomcat -l

Я получаю это:

tomcat.service - Apache Tomcat Web Application Container
Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Wed 2020-05-27 14:47:27 AEST; 3min 14s ago
Process: 1147 ExecStart=/opt/tomcat/latest/bin/startup.sh (code=exited, status=0/SUCCESS)
Main PID: 1168 (code=exited, status=1/FAILURE)

May 27 14:47:26 CentOS-7-NoGUI-Virgin systemd[1]: Starting Apache Tomcat Web Application Container...
May 27 14:47:27 CentOS-7-NoGUI-Virgin systemd[1]: Started Apache Tomcat Web Application Container.
May 27 14:47:27 CentOS-7-NoGUI-Virgin systemd[1]: tomcat.service: main process exited, code=exited, status=1/FAILURE
May 27 14:47:27 CentOS-7-NoGUI-Virgin systemd[1]: Unit tomcat.service entered failed state.
May 27 14:47:27 CentOS-7-NoGUI-Virgin systemd[1]: tomcat.service failed.

Основываясь на том факте, что он говорит, что tomcat не удалось, я не думаю, что проблема в том, что я не сказал CentOS запустить службу. Скорее я думаю, он пытается запустить службу, но не работает.

Если я сделаю это вручную:

sudo systemctl start tomcat

Мне не возвращается текст, но если я сделаю это впоследствии:

sudo systemctl status tomcat -l

он показывает, что кот работает. Я бы хотел включить точный вывод команды, но мне пришлось удалить и его в моих многочисленных редакциях, чтобы форма отправки не считала это спамом.

Я считаю, что правильно настроил службу tomcat для запуска во время загрузки системы, выполнив следующие действия:

sudo systemctl daemon-reload

sudo systemctl enable tomcat

Я попытался использовать journalctl -xe, чтобы узнать, могу ли я узнать, почему служба не запускается во время загрузки, но я не смог найти в результатах этой команды ничего, что объясняло бы, почему это происходило. Я счастлив предоставить (очень длинный) результат, если это будет полезно.

Файл tomcat.service содержит следующее: (Мне пришлось удалить содержимое этого файла, даже если он был помечен как код, потому что форма отправки утверждала, что мое сообщение выглядело как спам. Вздох)

Я установил следующее в домашней папке моего пользователя в файле .bashrc:

export CATALINA_HOME=/opt/tomcat/latest

Интересно, возможно, когда служба запускается во время загрузки, если она не работает от имени моего пользователя, то, возможно, она каким-то образом не имеет доступа к этой переменной?

Фактический сценарий запуска (указанный в файле tomcat.service - это /opt/tomcat/latest/bin/startup.sh. Он содержит содержимое по умолчанию, я никоим образом его не изменял.

Опять же, приведенный выше сценарий запускается и запускает tomcat. Я даже могу запустить tomcat как службу, набрав вручную sudo systemctl start tomcat.

Он просто не запускается во время загрузки.

Я выполнил sudo yum check-update, а затем sudo yum install update. Я сделал это, чтобы обновить CentOS 7 до последней версии. Я сделал это после того, как установил tomcat, как часть процесса устранения неполадок, через который я прошел. Это не помогло.

Я был бы очень признателен, если бы кто-нибудь мог предложить решение или шаг по устранению неполадок, который я должен попробовать следующим. Например, я не уверен, как исследовать процесс запуска на Linux-сервере специально для поиска служб, которые не запускаются и почему.

С уважением, Спенсер.