美文网首页
Centos 7 通过 systemctl 控制 Tomcat

Centos 7 通过 systemctl 控制 Tomcat

作者: Alexander_Zz | 来源:发表于2019-07-29 11:03 被阅读0次

    一、场景

    之前在 centos 6上 写过一个通过脚本控制 tomcat 启动和停止的脚本,虽然在 centos 7 也可以使用,但 centos 7 的守护进程已经由之前的 init 更换为 systemctl,因此可以通过 systemctl 控制 tomcat 的启动和停止,另外经测试通过 systemctl 启动和关闭 tomcat 非常成功,尤其是关闭 tomcat,之前时候 catalina.sh 脚本关闭 tomcat,会有无法关闭的情况,而使用了 systemctl 后可以确保百分百关闭成功

    二、步骤

    2.1:编辑/etc/sudoers,目的为可以让普通用于远程没有tty的情况下重启tomcat
    56 #Defaults    requiretty   # 不需要 TTY
    99 www    ALL=(ALL)    NOPASSWD: /usr/bin/systemctl   # www 用户使用 sudo 执行 systemctl 命令免密
    
    2.2 添加 www 用户
    ~]# useradd www -u 1000   # 此用户用于后期启动 tomcat,应用不要用 root 身份启动
    
    2.3 创建 tomcat 软连接
    ~]# ln -sv /usr/local/apache-tomcat-7.0.68 /usr/local/tomcat
    '/usr/local/tomcat' -> '/usr/local/apache-tomcat-7.0.68'
    
    2.4 编辑 tomact 启动脚本
    ~]# vim /usr/lib/systemd/system/tomcat.service
    
    [Unit]
    Description=Tomcat
    After=syslog.target network.target remote-fs.target nss-lookup.target
    
    [Service]
    Type=forking
    Environment=/usr/local/jdk
    PIDFile=/usr/local/tomcat/tomcat.pid
    ExecStart=/usr/local/tomcat/bin/startup.sh
    ExecReload=/bin/kill -s HUP $MAINPID
    ExecStop=/bin/kill -s QUIT $MAINPID
    PrivateTmp=true
    User=www
    Group=www
    
    [Install]
    WantedBy=multi-user.target
    
    2.5 编辑变量脚本 /usr/local/tomcat/bin/setenv.sh
    ~]# vim /usr/local/tomcat/bin/setenv.sh
    
    # Set tomcat PID dir
    CATALINA_PID="$CATALINA_BASE/tomcat.pid"
    
    # Add Java Opts
    JAVA_OPTS="-server -Xss512k -Xmn1024m -Xmx4096m -Xms2096m
    -XX:MaxPermSize=512m  -XX:SurvivorRatio=4  
    -XX:ReservedCodeCacheSize=100m  
    -XX:+UseConcMarkSweepGC -XX:+UseParNewGC
    -XX:MaxTenuringThreshold=20
    -XX:+UseTLAB
    -XX:+UseCMSCompactAtFullCollection
    -XX:CMSFullGCsBeforeCompaction=5 
    -XX:+CMSPermGenSweepingEnabled
    -XX:+CMSClassUnloadingEnabled
    -XX:-CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=70 
    -XX:PretenureSizeThreshold=10240
    -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000
    -Djava.library.path=/usr/local/apr/lib
    -Dfile.encoding=UTF-8
    -Djava.awt.headless=true"
    
    ~]# chmod a+x /usr/local/tomcat/bin/setenv.sh
    
    2.6 编辑 catalina.sh
    ~]# vim /usr/local/tomcat/bin/catalina.sh
    
    # 加在 [ -z "$CATALINA_BASE" ] && CATALINA_BASE="$CATALINA_HOME" 这一行下面,否则 pid 路径可能会在 / 下面
    
    127 # Copy CATALINA_BASE from CATALINA_HOME if not already set
    128 [ -z "$CATALINA_BASE" ] && CATALINA_BASE="$CATALINA_HOME"
    129 CATALINA_PID="$CATALINA_BASE/tomcat.pid"
    
    2.7 编辑 startup.sh
    ~]# vim /usr/local/tomcat/bin/startup.sh
    
    21 export JAVA_HOME=/usr/local/jdk
    22 export JRE_HOME=/usr/local/jdk/jre
    

    相关文章

      网友评论

          本文标题:Centos 7 通过 systemctl 控制 Tomcat

          本文链接:https://www.haomeiwen.com/subject/jwvvrctx.html