CATALINA_PID был установлен, но указанный файл не существует

Я следовал этому руководству по настройке tomcat на Ubuntu 16.04.2 LTS Xenial (https://www.digitalocean.com/community/tutorials/how-to-install-apache-tomcat-8-on-ubuntu-16-04) .

Дошли до точки первого запуска:

sudo systemctl start tomcat

и получил ошибку:

~$ sudo systemctl start tomcat
Job for tomcat.service failed because the control process exited with error code. See "systemctl status tomcat.service" and "journalctl -xe" for details.

journalctl -xe
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit tomcat.service has begun starting up.
Feb 27 15:23:42 76672.local startup.sh[20551]: Tomcat started.
Feb 27 15:23:42 76672.local shutdown.sh[20563]: $CATALINA_PID was set but the specified file does not exist. Is Tomcat running? Stop aborted.
Feb 27 15:23:42 76672.local systemd[1]: tomcat.service: Control process exited, code=exited status=1
Feb 27 15:23:42 76672.local systemd[1]: Failed to start Tomcat 9 servlet container.
-- Subject: Unit tomcat.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit tomcat.service has failed.
-- 
-- The result is failed.

CATALINA_PID ожидается в каталоге /opt/tomcat/latest/temp/tomcat.pid

Я дал права делать всем на все для этого каталога /opt/tomcat и всех подпапок/файлов:

~$ namei -l /opt/tomcat
f: /opt/tomcat
drwxr-xr-x root   root   /
drwxr-xr-x root   root   opt
drwxrwxrwx tomcat tomcat tomcat

Кто-нибудь может указать мне на возможные решения?

UPD: Использование bin/startup.sh Tomcat успешно запускается.


person Maxim Andreev    schedule 27.02.2019    source источник
comment
Привет Максим, можете ли вы проверить, что временная папка и файл pid присутствуют по следующему пути: CATALINA_PID=/opt/tomcat/temp/. Я получил этот путь по ссылке, которую вы упомянули   -  person Hichem BOUSSETTA    schedule 27.02.2019
comment
Если файл существует, попробуйте удалить его, а затем перезапустите tomcat.   -  person Hichem BOUSSETTA    schedule 27.02.2019
comment
Папка @HichemBOUSSETTA существует, внутри нее только пустой (проверенный nano) файл safeToDelete.tmp   -  person Maxim Andreev    schedule 27.02.2019
comment
Это рабочий файл инициализации systemd, который я использую при установке tomcat 8. Можешь попробовать? Разница в сценарии stopExec: >[Unit] >Description=Apache Tomcat 8.x >Wants=syslog.target network.target >After=syslog.target network.target >[Service] >Type=forking >Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid >ExecStart=/opt/tomcat/bin/startup.sh >ExecStop=/bin/kill -15 $MAINPID >PIDFile=/opt/tomcat/temp/tomcat.pid >SuccessExitStatus=143 >User=tomcat >Group=tomcat >UMask=0007 >RestartSec=10 >Restart=always >[Install] >WantedBy=multi-user.target   -  person Hichem BOUSSETTA    schedule 27.02.2019
comment
Другое основное отличие заключается в том, что PIDFile=/opt/tomcat/temp/tomcat.pid. Предположительно, это переменная, которая сообщает systemd, куда записать файл, а CATALINA_PID предназначена для каталины. Можете ли вы обновить свой сценарий инициализации и перезапустить службу?   -  person Hichem BOUSSETTA    schedule 27.02.2019
comment
@HichemBOUSSETTA с вашим файлом инициализации не запускается из-за превышения тайм-аута и причины PID file /opt/tomcat/temp/tomcat.pid not readable (yet?) after start: No such file or directory Я полагаю, что некоторые настройки в моем Ubuntu не позволяют создавать файл .pid. Завтра буду пробовать новую чистую убунту.   -  person Maxim Andreev    schedule 27.02.2019
comment
Хорошо, пожалуйста, дайте мне знать!   -  person Hichem BOUSSETTA    schedule 28.02.2019
comment
@HichemBOUSSETTA На чистой новой Ubuntu 16 все работало нормально. Ваш скрипт тоже работал.   -  person Maxim Andreev    schedule 01.03.2019
comment
отлично, спасибо за информацию! :-)   -  person Hichem BOUSSETTA    schedule 01.03.2019


Ответы (1)


Когда вы используете CATALINA_PID в файле tomcat.service, обязательно используйте путь внутри двойных кавычек.

Environment="CATALINA_PID=/opt/tomcat/latest/temp/tomcat.pid" 

Как ниже


[Unit]
Description=Tomcat 9 servlet container
After=network.target

[Service]
Type=forking

User=tomcat
Group=tomcat

Environment="/usr/lib/jvm/java-1.8.0-openjdk-amd64"
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

поздравляю!

person mafei    schedule 05.09.2020