首页 > 解决方案 > 使用专用 tomcat 用户运行 Tomcat9:启动失败,在 localhost:8080 中出现 JAVA_HOME 或 500

问题描述

我刚刚在我的机器上安装了 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,但这没有帮助。

任何帮助表示赞赏。

标签: javalinuxtomcatchown

解决方案


现在它起作用了,我将在此处列出我的更改,但我不确定哪个是关键的,哪个是不必要的。

  1. tomcat.service中的JAVA_HOME更改为:Environment="JAVA_HOME=/usr/lib/jvm/java-11-oracle"
  2. tomcat.service中的CATALINA_PID更改为:Environment="CATALINA_PID=/opt/tomcat/latest/temp/tomcat.pid"
  3. 授予其他用户对文件夹work、temp、logs、webapps的写入权限。来源herehere
  4. 使用本指南:https ://www.interserver.net/tips/kb/install-apache-tomcat-on-ubuntu-18-04/

推荐阅读