温馨提示×

linux java服务如何部署

小樊
69
2026-10-09 16:59:33
栏目: 编程语言

在 Linux 上部署 Java 服务,通常分为 环境准备 → 打包 → 上传 → 启动 → 守护进程 → 运维 几个阶段。下面给你一个通用、生产可用的部署方案,适用于 Spring Boot 等常见 Java 服务。


一、环境准备

1. 安装 JDK

# 查看是否已有 java
java -version

# 如果没有,安装 OpenJDK(以 JDK 17 为例)
sudo apt update
sudo apt install -y openjdk-17-jdk

# 或 CentOS
sudo yum install -y java-17-openjdk-devel

确认:

java -version

二、打包 Java 服务

1. Maven 项目

mvn clean package -DskipTests

生成的文件通常在:

target/xxx.jar

✅ 推荐使用 可执行 jar(Spring Boot 默认)


三、上传到 Linux 服务器

方式一:scp

scp target/xxx.jar user@ip:/opt/app/

方式二:Git / CI / 容器(更推荐)


四、运行 Java 服务(基础方式)

cd /opt/app
java -jar xxx.jar

指定端口、环境:

java -jar xxx.jar \
  --server.port=8080 \
  --spring.profiles.active=prod

⚠️ 这种方式关闭终端服务会停止


五、后台运行(临时)

nohup java -jar xxx.jar > app.log 2>&1 &

查看日志:

tail -f app.log

六、生产推荐:Systemd 守护进程(最重要)

1. 创建服务文件

sudo vim /etc/systemd/system/myapp.service

内容示例:

[Unit]
Description=My Java App
After=network.target

[Service]
User=appuser
WorkingDirectory=/opt/app
ExecStart=/usr/bin/java -jar /opt/app/xxx.jar
SuccessExitStatus=143
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

2. 启动服务

sudo systemctl daemon-reload
sudo systemctl start myapp
sudo systemctl enable myapp

3. 常用命令

systemctl status myapp
systemctl restart myapp
systemctl stop myapp
journalctl -u myapp -f

✅ 生产环境强烈推荐


七、配置优化(建议)

JVM 参数

java -Xms512m -Xmx1024m -jar xxx.jar

日志

  • 使用 logback / log4j2
  • 日志目录单独挂载

八、进阶部署方式(可选)

1. Docker(非常推荐)

FROM openjdk:17-jdk
COPY xxx.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

2. Nginx 反向代理

location / {
    proxy_pass http://127.0.0.1:8080;
}

3. 多实例 / 负载均衡

  • 多台机器
  • Nginx + 多个 Java 实例

九、常见坑

❌ 端口被占用
✅ lsof -i:8080

❌ 权限不足
✅ 使用专用用户,不要 root 跑服务

❌ 内存溢出
✅ 设置 -Xmx


十、总结(最简生产方案)

✅ Linux + Systemd + JAR + Nginx
✅ 不使用 nohup 长期运行
✅ Docker 是下一步最佳选择


如果你愿意,可以告诉我:

  • 用的是 Spring Boot 还是普通 Java
  • CentOS / Ubuntu
  • 是否要 Docker / K8s / 云服务器

我可以直接给你一套可复制的部署模板。

0 踩