问题描述
我刚刚在我的机器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
我也做了sudo chown -R tomcat /opt/tomcat/latest/work/Catalina/localhost
,但这没有帮助。
感谢您的帮助。
解决方法
现在它可以工作了,我将在这里列出我的更改,但是我不确定,哪个是至关重要的,哪个是不必要的。
-
tomcat.service 中的
- JAVA_HOME 更改为:
Environment="JAVA_HOME=/usr/lib/jvm/java-11-oracle"
tomcat.service 中的 - CATALINA_PID 已更改为:
Environment="CATALINA_PID=/opt/tomcat/latest/temp/tomcat.pid"
- 授予其他用户对文件夹工作,临时,日志,webapps 的写权限。来源here和here。
- 使用本指南:https://www.interserver.net/tips/kb/install-apache-tomcat-on-ubuntu-18-04/