在 Ubuntu 上部署 Java 服务,通常有几种常见方式,下面从最常用、最规范到简单临时给你梳理一下,你可以按场景选择。
sudo apt update
sudo apt install openjdk-17-jdk -y
# 或 8 / 11 / 21,视项目而定
验证:
java -version
常见形式:
xxx.jar(Spring Boot 最常见)war(部署到 Tomcat)示例目录:
/opt/app/my-service/
└── app.jar
java -jar /opt/app/my-service/app.jar
后台运行:
nohup java -jar app.jar > app.log 2>&1 &
⚠️ 重启服务器会失效,不适合生产。
sudo vim /etc/systemd/system/my-service.service
内容示例:
[Unit]
Description=My Java Service
After=network.target
[Service]
User=appuser
WorkingDirectory=/opt/app/my-service
ExecStart=/usr/bin/java -jar app.jar
SuccessExitStatus=143
Restart=always
[Install]
WantedBy=multi-user.target
sudo useradd -r -s /bin/false appuser
sudo chown -R appuser:appuser /opt/app/my-service
sudo systemctl daemon-reload
sudo systemctl enable my-service
sudo systemctl start my-service
systemctl status my-service
journalctl -u my-service -f
✅ 开机自启、崩溃自动重启
FROM openjdk:17-jdk
COPY app.jar /app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
docker build -t my-java-app .
docker run -d -p 8080:8080 --name my-service my-java-app
适合:
sudo apt install tomcat9
放入:
/var/lib/tomcat9/webapps/
访问:
http://ip:8080/项目名
application.yml 或环境变量配置logback / log4j2sudo ufw allow 8080
我可以给你更精确的部署方案,只需要告诉我:
我可以直接帮你写 systemd 文件 / Dockerfile / Nginx 配置。