zoukankan      html  css  js  c++  java
  • tomcat的systemctl启动脚本

    最近在做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
    

      

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

  • 相关阅读:
    关于 Kubernetes 中的 Volume 与 GlusterFS 分布式存储
    使用 Kubeadm 升级 Kubernetes 版本
    Kubernetes 中的核心组件与基本对象概述
    使用 Kubeadm 安装部署 Kubernetes 1.12.1 集群
    比较 Spring AOP 与 AspectJ
    关于 Spring Security OAuth2 中 CORS 跨域问题
    Prometheus 入门与实践
    MySQL 分支的选择:Percona 还是 MariaDB
    Spring Boot 集成 Swagger2 与配置 OAuth2.0 授权
    关于 Spring Security 5 默认使用 Password Hash 算法
  • 原文地址:https://www.cnblogs.com/xll970105/p/9820460.html
Copyright © 2011-2022 走看看