CentOS7下利用systemd机制实现tomcat开机自启动

在之前的博文中已经对CentOS7下利用init.d目录下创建开机启动服务脚本,实现tomcat开机启动的介绍。但作为CentOS7来说,通过init.d建立启动脚本的机制已经不被推荐,推荐的方式是利用systemd机制实现开机启动,下面就该方式进行介绍。

1. 环境准备

1.1 系统

操作系统:CentOS 7(64位)

1.2 工具/软件

已安装JDK,并配置好环境变量 
已安装tomcat,可手动启动,安装路径:/usr/local/tomcat/

2. 方法/步骤

2.1 JDK环境配置

CentOS7默认安装了OpenJDK,用于支持Tomcat启动是没有问题的。如果项目需要使用Sun的JDK特性的话,就需要重新配置Sun的JDK环境。这里可以参照本人之前的博文:《17101501_CentOS7下卸载openJDK安装Sun公司的JDK》。

2.2 创建Tomcat启动参数setenv.sh文件

catalina.sh在执行的时候会调用同级路径下的setenv.sh来设置额外的环境变量,因此需要在/usr/local /tomcat/bin路径下创建setenv.sh文件。 
执行脚本:

[zm@zm-centos7 ~]$ su # 切换至root用户

密码:

[root@zm-centos7 zm]# vim /usr/local/tomcat/bin/setenv.sh # 创建setenv.sh脚本

[root@zm-centos7 zm]# cat /usr/local/tomcat/bin/setenv.sh  # 查看setenv.sh脚本内容

export CATALINA_HOME=/usr/local/tomcat

export CATALINA_BASE=/usr/local/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.3 编写tomcat.service文件

在/usr/lib/systemd/system路径下添加tomcat.service文件。 
注意:文件中目录路径必须是绝对路径 
执行脚本:

[root@zm-centos7 zm]# vim /usr/lib/systemd/system/tomcat.service #创建tomcat.service服务脚本

[root@zm-centos7 zm]# cat /usr/lib/systemd/system/tomcat.service

#查看tomcat.service服务脚本

[Unit] Description=Tomcat8

After=syslog.target network.target remote-fs.target nss-lookup.target

[Service] Type=forking

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

[Install]

WantedBy=multi-user.target

[unit]配置了服务的描述,规定了在network启动之后执行, 
[service]配置服务的pid,服务的启动,停止,重启 
[install]配置了使用用户

2.4 测试Tomcat.service服务

执行脚本:

[root@zm-centos7 zm]# systemctl enable tomcat # 设置开机自启动

Created symlink from /etc/systemd/system/multi-user.target.wants/tomcat.service to /usr/lib/systemd/system/tomcat.service. # 自动创建软连接

[root@zm-centos7 zm]# systemctl start tomcat # 启动tomcat服务

[root@zm-centos7 zm]# systemctl status tomcat # 查看tomcat服务状态

● tomcat.service - Tomcat8

        Loaded: loaded (/usr/lib/systemd/system/tomcat.service; enabled; vendor prese t: disabled)

        Active: active (running) since 一 2017-10-23 15:25:27 CST; 7s ago

      Process: 6666 ExecStart=/usr/local/tomcat/bin/startup.sh (code=exited, status= 0/SUCCESS)

     Main PID: 6692 (java)

          CGroup: /system.slice/tomcat.service

                          └─6692 /usr/bin/java -Djava.util.logging.config.file=/usr/local/to...

10月 23 15:25:27 zm-centos7 systemd[1]: Starting Tomcat8...

10月 23 15:25:27 zm-centos7 startup.sh[6666]: Tomcat started.

10月 23 15:25:27 zm-centos7 systemd[1]: Started Tomcat8.

[root@zm-centos7 zm]# systemctl stop tomcat # 停止tomcat服务

[root@zm-centos7 zm]# systemctl status tomcat # 查看tomcat服务状态

   ● tomcat.service - Tomcat8

     Loaded: loaded (/usr/lib/systemd/system/tomcat.service; enabled; vendor prese t: disabled)

      Active: failed (Result: exit-code) since 一 2017-10-23 15:25:48 CST; 2s ago

      Process: 6799 ExecStop=/bin/kill -s QUIT $MAINPID (code=exited, status=0/SUCCE SS)

    Process: 6666 ExecStart=/usr/local/tomcat/bin/startup.sh (code=exited, status= 0/SUCCESS)

      Main PID: 6692 (code=exited, status=143)

10月 23 15:25:27 zm-centos7 systemd[1]: Starting Tomcat8...

10月 23 15:25:27 zm-centos7 startup.sh[6666]: Tomcat started.

10月 23 15:25:27 zm-centos7 systemd[1]: Started Tomcat8.

10月 23 15:25:48 zm-centos7 systemd[1]: Stopping Tomcat8...

10月 23 15:25:48 zm-centos7 systemd[1]: tomcat.service: main process exited...a

10月 23 15:25:48 zm-centos7 systemd[1]: Stopped Tomcat8.

10月 23 15:25:48 zm-centos7 systemd[1]: Unit tomcat.service entered failed ....

10月 23 15:25:48 zm-centos7 systemd[1]: tomcat.service failed.

Hint: Some lines were ellipsized, use -l to show in full.

因为配置pid,在启动的时候会再tomcat根目录生成tomcat.pid文件,停止之后删除。

同时tomcat在启动时候,执行start不会启动两个tomcat,保证始终只有一个tomcat服务在运行。

多个tomcat可以配置在多个目录下,互不影响。

 

你可能感兴趣的:(centos7)