Ошибка при запуске Tomcat 9 на Ubuntu 18

Вопрос или проблема

Я пытаюсь установить apache-tomcat-9.0.33 на 64-битную машину с Ubuntu 18.04.4 LTS. Я следовал скрипту, указанному на https://linuxize.com/post/how-to-install-tomcat-9-on-ubuntu-18-04/. Все шло хорошо до конца четвертого шага. Когда я пытался запустить tomcat, я получил следующее:

~$ sudo systemctl start tomcat
Работа для tomcat.service не удалась, так как управляющий процесс завершился с кодом ошибки.
Смотрите "systemctl status tomcat.service" и "journalctl -xe" для подробностей.

Вывод этих команд подсказал мне, что проблема была вызвана неправильными правами доступа.

Я выполнил все предложения из следующего:

Не удается запустить Apache Tomcat 8.5.4 на Ubuntu 16.04

Теперь права доступа для каждого .sh файла в /opt/tomcat/bin/ установлены на “-rwxr-xr-x”, а каждый файл в этой директории имеет в качестве владельца и группы “tomcat”. Более того, каждая директория в пути /opt/tomcat/bin/ имеет права “drwxr-xr-x” и “tomcat” в качестве владельца и группы.

Я проверил, что значение для JAVA_HOME, указанное в /etc/systemd/system/tomcat.service, такое же, как указано в printenv JAVA_HOME.

Запуск по-прежнему не удался.

Я перезагрузил машину, проверил, что нет устаревшего pid, попробовал снова, и запуск снова не удался:

~$ ps ax | grep tomcat
 4795 tty2     Sl+    0:16 gedit /home/coffeepot/Desktop/tomcat fail 1.txt
 5379 pts/0    S+     0:00 grep --color=auto tomcat

~$ sudo systemctl start tomcat
Работа для tomcat.service не удалась, так как управляющий процесс завершился с кодом ошибки.
Смотрите "systemctl status tomcat.service" и "journalctl -xe" для подробностей.

sudo systemctl status tomcat
● tomcat.service - Контейнер веб-приложений Apache Tomcat
   Загружен: загружен (/etc/systemd/system/tomcat.service; отключен; предустановка поставщика: включена)
   Активен: не удался (Результат: код выхода) с Вт 2020-04-21 09:58:12 EDT; 15с назад
  Процесс: 5233 ExecStart=/opt/tomcat/latest/bin/startup.sh (код=завершен, статус=0/УСПЕХ)
 Основной PID: 5243 (код=завершен, статус=2)

21 апреля 09:58:12 m11 systemd[1]: Запуск контейнера веб-приложений Apache Tomcat...
21 апреля 09:58:12 m11 startup.sh[5233]: Найден существующий файл PID при запуске.
21 апреля 09:58:12 m11 startup.sh[5233]: Удаление/очистка устаревшего файла PID.
21 апреля 09:58:12 m11 startup.sh[5233]: Tomcat запущен.
21 апреля 09:58:12 m11 systemd[1]: Запущен контейнер веб-приложений Apache Tomcat.
21 апреля 09:58:12 m11 systemd[1]: tomcat.service: Основной процесс завершился, код=завершен, статус=2/НЕДОПУСТИМЫЙ АРГУМЕНТ
21 апреля 09:58:12 m11 systemd[1]: tomcat.service: Не удалось с результатом 'код выхода'.

