Запуск Tomcat9 с выделенным пользователем tomcat: сбой запуска с JAVA_HOME или 500 на локальном хосте: 8080

Я только что установил Apache Tomcat9 на свой компьютер, в основном следуя этим инструкциям, но я действительно застрял здесь с управлением пользователями.

Моя среда: Ubuntu 20.04, Java 11 (There is only one alternative in link group java (providing /usr/bin/java): /usr/lib/jvm/java-11-oracle/bin/java).

Несколько исключений: у меня нет ни JAVA_HOME, ни домашнего каталога java в моей переменной окружения PATH.

Я также создал символическую ссылку в /opt/tomcat/latest/ для указания на нужную папку для всех файлов tomcat.

Теперь я хочу, чтобы tomcat работал как служба как пользователь «tomcat».

Вот как выглядит мой файл tomcat.service:

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

[Service]
Type=forking

User=tomcat
Group=tomcat

Environment="JAVA_HOME=/usr/lib/jvm/java-11-oracle/bin/java"
# Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom -Djava.awt.headless=true"

Environment="CATALINA_BASE=/opt/tomcat/latest"
Environment="CATALINA_HOME=/opt/tomcat/latest"
Environment="CATALINA_PID=/opt/tomcat/latest/tomcat.pid"
# Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"

ExecStart=/opt/tomcat/latest/bin/startup.sh
ExecStop=/opt/tomcat/latest/bin/shutdown.sh

[Install]
WantedBy=multi-user.target

Теперь, когда я комментирую строку для переменной среды JAVA_HOME, запуск службы tomcat завершается сбоем (journalctl -xe):

Okt 27 17:43:52 my-user startup.sh[7714]: Tomcat started.
Okt 27 17:43:52 my-user shutdown.sh[7737]: PID file found but either no matching process was found or the current user does not have permission to stop the process. Stop aborted.
Okt 27 17:43:52 my-user sudo[7690]: pam_unix(sudo:session): session closed for user root

Итак, что-то работает как root, чего я не понимаю.

Но когда я комментирую эту строку, tomcat работает счастливо, но на localhost:8080 я получаю 500:

Message org.apache.jasper.JasperException: java.lang.ClassNotFoundException: org.apache.jsp.index_jsp

или этот 404

Message JSP file [/index.jsp] not found

Это похоже на здесь и здесь.

Я тоже делал sudo chown -R tomcat /opt/tomcat/latest/work/Catalina/localhost, но это не помогло.

Любая помощь приветствуется.


person BairDev    schedule 27.10.2020    source источник


Ответы (1)


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

  1. JAVA_HOME в tomcat.service изменен на: Environment="JAVA_HOME=/usr/lib/jvm/java-11-oracle"
  2. CATALINA_PID в tomcat.service изменен на: Environment="CATALINA_PID=/opt/tomcat/latest/temp/tomcat.pid"
  3. предоставить другим пользователям доступ на запись к папкам work, temp, logs, webapps. Источники здесь и здесь.
  4. используя это руководство: https://www.interserver.net/tips/kb/install-apache-tomcat-on-ubuntu-18-04/
person BairDev    schedule 28.10.2020