- centos版本:CentOS Linux release 7.6.1810 (Core)
一、SpringBoot jar包的部署方式
- nohup 后台进程形式
- Linux脚本 启动形式
- systemd 优雅系统服务形式,systemd是System V init系统的继承者,现在被许多现代Linux发行版使用
今天主要展开的是第三种:systemd 优雅系统服务形式
二、Systemd形式,优雅部署SpringBoot项目
1. 整理文件夹+jar包+外部配置文件
文件夹的目录结构可以有多种:
- jar包 + config文件位于统一目录
- jar包 + /config 目录下的config文件
- 自定义文件夹目录结构形式(/app下存放jar包,/config目录下存放配置)
上面第一和第二种,主要是运用了默认的外部配置文件的加载顺序,可以省去指定配置文件的指定步骤
运用第三种模式,一方面是能够文件夹的形式更清晰整洁,另一方面也能尝试一下外部指定配置文件位置的功能
其实一般采用第一第二种形式就可以了
最终的文件夹目录结构如下:
.
├── app
│ ├── web.jar
├── command
│ └── web.service
└── config
├── application-dev.yml
└── application.yml
3 directories, 4 files
2. 构建应用启动脚本
这里由于指定配置文件、指定运行环境,所以需要传入两个变量:
-Dspring.config.location,-Dspring.profiles.active
其余按照应用情况进行参数设置
/usr/local/jdk/bin/java -Xmx2048m -Xms2048m -Xmn1024m -Xss4m -XX:ParallelGCThreads=20 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -Dspring.config.location=/home/web/config/application.yml,/home/web/config/application-dev.yml -Dspring.profiles.active=dev -jar /home/web/app/web.jar
3. 配置systemd脚本
vi web.service
[Unit]
Description=Web Service
After=syslog.target
[Service]
ExecStart=/usr/local/jdk/bin/java -Xmx2048m -Xms2048m -Xmn1024m -Xss4m -XX:ParallelGCThreads=20 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -Dspring.config.location=/home/web/config/application.yml,/home/web/config/application-dev.yml -Dspring.profiles.active=dev -jar /home/web/app/dmp-web.jar
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target
以上配置相对简单,详情参看systemd脚本配置官方文档 systemd 总结文档
chmod +x …
- 确保web.jar包有可执行权限
- 确保web.service脚本有可执行权限
4. 配置软连接
ln -s source target
centos7 systemd的目录: /usr/lib/systemd/system
ln -s /home/web/command/web.service /usr/lib/systemd/system/web.service
5. 校验服务情况,并启动
#注册为系统服务,自启动
sudo systemctl enable web.service
#其他命令
#查看状态
sudo systemctl status web.service
#启动服务
sudo systemctl start web.service
#暂停服务
sudo systemctl stop web.service
#重启服务
sudo systemctl restart web.service
#旧版本的命令:
#查看状态
sudo service web.service status
#启动
sudo service web.service start
#暂停
sudo service web.service stop
#重启
sudo service web.service restart
#如果修改了systemd文件需要重新加载
sudo systemctl daemon-reload
#查看该服务的console log
journalctl -f -u web.service
如果无异常报错,配置就完成了
三、system部署的优点
- 可执行的jar可以其他 Unix 系统程序一样运行
- 便捷地在生成应用环境中安装和管理SpringBoot应用程序
Featured Tags
工具类
XML
JAVA
Java
Mybatis
反射
代理模式
日志
工厂方法模式
装饰器模式
结果集映射
Web
RESTful
WebAPI规范
SQL
Redis
Jira
SynapseRT
有限状态机 State Machine
statemachine
SpringBoot
IDEA
Tomcat
Vue
Docker
Springboot
Apache Ignite
项目发布与调试
白帽子讲web安全
黑名单
通用化
企业中台实践
MacOS
docker
minio
springboot
分布式存储
Postgres
数据备份
数据恢复
K8S
抖音小程序
开发实践
SpringCloud
PostgreSQL
Skywalking
Nacos
Kubernetes
Secret
ConfigMap
Git
GitOps
云原生
RocketMQ
ActiveMQ-Artemis
ClickHouse
Kamailio
SIP
sipp
Homer
heplify
heplify-server
HEP
OpenSIPS
sip
DeepSeek