在 Debian 上部署 Java 服务,常见做法有 直接运行 JAR、使用 systemd 管理、通过 Docker 等。下面给你一套生产环境常用、最稳妥的流程(以 Spring Boot JAR 为例,其他 Java 程序同理)。
sudo apt update && sudo apt upgrade -y
# 查看可用版本
apt search openjdk
# 安装 JDK 17
sudo apt install openjdk-17-jdk -y
验证:
java -version
sudo useradd -r -s /usr/sbin/nologin appuser
sudo mkdir -p /opt/myapp
sudo chown appuser:appuser /opt/myapp
scp myapp.jar user@server:/opt/myapp/
或直接在服务器:
/opt/myapp/myapp.jar
java -jar /opt/myapp/myapp.jar
✅ 能正常启动后,继续下一步
sudo nano /etc/systemd/system/myapp.service
示例内容:
[Unit]
Description=My Java Application
After=network.target
[Service]
Type=simple
User=appuser
WorkingDirectory=/opt/myapp
ExecStart=/usr/bin/java -Xms256m -Xmx512m -jar /opt/myapp/myapp.jar
SuccessExitStatus=143
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
✅
-Xms -Xmx可按服务器内存调整
✅SuccessExitStatus=143防止 Spring Boot 正常关闭被当成失败
sudo systemctl daemon-reload
sudo systemctl start myapp
sudo systemctl enable myapp
systemctl status myapp
journalctl -u myapp -f
sudo ufw allow 8080/tcp
查看:
sudo ufw status
/opt/myapp/application.yml
启动时指定:
java -jar myapp.jar --spring.config.location=/opt/myapp/application.yml
或 systemd:
ExecStart=/usr/bin/java -jar /opt/myapp/myapp.jar --spring.config.location=/opt/myapp/application.yml
sudo apt install docker.io -y
sudo systemctl enable docker
FROM openjdk:17-jdk-slim
COPY myapp.jar /app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
docker build -t myapp .
docker run -d -p 8080:8080 --name myapp myapp
which java
update-alternatives --config java
journalctl -u myapp --no-pager
free -h
调整 -Xmx
✅ 生产环境推荐
如果你愿意,我可以:
你现在用的是 Spring Boot 还是普通 Java 程序?