把Tomcat配置为系统服务

yum命令安装Tomcat后发现是Tomcat7,现在Tomcat9都出来了,为了用上最新版本,就去官网下了压缩包自己解压安装了Tomcat9.0.12.但自己安装的操作起来不方便。本来准备把$CATALINA_HOME/bin/shartup.sh放到开机启动的脚本里面,突然想起来可以配置成系统服务呀,这样不是更方便吗。然而,事情并没有那么简单,毕竟我什么都不懂。

  1. 找到了完美的配置。
    在这里找到了一篇博文,感觉很完美地解决了我的问题,我都已经想好了,弄完之后贴个链接,标个转载,又是一篇博客。
  2. 不太对呀
    然而,执行systemctl start tomcat.service时报错,天哪,用systemctl status tomcat.servide发现错误是Failed to read PID from file /usr/local/tomcat9/tomcat.pid: Invalid argument。
  3. 又有办法了
    在百度上搜了一下,看到别人配置Nginx时也有类似的错误,解决方法是要么把服务配置文件中的PIDFile那一行删了,要么是在配置文件中加一行,ExecStartPost=/bin/sleep 0.1,这样是在启动脚本执行之后等0.1秒,然后再去读.pid文件。直接写在服务配置文件里面或者/etc/systemd/system/tomcat.service.d/override.conf里面都可以,后面的这个文件也会在服务调用时生效,覆写服务配置文件。
  4. 到底行不行
    按照上面的改了服务配置文件之后执行systemctl daemon-reload。然后systemctl start tomcat,结果还是不行,查看原因说PID file /usr/local/tomcat9/tomcat.pid not readable (yet?) after start-post.还是.pid文件的原因,看了一下,竟然没有那个文件,那用touch新建一个吧。然而还是不行。看别人的pid文件都在/var/run/里面,要不试试,还是不行。
  5. 原来是这么回事
    实在是没办法呀,我觉得既然人家写了pid文件,最好还是别删,想想办法弄好,不好意思,真的弄不好。删了pid文件那一行,果然就可以了。
    又去看了一下,原来这个pid文件不是systemd生成的,它是对应的守护进程自己生成的,而且用处不大,现在也很少用了,Tomcat启动后并不会去生成对应的pid文件,所以一直不行,一直报错。放心地大胆地去删掉就可以了。
  6. 一点补充
    start之后的状态是Active: active (running),但是stop之后的状态是Active: failed (Result: exit-code),原来Tomcat停止成功的状态是143,在服务配置文件里面加一行SuccessExitStatus=143。现在stop之后的状态是Active: inactive (dead)。
  7. 来个总结
    网上搜索的时候很难有百分百合适的结果,看着差不多就耐心点看完,随便瞟一眼就又去找其他的,这样很没效率。

你可能感兴趣的:(Linux,后端,服务器,Tomcat,Linux,systemctl)