1. 登录
  2. |
  3. 注册

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

2019-09-28 00:13 浏览量:

信息摘要:springboot项目注册为Linux系统服务并设置开机自启动

一般项目生产环境都在Linux上面跑,所以今天我们来讲一下如何在Linux中将springboot项目注册为系统服务并设置开机自启动,这里我们以Centos7.6为例。
1、上传我们的springboot项目的jar包
如下图所示:
名为demo-0.0.1-SNAPSHOT.jar

1629965634580006264.png
2、启动项目

java -jar demo-0.0.1-SNAPSHOT.jar

补充:
可能存在极少数是这样(或者类似)来启动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为例:
3.png

cat demo.service

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

4.png

内容如下,比较简单:

[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。
6.png
亦可

journalctl -u demo -f


7.png

(5) 访问web界面
#查看ip
ip a
8.png
访问
9.png
(6)设置开机自启动
#开机启动

systemctl enable demo.service

#查看是否设置成功

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

demo.service enabled
10.png
(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

+1

全文阅读已结束

下载此文档