springboot项目注册为Linux系统服务并设置开机自启动

springboot项目注册为Linux的服务并设置开机自启动

一般项目生产环境都在Linux上面跑,所以今天我们来讲一下如何在Linux中将springboot项目注册为系统服务并设置开机自启动,这里我们以Centos7.6为例。

1、上传我们的springboot项目的jar包

如下图所示:

名为demo-0.0.1-SNAPSHOT.jar

springboot项目注册为Linux系统服务并设置开机自启动

2、 启动项目

java -jar demo-0.0.1-SNAPSHOT.jar

springboot项目注册为Linux系统服务并设置开机自启动

补充:

可能存在极少数是这样(或者类似)来启动springboot项目,其实这里的这种方式启动跟window中开启cmd窗口启动类似,这里不能退出交互,例如:Ctrl+C就会被kill掉。所以,比较好的一种方案,就是将springboot项目注册为Linux系统服务

3、 基于Linux的Systemd部署springboot项目

(1)关于systemd简单介绍:

systemd是Linux 下一个与SysV和LSB初始化脚本兼容的系统和服务管理器。systemd 使用 socket和D-Bus来开启服务,提供基于守护进程的按需启动策略,保留了Linux cgroups的进程追踪功能,支持快照和系统状态恢复,维护挂载和自挂载点,实现了各服务间基于从属关系的一个更为精细的逻辑控制,拥有前卫的并行性能。systemd无需经过任何修改便可以替代sysvinit 。

补充:

关于systemd的更多内容请参考:

https://fedoraproject.org/wiki/Systemd/zh-cn

(2) 编写service文件

配置文件主要放在/usr/lib/systemd/system下,在/etc/systemd/system也有。

这里我们以/etc/systemd/system为例:

springboot项目注册为Linux系统服务并设置开机自启动

cat demo.service

这里的这个demo.service是我之前写好的

springboot项目注册为Linux系统服务并设置开机自启动

内容如下,比较简单:

[Unit]

Description=java springboot service

After=syslog.target

[Service]

ExecStart=/general/jdk1.8/bin/java -jar /general/demo-0.0.1-SNAPSHOT.jar

[Install]

WantedBy=multi-user.target

简单的解释:

[Unit]:启动顺序与依赖关系

Description:当前服务的简单描述。

After:如syslog.target需要启动,那么demo.service应该在它之后启动。

[Service]:启动行为

ExecStart:定义启动进程时执行的命令。

如:/general/jdk1.8/bin/java -jar /general/demo-0.0.1-SNAPSHOT.jar。

[Install]

WantedBy:表示该服务所在的Target(服务组)。

补充:

这里可以查看multi-user.target包含的所有服务,如下:

systemctl list-dependencies multi-user.target

(3) 、启动服务

#启动

systemctl start demo.service

#查看服务状态

systemctl status demo.service

springboot项目注册为Linux系统服务并设置开机自启动

(4) 、查看日志

journalctl -u demo

-u:查看指定名字的Unit日志

关于journalctl命令大家自行man。

springboot项目注册为Linux系统服务并设置开机自启动

亦可

journalctl -u demo -f

springboot项目注册为Linux系统服务并设置开机自启动

(5) 访问web界面

#查看ip

ip a

springboot项目注册为Linux系统服务并设置开机自启动

访问

springboot项目注册为Linux系统服务并设置开机自启动

(6)设置开机自启动

#开机启动

systemctl enable demo.service

#查看是否设置成功

[root@docker ~]# systemctl list-unit-files | grep enabled | grep demo

demo.service enabled

springboot项目注册为Linux系统服务并设置开机自启动

(7)总结

最后,本例用到的demo.service文件仅是作为测试文件,这里只是给大家提供一个思路。关于它的完善需要大家根据自己的需求来填充。

补充一些常用命令:

开机自启:systemctl enable demo.service

关闭自启:systemctl disable demo.service

启动服务:systemctl start demo.service

停止服务:systemctl stop demo.service

重启服务:systemctl restart demo.service

查看服务状态:systemctl status demo.service

最后感谢大家支持。

您可能还会对下面的文章感兴趣: