Вопрос или проблема
Я пытаюсь установить 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!