Вопрос или проблема
Я установил tomcat9 на мой сервер EC2, используя команды
sudo su
yum install tomcat9
Затем я попытался запустить команду:
/usr/sbin/tomcat9 start
Затем появилось сообщение об ошибке:
Failed to start tomcat.service: Unit tomcat.service not found.
Я что-то упустил?
Что это за файл tomcat.service? Где мне нужно его создать? Что он содержит?
sudo tee /etc/systemd/system/tomcat.service<<EOF
[Unit]
Description=Tomcat Server
After=syslog.target network.target
[Service]
Type=forking
User=tomcat
Group=tomcat
Environment=JAVA_HOME=/usr/lib/jvm/jre-17
Environment="JAVA_OPTS=-Djava.awt.headless=true"
Environment=CATALINA_HOME=/usr/share/tomcat9
Environment=CATALINA_BASE=/usr/share/tomcat9
Environment=CATALINA_PID=/usr/share/tomcat9/temp/tomcat.pid
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M"
ExecStart=/usr/share/tomcat9/bin/catalina.sh start
ExecStop=/usr/share/tomcat9/bin/catalina.sh stop
[Install]
WantedBy=multi-user.target
EOF
Однако, при запуске я получаю ошибку
# /usr/sbin/tomcat9 start
Job for tomcat.service failed because the control process exited with error code. See "systemctl status tomcat.service" and "journalctl -xeu tomcat.service" for details.
# systemctl status tomcat.service
× tomcat.service – Tomcat Server
Loaded: loaded (/etc/systemd/system/tomcat.service; disabled; preset: disabled)
Active: failed (Result: exit-code) since Tue 2023-05-16 16:08:18 JST; 2min 57s ago
Process: 281460 ExecStart=/usr/share/tomcat9/bin/catalina.sh start (code=exited, status=203/EXEC)
CPU: 621us5月 16 16:08:18 ip-172-31-25-139.us-west-2.compute.internal systemd[1]: Starting tomcat.service - Tomcat Server... 5月 16 16:08:18 ip-172-31-25-139.us-west-2.compute.internal systemd[281460]: tomcat.service: Failed to locate executable
/usr/share/tomcat9/bin/catalina.sh: No such file or direc>
5月 16 16:08:18 ip-172-31-25-139.us-west-2.compute.internal systemd[281460]: tomcat.service: Failed at step EXEC spawning
/usr/share/tomcat9/bin/catalina.sh: No such file or dire>
5月 16 16:08:18 ip-172-31-25-139.us-west-2.compute.internal systemd[1]: tomcat.service: Control process exited, code=exited,
status=203/EXEC
5月 16 16:08:18 ip-172-31-25-139.us-west-2.compute.internal systemd[1]: tomcat.service: Failed with result ‘exit-code’.
5月 16 16:08:18 ip-172-31-25-139.us-west-2.compute.internal systemd[1]: Failed to start tomcat.service – Tomcat Server.
Я проверил каталог /usr/share/tomcat9/bin/ и не нашел файл catalina.sh.
Я пропустил какие-то шаги в своей установке?
У меня была такая же проблема недавно на Almalinux 9, я решил её, правильно перенаправив JAVA_HOME.
[root@srd system]# echo $JAVA_HOME
/usr/lib/jvm/java-17-openjdk
Файл tomcat.service
[Unit]
Description=Apache Tomcat Web Application Container
After=network.target
[Service]
Type=oneshot
RemainAfterExit=yes
User=tomcat
Group=tomcat
Environment=”JAVA_HOME=/usr/lib/jvm/java-17-openjdk”
Environment=”JAVA_OPTS=-Djava.security.egd=file:///dev/urandom -Djava.awt.headless=true”
Environment=”CATALINA_BASE=/opt/tomcat”
Environment=”CATALINA_HOME=/opt/tomcat”
Environment=”CATALINA_PID=/opt/tomcat/temp/tomcat.pid”
Environment=”CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC”
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
[Install]
WantedBy=multi-user.target
Надеюсь, мой ответ будет полезен…………..-_-
Ответ или решение
Проблема, с которой вы столкнулись при установке и запуске Tomcat 9 на EC2 сервере через YUM, может быть связана с несколькими аспектами настройки и конфигурации. Давайте разберем шаги, которые могут помочь в устранении ошибки "Failed to start tomcat.service: Unit tomcat.service not found" и последующих проблем с исполняемыми файлами:
F – Факт (Fact):
После установки Tomcat 9 с помощью команды yum install tomcat9
, вы попытались запустить службу с использованием /usr/sbin/tomcat9 start
, однако столкнулись с ошибкой отсутствия юнита службы. При создании собственного файла tomcat.service
и запуске, вы получили ошибку: исполняемый файл catalina.sh
отсутствует в каталоге /usr/share/tomcat9/bin/
.
O – Ожидание (Objective):
Цель – правильно настроить и запустить Apache Tomcat 9, обеспечив его функциональность в качестве службы под управлением системы systemd
.
R – Решение (Resolution):
-
Проверка установки Tomcat 9:
- Убедитесь, что Tomcat 9 установлен корректно. Может понадобиться проверить, установлен ли пакет с бинарными файлами:
yum install tomcat9-webapps tomcat9-admin-webapps
. - Проверьте, где именно установились файлы конфигурации и исполняемые файлы. Обычно они располагаются в
/usr/share/tomcat9
, но могут быть в другом месте, например, в/opt/tomcat
.
- Убедитесь, что Tomcat 9 установлен корректно. Может понадобиться проверить, установлен ли пакет с бинарными файлами:
-
Настройка службы systemd:
- Убедитесь в корректности путей в созданном вами файле
/etc/systemd/system/tomcat.service
. - Если вы используете нестандартный каталог установки, например,
/opt/tomcat
, изменитеCATALINA_HOME
иCATALINA_BASE
в конфигурации.
Пример настройки:
[Unit] Description=Apache Tomcat Web Application Container After=network.target [Service] Type=forking User=tomcat Group=tomcat Environment="JAVA_HOME=/usr/lib/jvm/java-17-openjdk" Environment="CATALINA_HOME=/opt/tomcat" Environment="CATALINA_BASE=/opt/tomcat" ExecStart=/opt/tomcat/bin/startup.sh ExecStop=/opt/tomcat/bin/shutdown.sh [Install] WantedBy=multi-user.target
- Убедитесь в корректности путей в созданном вами файле
-
Обновление переменной JAVA_HOME:
- Проверка корректности переменной окружения
JAVA_HOME
. Выполните:echo $JAVA_HOME
Она должна указывать на действительное расположение вашей Java Runtime Environment, например,
/usr/lib/jvm/java-17-openjdk
.
- Проверка корректности переменной окружения
-
Перезагрузка
systemd
и запуск службы:- После внесения изменений не забудьте перезагрузить
systemd
:systemctl daemon-reload
- Запуск службы:
systemctl start tomcat.service
- При успешном старте активируйте службу для автоматического запуска при перезагрузке системы:
systemctl enable tomcat.service
- После внесения изменений не забудьте перезагрузить
E – Эмоция (Emotion):
Каждый шаг в настройке системы может быть важным, и успех запуска Apache Tomcat приносит уверенность в стабильности работы приложения.
S – Отзывы (Summary):
Настройка служб на Linux требует тщательного внимания к деталям конфигурации и пути установки. При правильной настройке systemd service
и корректных путях для JAVA_HOME
и CATALINA_HOME
ваша установка Tomcat 9 должна заработать без ошибок.
T – Подводя итог (Takeaway):
Проблемы, связанные с отсутствием или неправильной конфигурацией служб, могут быть решены путем тщательной проверки путей, окружения и используемых системой ресурсов. Убедитесь, что все необходимые зависимости, такие как Java, правильно установлены и настроены, чтобы обеспечить безупречный запуск Apache Tomcat.