安装 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,613次
作者
Ailitonia
发布于
2025年6月2日
许可协议
版权声明

作者头像
关于 @Ailitonia
正因站在了巨人的肩膀上,才越发觉得自己渺小。不求成为巨人,但求与其同行。 把自己所见所闻,记录下来。
→查看所有由Ailitonia发布的文章