journalctl -xe
-- 
-- Результат - РЕЗУЛЬТАТ.
21 апреля 09:58:11 m11 systemd[1]: Зависимость не выполнена для /mnt/28db1409-5a51-40d2-84ad-3b4496c805ec.
-- Тема: Единица mnt-28db1409\x2d5a51\x2d40d2\x2d84ad\x2d3b4496c805ec.mount не удалась
-- Определено: systemd
-- Поддержка: 
-- 
-- Единица mnt-28db1409\x2d5a51\x2d40d2\x2d84ad\x2d3b4496c805ec.mount не удалась.
-- 
-- Результат - РЕЗУЛЬТАТ.
21 апреля 09:58:11 m11 systemd[1]: mnt-28db1409\x2d5a51\x2d40d2\x2d84ad\x2d3b4496c805ec.mount: Задача mnt-28db1409\x2d5a51\x2d40d2\x2d84ad\x2d3b4496c805ec.mount/start не удалась с результатом 'зависимость'.
21 апреля 09:58:11 m11 systemd[1]: dev-disk-by\x2duuid-28db1409\x2d5a51\x2d40d2\x2d84ad\x2d3b4496c805ec.device: Задача dev-disk-by\x2duuid-28db1409\x2d5a51\x2d40d2\x2d84ad\x2d3b4496c805ec.device/start не удалась с
21 апреля 09:58:12 m11 sudo[5230]: coffeepot : TTY=pts/0 ; PWD=/home/coffeepot ; USER=root ; COMMAND=/bin/systemctl start tomcat
21 апреля 09:58:12 m11 sudo[5230]: pam_unix(sudo:session): сессия открыта для пользователя root (uid=0)
21 апреля 09:58:12 m11 systemd[1]: Запуск контейнера веб-приложений Apache Tomcat...
-- Тема: Единица tomcat.service начала запуск
-- Определено: systemd
-- Поддержка: 
-- 
-- Единица tomcat.service начала запуск.
21 апреля 09:58:12 m11 startup.sh[5233]: Найден существующий файл PID при запуске.
21 апреля 09:58:12 m11 startup.sh[5233]: Удаление/очистка устаревшего файла PID.
21 апреля 09:58:12 m11 startup.sh[5233]: Tomcat запущен.
21 апреля 09:58:12 m11 systemd[1]: Запущен контейнер веб-приложений Apache Tomcat.
-- Тема: Единица tomcat.service завершила запуск
-- Определено: systemd
-- Поддержка: 
-- 
-- Единица tomcat.service завершила запуск.
-- 
-- Результат запуска - РЕЗУЛЬТАТ.
21 апреля 09:58:12 m11 systemd[1]: tomcat.service: Основной процесс завершился, код=завершен, статус=2/НЕДОПУСТИМЫЙ АРГУМЕНТ
21 апреля 09:58:12 m11 systemd[1]: tomcat.service: Не удалось с результатом 'код выхода'.
21 апреля 09:58:12 m11 sudo[5230]: pam_unix(sudo:session): сессия закрыта для пользователя root
21 апреля 09:58:17 m11 gnome-shell[4476]: Игнорирование избыточных значений в определении теней
21 апреля 09:58:17 m11 gnome-shell[4476]: Игнорирование избыточных значений в определении теней
21 апреля 09:58:17 m11 gnome-shell[4476]: Игнорирование избыточных значений в определении теней
21 апреля 09:58:17 m11 gnome-shell[4476]: Игнорирование избыточных значений в определении теней
21 апреля 09:58:18 m11 gnome-shell[4476]: Игнорирование избыточных значений в определении теней
21 апреля 09:58:18 m11 gnome-shell[4476]: Игнорирование избыточных значений в определении теней
21 апреля 09:58:19 m11 gnome-shell[4476]: Игнорирование избыточных значений в определении теней
21 апреля 09:58:19 m11 gnome-shell[4476]: Игнорирование избыточных значений в определении теней
21 апреля 09:58:19 m11 gnome-shell[4476]: Игнорирование избыточных значений в определении теней
21 апреля 09:58:19 m11 gnome-shell[4476]: Игнорирование избыточных значений в определении теней
21 апреля 09:58:19 m11 gnome-shell[4476]: Игнорирование избыточных значений в определении теней
21 апреля 09:58:19 m11 gnome-shell[4476]: Игнорирование избыточных значений в определении теней
21 апреля 09:58:28 m11 sudo[5245]: coffeepot : TTY=pts/0 ; PWD=/home/coffeepot ; USER=root ; COMMAND=/bin/systemctl status tomcat
21 апреля 09:58:28 m11 sudo[5245]: pam_unix(sudo:session): сессия открыта для пользователя root (uid=0)
21 апреля 09:58:28 m11 sudo[5245]: pam_unix(sudo:session): сессия закрыта для пользователя root
21 апреля 09:58:43 m11 gnome-shell[4476]: Игнорирование избыточных значений в определении теней
21 апреля 09:58:43 m11 gnome-shell[4476]: Игнорирование избыточных значений в определении теней
21 апреля 09:58:43 m11 gnome-shell[4476]: Игнорирование избыточных значений в определении теней
21 апреля 09:58:43 m11 gnome-shell[4476]: Игнорирование избыточных значений в определении теней
21 апреля 09:58:48 m11 PackageKit[1334]: транзакция get-updates /1028_ecebadde от uid 1000 завершилась успешно после 398мс

