使用专用的tomcat用户运行Tomcat9:在本地主机上启动失败,并显示JAVA_HOME或500:8080

问题描述

我刚刚在我的机器following mostly these instructions上安装了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环境变量中既没有PATH也没有java主目录。

我还在/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

类似于herehere

我也做了sudo chown -R tomcat /opt/tomcat/latest/work/Catalina/localhost,但这没有帮助。

感谢您的帮助。

解决方法

现在它可以工作了,我将在这里列出我的更改,但是我不确定,哪个是至关重要的,哪个是不必要的。

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...