假设Tomcat的安装路径为/opt/tomcat
1 为Tomcat添加启动参数
catalina.sh在执行的时候会调用同级路径下的setenv.sh来设置额外的环境变量,因此在/opt/tomcat/bin路径下创建setenv.sh文件,内容如下:
export CATALINA_HOME=/opt/tomcat
export CATALINA_BASE=/opt/tomcat
#设置Tomcat的PID文件
CATALINA_PID="$CATALINA_BASE/tomcat.pid"
#添加JVM选项
JAVA_OPTS="-server -XX:PermSize=256M -XX:MaxPermSize=1024m -Xms512M -Xmx1024M -XX:MaxNewSize=256m"
2 编写tomcat.service文件
在/usr/lib/systemd/system路径下添加tomcat.service文件,内容如下:
[Unit]
Description=Tomcat
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/opt/tomcat/tomcat.pid
ExecStart=/opt/tomcat/bin/startup.sh
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
##[unit]配置了服务的描述,规定了在network启动之后执行,
##[service]配置服务的pid,服务的启动,停止,重启
##[install]配置了使用用户
3 将Tomcat加入服务管理
systemctl enable tomcat.service
systemctl disable tomcat.service
systemctl start tomcat.service
systemctl stop tomcat.service
systemctl restart tomcat.service
CentOS7开始,从/etc/init.d脚本改为了systemctl管理服务。
亲自测试成功。
1.首先,需要为tomcat配置pid。
bin/catalina.sh
[java] view plain copy
- # Copy CATALINA_BASE from CATALINA_HOME if not already set
- [ -z "$CATALINA_BASE" ] && CATALINA_BASE="$CATALINA_HOME"
- # 设置pid。一定要加在CATALINA_BASE定义后面,要不然pid会生成到/下面
- CATALINA_PID="$CATALINA_BASE/tomcat.pid"
tomcat.pid文件与bin目录平级。
2.创建tomcat.service文件
/lib/systemd/system/tomcat.service
[java] view plain copy
- [Unit]
- Description=Tomcat
- After=syslog.target network.target remote-fs.target nss-lookup.target
- [Service]
- Type=forking
- Environment="JAVA_HOME=/home/jdk/jdk1.7.0_79"
- PIDFile=/home/tomcat/apache-tomcat-7.0.47/tomcat.pid
- ExecStart=/home/tomcat/apache-tomcat-7.0.47/bin/startup.sh
- ExecReload=/bin/kill -s HUP $MAINPID
- ExecStop=/bin/kill -s QUIT $MAINPID
- PrivateTmp=true
- [Install]
- WantedBy=multi-user.target
Environment="JAVA_HOME=/home/jdk/jdk1.7.0_79" 这里要配置环境变量,在/etc/profile中的配置在系统服务中不生效。
3.设置为开机启动
[java] view plain copy
- systemctl enable tomcat.service
4.其它
修改tomcat.service文件后需要执行下面命令使其生效:
systemctl daemon-reload
查询tomcat 进程 ps -ef | grep "tomcat"| grep -v grep
如果多个tomcat,则拷贝到不同的目录,使用不同的端口。tomcat.service文件名不同即可。
例如:tomcat1.service tomcat2.service tomcat3.service
启动tomcat服务
systemctl start tomcat.service
设置开机自启动
systemctl enable tomcat.service
停止开机自启动
systemctl disable tomcat.service
查看服务当前状态
systemctl status tomcat.service
重新启动服务
systemctl restart tomcat.service
查看所有已启动的服务
systemctl list-units --type=service