tomcat的systemctl启动脚本

时间:2021-08-11 11:36:57

最近在做Tomcat的实验,顺便研究了一下tomcat的启动脚本发现一个问题,然后经过多方查阅其他大神的资料,终于解决,现在跟大家分享。

tomcat的启动脚本跟别的脚本有稍微区别的原因是他需要识别JAVA_HOME环境,你仅仅是写到/etc/profile文件中是不行的。

在启动的时候会报错,我们通过查询错误信息,显示如下信息内容

startup.sh[14716]: Neither the JAVA_HOME nor the JRE_HOME environment variable is defined

  明明定义了JAVA_HOME为什么显示没有JAVA_HOME呢?

因为tomcat自带的startup.sh脚本。调用的是catalina.sh脚本,然后catalina.sh脚本识别的是catalina.bat中的JAVA_HOME环境

所以我们可以直接在catalina.bat中添加JAVA_HOME,但是我觉得都已经写了启动脚本,还需要去别的地方改,这样的话,反而没有service的脚本方便,

然后查了资料发现。可以在systemctl脚奔模块中添加一个Environment来导入JAVA_HOME,下面将我写的tomcat的启动脚本分享给大家。

vim /usr/lib/systemd/system/tomcat.service
  [Unit]
  Description=Tomcat
  After=network.target   [Service]
  Type=forking   Environment="JAVA_HOME=/usr/local/java" //tomcat启用时需要识别JAVA_HOME   ExecStart=/usr/local/tomcat/bin/startup.sh
  ExecStop=/usr/local/tomcat/bin/shutdown.sh   [Install]
  WantedBy=multi-user.target chmod 600 /usr/lib/systemd/system/tomcat.service

  

systemctl daemon-reload
systemctl start tomcat

  此时tomcat即可正常启动

附加说明一点

  因为shutdown.sh脚本通过tomcat的8005号端口关闭tomcat,如果你的熵池比较小的话,那么你在启动tomcat的时候,可能需要一段时间才可以

完全启用到,可以通过查询端口,来查看tomcat有没有完全启动

ss -antp | grep java

  增加熵池大小的话,可以参考我的另外一篇文章,tomcat启用是为什么8005端口没有被占用

最后,在赠送一个tomcat的service的启用脚本

vim /etc/init.d/tomcat
#!/bin/bash
#chkconfig: 2345 96 14
export JAVA_HOME=/usr/local/java
export CATALINA_HOME=/usr/local/tomcat
exec $CATALINA_HOME/bin/catalina.sh $*

  

[root@tomcat ~]# chmod +x /etc/init.d/tomcat
[root@tomcat ~]# chkconfig --add tomcat
[root@tomcat ~]# chkconfig tomcat on

  

如果有什么错误,或者问题,欢迎评论讨论