CentOS 配置java应用开机自动启动

简述:

这里讲述配置CentOS开机启动的3中方式,分别是:1)通过systemctl服务启动;2)通过service服务启动;3)配置rc.local文件

1、通过systemctl服务启动

该方式将java应用的启动脚本托管给systemctl服务,通过systemctl的一系列命令配置应用的开机启动。

1)进入到系统的/usr/lib/systemd/system目录下 

cd /usr/lib/systemd/system

2)添加.service文件

vim test.service

[Unit]

#服务描述 

Description=test

#当前服务在某个服务启动之后启动

After=syslog.target network.target

 

[Service]

#systemctl进程运行的类型,有多种类型,默认为simple通过主进程启动,forking后台启动也就是systemctl主进程启动后会再生成一个子进程执行当前服务

Type=forking

#存放应用进程号的文件路径为绝对路径

PIDFile=/home/service/pid

#配置应用启动命令,应用的启动脚本路径必须为绝对路径

ExecStart=/home/service/startup.sh start

#配置应用的重启命令

ExecReload=/home/service/startup.sh restart

#配置应用的停止命令 

ExecStop=/home/digital/service/startup.sh stop

#表示给应用分配独立的临时空间 

PrivateTmp=true

#指定启动应用的用户

User=test

#指定用户的用户组

Group=test    

#等待应用的启动时间,单位为秒,0表示禁用,如果在配置的时间内收到启动完成的信号,服务被认为执行失败然后自动退出 

TimeoutStartSec=0

# 杀掉指定进程,none表示没有进程会被杀掉,只执行stop操作

KillMode=none

 

[Install]

WantedBy=multi-user.target

 在配置文件中添加了TimeoutStartSec和KillMode两个参数主要是为了防止java应用程序通过systemctl启动成功后进程会被自动干掉的问题,因为我在配置的过程中碰到一个问题就是在java应用程序已经成功启动一段时间后会进程会被莫名奇妙的干掉,尝试了多种方式,比如在配置文件中加上Restart=always参数发现应用会被不停地杀掉重启不能解决根本问题,最后发现配置文件中添加

TimeoutStartSec=0和KillMode=none后问题解决。

3)执行reload命令,使配置生效

sudo systemctl daemon-reload

4)  将应用的执行命令设置为开机自动启动

# 设置开机启动

sudo systemctl enabled test.service

# 设置开机不启动

sudo systemctl disabled test.service

5)手动启动应用程序

sudo systemctl start test.service

 如果启动异常可通过systemctl status查看应用启动的状态

sudo systemctl status test.service

2、通过service服务启动

1)在/etc/inint.d目录下创建服务软连接

#这里jar包的路径为绝对路径

ln -s /home/service/test.jar /etc/inint.d/test

2) 手动启动应用测试是否添加成功

 service test start

3)  添加服务开机启动

chkconfig --add test

4)验证配置是否成功

#查看服务是否已经添加到了列表中

chkconfig --list

#重启服务

reboot

注:以上配置是在通过spring-boot 搭建项目打成jar包后可以通过jar包名称直接运行,如:通过./test.jar直接启动项目。配置方式为在pom文件中添加如下配置

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <executable>true</executable>
    </configuration>
</plugin>

3、配置rc.local文件 

改方式配置自动启动最为简单,只需要修改rc.local文件

1)进入到/etc/rc.d目录

cd /etc/rc.d

2)  修改文件可执行权限,默认情况下是没有该权限的

chmod +x rc.local

3)  编辑rc.local文件,添加需要执行的命令

CentOS 配置java应用开机自动启动

4)重启服务器并进行测试