温馨提示×

ubuntu怎么部署java应用

小樊
41
2026-09-07 05:47:28
栏目: 编程语言

在 Ubuntu 上部署 Java 应用一般有 几种常见场景,下面我按「从零到上线」给你一个清晰、实用的流程,适用于大多数情况(Spring Boot / 普通 Jar / War)。


一、准备环境

1. 更新系统

sudo apt update
sudo apt upgrade -y

2. 安装 JDK(推荐 JDK 17 或 21)

# OpenJDK 17
sudo apt install openjdk-17-jdk -y

# 查看版本
java -version

若应用要求特定版本(如 JDK 8),可安装 openjdk-8-jdk


二、部署 Java 应用(最常见:Jar 包)

1. 上传 Jar 包

# 本地
scp app.jar user@server:/opt/app/

# 服务器
mkdir -p /opt/app

2. 直接运行(测试)

java -jar /opt/app/app.jar

默认端口一般是 8080(Spring Boot)


三、后台运行(推荐方式)

方式一:nohup(简单)

nohup java -jar /opt/app/app.jar > app.log 2>&1 &

查看日志:

tail -f app.log

方式二:systemd(生产推荐 ✅)

1. 创建服务文件

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

示例内容:

[Unit]
Description=Java Application
After=network.target

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

[Install]
WantedBy=multi-user.target

2. 启动服务

sudo systemctl daemon-reload
sudo systemctl start javaapp
sudo systemctl enable javaapp

3. 常用命令

sudo systemctl status javaapp
sudo journalctl -u javaapp -f

四、配置防火墙 & 端口

1. 开放端口(如 8080)

sudo ufw allow 8080
sudo ufw enable

五、使用 Nginx 反向代理(推荐)

1. 安装 Nginx

sudo apt install nginx -y

2. 配置反向代理

sudo vim /etc/nginx/sites-available/javaapp
server {
    listen 80;
    server_name yourdomain.com;

    location / {
        proxy_pass http://localhost:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

启用:

sudo ln -s /etc/nginx/sites-available/javaapp /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

六、配置 HTTPS(可选但强烈建议)

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d yourdomain.com

七、部署 War 包(Tomcat)

1. 安装 Tomcat

sudo apt install tomcat9 -y

2. 上传 war

cp app.war /var/lib/tomcat9/webapps/

访问:

http://ip:8080/app

八、常见排错

  • 端口被占用lsof -i:8080
  • 权限问题:确保 jar 有读权限
  • 内存不足:加参数
java -Xms512m -Xmx1024m -jar app.jar

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

✅ Ubuntu
✅ JDK 17
✅ Jar 包
✅ systemd
✅ Nginx + HTTPS


如果你告诉我:

  • Java 版本
  • 是否是 Spring Boot
  • 是否用 Docker
  • 是否有域名

我可以给你更精准的部署方案(包括 Docker / Kubernetes)。

0