一、场景
之前在 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
网友评论