Я не очень разбираюсь в 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-сервере специально для поиска служб, которые не запускаются и почему.
С уважением, Спенсер.