systemd 服务化部署 Spring Boot 的最佳实践
为什么不用 nohup
nohup 跑的进程:机器重启就没了、崩了没人拉、日志靠重定向听天由命。systemd 一个 unit 文件全解决。
生产级 unit 文件
[Unit]
Description=QuickAdmin
After=network.target mysql.service
[Service]
User=app
ExecStart=/usr/bin/java -Xms256m -Xmx512m -jar /opt/quickadmin/quickadmin.jar
SuccessExitStatus=143
Restart=always
RestartSec=5
TimeoutStopSec=20
[Install]
WantedBy=multi-user.target逐行说为什么
- After=mysql:避免启动时库还没就绪
- SuccessExitStatus=143:SIGTERM 的退出码是正常停止,否则 systemd 认为崩溃
- TimeoutStopSec=20:优雅停机窗口,超时强杀
- User=app:绝不用 root 跑业务
日志接管
journald 天然收集 stdout;要文件日志就让 logback 写 json,方便 goaccess/ELK 接。
常用命令
systemctl daemon-reload && systemctl enable --now quickadmin
journalctl -u quickadmin -f --since "10 min ago"原文首发于本站,欢迎 RSS 订阅;有帮助点个赞,有问题评论区见。
评论 · 2 条