安装 Java 运行环境(JRE)
sudo apt update
sudo apt install default-jre # Debian/Ubuntu
# 或
sudo yum install java-11-openjdk # CentOS/RHEL
创建专用系统用户
sudo useradd -r -s /bin/false appuser # 无登录权限的系统用户
部署应用文件
创建应用目录并复制文件:
sudo mkdir -p /opt/myapp
sudo cp your-app.jar /opt/myapp/
sudo chown -R appuser:appuser /opt/myapp # 设置所有权
创建 systemd 服务文件
在 /etc/systemd/system/ 下创建服务文件(如 myapp.service):
sudo nano /etc/systemd/system/myapp.service
添加以下内容(按需修改):
[Unit]
Description=My Java Application
After=network.target
[Service]
User=appuser # 运行用户
WorkingDirectory=/opt/myapp # 应用目录
ExecStart=/usr/bin/java -jar your-app.jar # 启动命令
SuccessExitStatus=143 # SIGTERM 退出码(常见于 Spring Boot)
Restart=on-failure # 失败时自动重启
RestartSec=30 # 重启等待时间
Environment="JAVA_OPTS=-Xms512m -Xmx1024m" # JVM 参数(可选)
# EnvironmentFile=/etc/default/myapp # 外部环境变量文件(可选)
[Install]
WantedBy=multi-user.target # 多用户模式下启动
启用并启动服务
sudo systemctl daemon-reload # 重新加载配置
sudo systemctl start myapp # 启动服务
sudo systemctl enable myapp # 开机自启
使用以下命令管理服务:
- 查看状态:
sudo systemctl status myapp - 停止服务:
sudo systemctl stop myapp - 重启服务:
sudo systemctl restart myapp - 查看日志:
journalctl -u myapp -f
日志管理(可选)
如需自定义日志文件,在 [Service] 部分添加:
StandardOutput=file:/var/log/myapp.log
StandardError=file:/var/log/myapp-error.log
常见问题解决
权限问题
- 确保
/opt/myapp目录用户为appuser。 - 使用
ls -l /opt/myapp检查所有权。
JVM 参数调整
- 在
Environment="JAVA_OPTS=..."中设置堆内存、GC 参数等。
依赖服务
- 若需数据库后启动,可在 [Unit] 添加:
After=postgresql.service
Requires=postgresql.service
示例:带配置文件的服务
[Unit]
Description=Spring Boot App
After=network.target
[Service]
User=appuser
Group=myappuser
WorkingDirectory=/opt/myapp
ExecStart=/usr/bin/java ${JAVA_OPTS} -jar app.jar --spring.profiles.active=prod
Environment="JAVA_OPTS=-Xmx1G -Dlogging.path=/var/log/myapp"
Restart=always
[Install]
WantedBy=multi-user.target
注意:替换
your-app.jar、路径及参数为实际值。通过 systemctl status 和 journalctl 排查启动问题。Linux 配置 Java JRE 为 systemd 服务
https://ailitonia.com/archives/linux-%e9%85%8d%e7%bd%ae-java-jre-%e4%b8%ba-systemd-%e6%9c%8d%e5%8a%a1/
本文被阅读了:1,615次