温馨提示×

Ubuntu Java编译如何部署到服务器

小樊
37
2025-11-08 22:21:52
栏目: 云计算

1. 准备工作:安装Java环境
在Ubuntu上部署Java项目前,需先安装Java运行环境(JRE/JDK)。推荐使用OpenJDK(开源且稳定),以OpenJDK 17为例,操作如下:

sudo apt update && sudo apt install openjdk-17-jdk -y  # 安装OpenJDK 17
java -version  # 验证安装(输出版本信息则表示成功)

若需指定Java版本(如Java 11),可将命令中的openjdk-17-jdk替换为openjdk-11-jdk

2. 编译Java项目

  • Maven项目:进入项目根目录,执行mvn clean package,生成的JAR文件位于target/目录(如springboot-demo.jar)。
  • Gradle项目:执行gradle build,生成的JAR文件位于build/libs/目录。
    确保本地测试通过后再上传至服务器。

3. 部署Java应用到服务器
将编译好的JAR文件上传至服务器(如/opt/java-app/目录),常用scp命令:

scp target/springboot-demo.jar username@your_server_ip:/opt/java-app/

登录服务器,进入目标目录验证文件是否存在:ls /opt/java-app/

4. 启动Java应用

  • 前台运行(测试用):直接执行java -jar /opt/java-app/springboot-demo.jar,日志会输出到终端,关闭终端则应用停止。
  • 后台运行(推荐):使用nohup命令让应用在后台持续运行,并将日志输出到app.log文件:
    nohup java -jar /opt/java-app/springboot-demo.jar > app.log 2>&1 &
    
    通过tail -f app.log查看实时日志。

5. 配置systemd服务(实现开机自启与管理)
为确保应用随服务器重启自动启动,建议创建systemd服务:

sudo vim /etc/systemd/system/java-app.service

写入以下内容(根据实际路径修改):

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

[Service]
User=ubuntu  # 运行服务的用户(建议用非root)
WorkingDirectory=/opt/java-app  # 应用所在目录
ExecStart=/usr/bin/java -jar /opt/java-app/springboot-demo.jar  # 启动命令
Restart=always  # 失败时自动重启
RestartSec=10  # 重启间隔(秒)
Environment="JAVA_OPTS=-Xms512m -Xmx1024m"  # JVM内存配置(可选)

[Install]
WantedBy=multi-user.target

保存后执行以下命令启用并启动服务:

sudo systemctl daemon-reload  # 重新加载服务配置
sudo systemctl start java-app  # 启动服务
sudo systemctl enable java-app  # 设置开机自启
sudo systemctl status java-app  # 查看服务状态(确认是否运行中)

6. 配置防火墙(允许外部访问)
若应用监听在8080端口(或其他非默认端口),需开放该端口:

sudo ufw allow 8080/tcp  # 允许TCP协议的8080端口
sudo ufw enable  # 启用防火墙(若未启用)
sudo ufw status  # 查看防火墙状态(确认端口已开放)

7. 可选:配置Nginx反向代理(提升访问体验)
若需通过域名访问或启用HTTPS,可使用Nginx作为反向代理。安装Nginx:

sudo apt install nginx -y

编辑Nginx配置文件(如/etc/nginx/conf.d/java-app.conf):

server {
    listen 80;
    server_name your-domain.com;  # 替换为你的域名或服务器IP

    location / {
        proxy_pass http://localhost:8080;  # 转发到Java应用的端口
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

保存后重启Nginx:

sudo systemctl reload nginx

此时可通过http://your-domain.com访问Java应用。

8. 可选:部署传统Servlet应用(如WAR文件)
若项目为Servlet应用(生成WAR文件),可使用Tomcat作为应用服务器:

  • 安装Tomcat
    sudo apt install tomcat9 -y  # 安装Tomcat 9
    
  • 部署WAR文件:将WAR文件复制到Tomcat的webapps/目录:
    sudo cp your-app.war /var/lib/tomcat9/webapps/
    
  • 启动Tomcat
    sudo systemctl start tomcat9  # 启动Tomcat
    sudo systemctl enable tomcat9  # 设置开机自启
    

Tomcat会自动解压WAR文件,应用可通过http://your-server-ip:8080/your-app/访问。

0