1. 程式人生 > >CentOS7通過systemctl配置tomcat7自啟動

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
執行成功。