在 Linux 上部署 Java 服务,通常分为 环境准备 → 打包 → 上传 → 启动 → 守护进程 → 运维 几个阶段。下面给你一个通用、生产可用的部署方案,适用于 Spring Boot 等常见 Java 服务。
# 查看是否已有 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
mvn clean package -DskipTests
生成的文件通常在:
target/xxx.jar
✅ 推荐使用 可执行 jar(Spring Boot 默认)
scp target/xxx.jar user@ip:/opt/app/
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
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
sudo systemctl daemon-reload
sudo systemctl start myapp
sudo systemctl enable myapp
systemctl status myapp
systemctl restart myapp
systemctl stop myapp
journalctl -u myapp -f
✅ 生产环境强烈推荐
java -Xms512m -Xmx1024m -jar xxx.jar
logback / log4j2FROM openjdk:17-jdk
COPY xxx.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
location / {
proxy_pass http://127.0.0.1:8080;
}
❌ 端口被占用
✅ lsof -i:8080
❌ 权限不足
✅ 使用专用用户,不要 root 跑服务
❌ 内存溢出
✅ 设置 -Xmx
✅ Linux + Systemd + JAR + Nginx
✅ 不使用 nohup 长期运行
✅ Docker 是下一步最佳选择
如果你愿意,可以告诉我:
我可以直接给你一套可复制的部署模板。