CentOS7通过systemctl配置tomcat7自启动

网上的各种教程一般建议的操作流程是:
vi /usr/lib/systemd/system/tomcat.service
写入以下内容:
[Unit]
Description=Tomcat 1
After=network.target

[Service]
Type=forking
Environment=JAVA_HOME=/home/jdk1.8.0_131
Environment=CATALINA_PID=/home/tomcat/pid
ExecStart=/home/tomcat/bin/catalina.sh start
ExecReload=/home/tomcat/bin/catalina.sh restart
ExecStop=/home/tomcat/bin/catalina.sh stop

[Install]
WantedBy=multi-user.target

然后执行以下命令:
systemctl enable tomcat.service
但是经测试,完成以上步骤后,通过systemctl start tomcat.service 的时候总是报告以下错误:
Apr 06 14:10:57 hzcqtks.webserver systemd[1]: Starting Tomcat  1...
Apr 06 14:10:57 hzcqtks.webserver catalina.sh[9593]: Neither the JAVA_HOME nor the JRE_HOME environment variable is defined。At least one of these environment variable is needed to run this program
Apr 06 14:10:57 hzcqtks.webserver catalina.sh[9593]: At least one of these en...
Apr 06 14:10:57 hzcqtks.webserver systemd[1]: tomcat.service: contro...1
Apr 06 14:10:57 hzcqtks.webserver systemd[1]: Failed to start Tomcat

反复尝试,在/root/.bash_profile 或/home/tomcat/bin/catalina.sh 或 /home/tomcat/bin/setclasspath.sh 文件中增加:
export JAVA_HOME=/home/jdk1.8.0_131
都没办法解决问题。
最后的解决方案是:
vi /etc/profile.d/setenv.sh
写入以下内容:
export JAVA_HOME=/home/jdk1.8.0_131
保存退出。
vi /usr/lib/systemd/system/tomcat.service
写入以下内容:
[Unit]
Description=Tomcat 1
After=network.target

[Service]
Type=forking
Environment=CATALINA_PID=/home/tomcat/pid
ExecStart=/bin/sh -c '. /etc/profile.d/setenv.sh; /home/tomcat/bin/startup.sh'
ExecReload=/bin/sh -c '. /etc/profile.d/setenv.sh; /home/tomcat/bin/shutdown.sh; /home/tomcat/bin/startup.sh'
ExecStop=/bin/sh -c '. /etc/profile.d/setenv.sh; /home/tomcat/bin/shutdown.sh'

[Install]
WantedBy=multi-user.target

保存退出后:
systemctl daemon-reload;
systemctl start tomcat.service
执行成功。

猜你喜欢

转载自blog.csdn.net/paoma_1008/article/details/79837344