- CentOS7.2
- Tomcat9
- JDK8
我已经在我的 evn 中设置了 JAVA_HOME
并在 cammand 行中运行 catalina.sh run
,tomcat 启动成功。但是我使用 systemctl start tomcat.service
我得到一个错误。
11月 04 22:13:02 iZwz90squb7zj67pw5hyizZ systemd[1]: Starting tomcat...
11月 04 22:13:02 iZwz90squb7zj67pw5hyizZ startup.sh[1058]: Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
11月 04 22:13:02 iZwz90squb7zj67pw5hyizZ startup.sh[1058]: At least one of these environment variable is needed to run this program
11月 04 22:13:02 iZwz90squb7zj67pw5hyizZ systemd[1]: tomcat.service: main process exited, code=exited, status=1/FAILURE
11月 04 22:13:02 iZwz90squb7zj67pw5hyizZ systemd[1]: Failed to start tomcat.
11月 04 22:13:02 iZwz90squb7zj67pw5hyizZ systemd[1]: Unit tomcat.service entered failed state.
11月 04 22:13:02 iZwz90squb7zj67pw5hyizZ systemd[1]: tomcat.service failed.
这是我的tomcat.service
。
[Unit]
Description=tomcat
After=network.target
[Service]
Type=oneshot
Environment=CATALINA_PID=/var/run/tomcat.pid
Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
ExecReload=/usr/bin/kill -s HUP $MAINPID
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
最佳答案
在 tomcat.service
文件的 Service
部分添加一个 JAVA_HOME
或 JRE_HOME
环境变量。
Systemd 不会使用您的 shell 实例的环境变量,因此您需要将它们添加到配置中。
例如:
[Unit]
Description=tomcat
After=network.target
[Service]
Type=oneshot
Environment=JAVA_HOME=/path/to/jre
Environment=CATALINA_PID=/var/run/tomcat.pid
Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
ExecReload=/usr/bin/kill -s HUP $MAINPID
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
您需要运行 systemctl daemon-reload
来加载服务文件的更新。您可以使用 systemctl cat tomcat.service
来验证单元文件是否包含您所做的更改。
关于linux - centos7.2上tomcat无法用systemctl启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40425012/