背景
作为CentOS7来说,通过init.d建立启动脚本的机制已经不被推荐,推荐的方式是利用systemd机制实现开机启动,下面就该方式进行介绍。
环境准备
操作系统:CentOS 7(64位)
已安装JDK,并配置好环境变量
已安装tomcat,可手动启动,安装路径:/opt/tomcat/(可自定义)
创建Tomcat启动参数setenv.sh
catalina.sh在执行的时候会调用同级路径下的setenv.sh来设置额外的环境变量,因此需要在/opt/tomcat/bin路径下创建setenv.sh文件。
执行脚本:
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_121 export CATALINA_HOME=/opt/tomcat export CATALINA_BASE=/opt/tomcat #设置Tomcat的PID文件 CATALINA_PID="$CATALINA_BASE/bin/tomcat.pid" #添加JVM选项 JAVA_OPTS="-server -XX:PermSize=256M -XX:MaxPermSize=1024m -Xms512M -Xmx1024M -XX:MaxNewSize=256m"
在/usr/lib/systemd/system路径下添加tomcat.service文件。
注意:文件中目录路径必须是绝对路径
执行脚本:
[Unit] Description=Tomcat8 After=syslog.target network.target remote-fs.target nss-lookup.target [Service] Type=forking PIDFile=/opt/tomcat/bin/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]配置了使用用户
测试tomcat服务
注意
磁盘上的tomcat.service已更改。运行“systemctl daemon reload”重新加载单元systemctl才能生效。
启动并查看运行状态
查看进程
停止
因为配置pid,在启动的时候会再tomcat根目录生成tomcat.pid文件,停止之后删除。
同时tomcat在启动时候,执行start不会启动两个tomcat,保证始终只有一个tomcat服务在运行。
多个tomcat可以配置在多个目录下,互不影响。