linux - centos7.2上tomcat无法用systemctl启动

标签 linux tomcat

  1. CentOS7.2
  2. Tomcat9
  3. 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_HOMEJRE_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/

相关文章:

仅用于主进程的 C Linux 信号处理程序

php - 获取大量文件,按文件时间排序,以*毫秒*为单位

java - 如何以编程方式确定我们在桌面上而不是在应用程序服务器上(显示弹出窗口)?

MySQL 5.5 升级到 5.6 创建问题

linux - 在 bash 脚本中读取/dev/ttyS0 时出现奇怪的结果

c - Backtrace 在 Linux x86_64 上如何工作?

java - 达到 hibernate.c3p0.timeout 后数据库连接会发生什么?

java - 来自tomcat6 webservice服务器的 Axis 异常

java - 如何在 Eclipse 中启用热同步?

google-app-engine - 如何配置 Tomcat 以在 Mac OS X 上运行 Google App Engine + GWT 应用程序?