Что я пропустил? Как я могу заставить работать tomcat?

Я нашел причину проблемы. Когда я внимательно посмотрел на лог Catalina, я обнаружил, что добавил лишний слэш в путь в JAVA_HOME, из-за чего Tomcat не смог найти Java.

Ответ или решение

Диагностика и исправление ошибки запуска Apache Tomcat 9 на Ubuntu 18.04

Ваша ситуация с запуском Apache Tomcat 9 на Ubuntu 18.04, судя по предоставленным вами данным, является распространённой проблемой, которая может возникнуть в процессе установки. Давайте систематически разберёмся с ней и выделим ключевые аспекты.

1. Проблема с разрешениями

Вы упомянули, что проверили разрешения на файлы и директории в /opt/tomcat/bin/. Это – важный этап, поскольку неправильные разрешения могут препятствовать запуску Tomcat. Убедитесь, что все файлы и папки имеют корректные разрешения и владельца:

sudo chown -R tomcat:tomcat /opt/tomcat
sudo chmod -R 755 /opt/tomcat

Эти команды зададут tomcat владельцем всех файлов и установят корректные права доступа.

2. Проверка переменной окружения JAVA_HOME

Вы правильно отметили, что значение переменной JAVA_HOME, указанное в /etc/systemd/system/tomcat.service, должно соответствовать тому, что возвращает команда printenv JAVA_HOME. Однако, если вы обнаружили, что в вашем значении есть лишний символ, как, например, дополнительный слеш, это может радикально повлиять на работу Tomcat.

Вы можете открыть файл сервиса и проверить его командой:

sudo nano /etc/systemd/system/tomcat.service

Убедитесь, что строка вида:

Environment=JAVA_HOME=/path/to/java

не содержит лишних слешей и правильно указывает на расположение Java.

3. Журнал логирования Cataline

Иногда systemctl status tomcat может не предоставить всех необходимых деталей, и для детальной диагностики стоит обратить внимание на логи Tomcat. Логи обычно находятся в директории /opt/tomcat/latest/logs/. Особенно интересен файл catalina.out, который может дать понять, что именно происходит во время попытки запуска.

Откройте лог следующей командой:

sudo tail -f /opt/tomcat/latest/logs/catalina.out

Если Tomcat не может найти Java, в логе будет соответствующее сообщение.

4. Проверка зависимостей системы

Обращайте внимание на вывод команды journalctl -xe, так как в вашем случае она указывает на проблемы с некоторыми монтированными устройствами. Эти зависимости могут повлиять на работу Tomcat, если он ожидает определённые разделы, и их нет или они не готовы.

5. Перезапуск службы

После вноса всех необходимых корректировок не забудьте перезагрузить systemd и попытаться снова запустить Tomcat:

sudo systemctl daemon-reload
sudo systemctl start tomcat

А затем проверьте статус снова:

sudo systemctl status tomcat

Итог

Ошибки при запуске Tomcat чаще всего связаны с неправильными настройками окружения или разрешениями. Следуя вышеперечисленным шагам, у вас должно получиться устранить большинство проблем. Главное — внимательно проверять все пути и настройки, а также использовать логирование для диагностики. Если все равно возникают сложности, выясните, есть ли другие зависимости или ошибки в системных журналах.

Если у вас есть дополнительные вопросы, не стесняйтесь спрашивать. Удачи в работе с Tomcat!

Оцените материал
Добавить комментарий

Капча загружается...