Java 服务生产级部署指南:完整执行步骤与配置项详解
在现代企业级应用架构中,确保 Java 应用程序能够在服务器后台稳定、持久地运行,是运维与部署工作的核心诉求。本文将系统性地梳理主流操作系统下 Java 服务化的最佳实践,并提供可直接落地的完整执行操作步骤与配置项。
一、 Linux 环境下的标准化部署方案(基于 systemd)
在 Linux 服务器环境中,使用 systemd 将应用注册为系统服务是目前业界公认的最规范、最稳定的标准方式。
1. 前置准备
确保 Java 运行环境已安装,并将打包好的 .jar 文件上传至服务器指定目录(例如 /home/service/)。
2. 创建并配置 .service 文件
在 /etc/systemd/system/ 目录下创建一个 .service 文件(例如 java-demo.service):
bash
vi /etc/systemd/system/java-demo.service
写入以下完整配置项:
标准版本
bash
[Unit]
Description=Java Demo Application
After=network.target mysql.service
Wants=network.target
[Service]
Type=simple
User=root
Group=root
WorkingDirectory=/home/service/
ExecStart=/usr/bin/java -Xms512m -Xmx1024m -jar /home/service/java-demo.jar
ExecStop=/bin/kill -15 $MAINPID
ExecReload=/bin/kill -15 $MAINPID && /usr/bin/java -Xms512m -Xmx1024m -jar /home/service/java-demo.jar
Restart=on-failure
RestartSec=3s
TimeoutSec=30
SyslogIdentifier=java-demo
[Install]
WantedBy=multi-user.target
详细介绍版本
bash
[Unit]
# 服务的简短描述,建议与文件名保持一致
Description=My Java Application
# 指定启动顺序:在网络服务启动后再启动此服务
After=network.target
[Service]
# 服务类型,simple 表示 ExecStart 启动的进程就是主进程
Type=simple
# 运行服务的用户(建议非 root 用户,提升安全性)
User=root
Group=root
# 工作目录,必须为 Jar 包所在的绝对路径
WorkingDirectory=/home/service/
# 启动命令:指定 java 路径、JVM 内存参数及 jar 包路径
ExecStart=/usr/bin/java -Xms512m -Xmx1024m -jar /home/service/java-demo.jar
# 优雅停止命令,发送 SIGTERM 信号让 Java 进程正常退出
ExecStop=/bin/kill -15 $MAINPID
# 异常退出时的重启策略:on-failure 表示仅在非正常退出时重启
Restart=on-failure
# 重启前的等待时间
RestartSec=3s
# 日志标识符,方便通过 journalctl 检索
SyslogIdentifier=java-demo
[Install]
# 指定在多用户命令行模式下开机自启
WantedBy=multi-user.target
授权执行
bash
chmod +x /etc/systemd/system/java-demo.service
3. 服务生命周期管理命令
配置完成后,依次执行以下命令完成部署:
bash
# 1. 重载 systemd 配置(修改文件后必须执行)
systemctl daemon-reload
# 2. 启动服务
systemctl start java-demo
# 3. 设置开机自启
systemctl enable java-demo
# 4. 查看服务运行状态
systemctl status java-demo
# 5. 优雅停止服务
systemctl stop java-demo
# 6. 重启服务
systemctl restart java-demo
# 7. 取消开机自启
systemctl disable java-demo
# 8. 查看状态/日志
systemctl status java-demo
# 9.实时查看日志
journalctl -u java-demo -f
4. 日志排查命令
bash
# 实时监控日志
journalctl -u java-demo.service -f
# 查看最新100行日志
journalctl -u java-demo.service -n 100
# 按时间筛选日志
journalctl -u java-demo.service --since "2026-06-11 00:00"
