温馨提示×

Java项目Ubuntu上编译部署步骤

小樊
57
2025-09-27 10:41:46
栏目: 编程语言

1. 准备工作:系统更新与工具安装
首先更新Ubuntu系统软件包列表,确保后续安装的组件为最新版本:

sudo apt update && sudo apt upgrade -y

安装常用工具(如vimwgetcurl),便于后续操作:

sudo apt install vim wget curl -y

2. 安装Java开发环境(JDK)
选择OpenJDK 11(或项目要求的版本,如8、17)作为Java运行环境,安装命令如下:

sudo apt install openjdk-11-jdk -y

验证JDK安装是否成功,需显示Java版本信息:

java -version  # 检查运行时环境
javac -version # 检查编译工具

3. 配置Java环境变量(可选但推荐)
为避免每次使用Java命令需指定完整路径,配置JAVA_HOME环境变量。编辑~/.bashrc文件(用户级配置)或/etc/profile(系统级配置):

vim ~/.bashrc

在文件末尾添加以下内容(根据实际JDK路径调整,可通过update-alternatives --config java查看路径):

export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH

使配置立即生效:

source ~/.bashrc

4. 编译与打包Java项目
根据项目构建工具选择对应命令:

  • Maven项目:进入项目根目录(含pom.xml文件),执行以下命令清理旧构建并生成可执行JAR/WAR文件:
    mvn clean package
    
    生成的JAR/WAR文件默认位于target/目录下(如your-project-1.0.0.jar)。
  • Gradle项目:进入项目根目录(含build.gradle文件),执行以下命令:
    gradle build
    
    生成的JAR/WAR文件位于build/libs/目录下。
  • 手动编译(无构建工具):若项目为纯Java文件,使用javac编译源代码(如HelloWorld.java),再打包为JAR:
    javac src/*.java -d build/classes  # 编译源代码到build/classes目录
    jar cvf app.jar -C build/classes .  # 打包为app.jar
    

5. 部署到Ubuntu服务器
将生成的JAR/WAR文件上传至服务器,可使用scp命令(本地到远程):

scp target/your-project.jar your_username@your_server_ip:/path/to/deploy

输入服务器密码后,文件将传输至指定目录(如/opt/java-apps)。

6. 启动Java应用

  • 前台运行(测试用):直接执行JAR文件,输出日志到终端:
    java -jar /path/to/deploy/your-project.jar
    
  • 后台运行(生产推荐):使用nohup命令让应用在后台持续运行,日志输出到app.log
    nohup java -jar /path/to/deploy/your-project.jar > /path/to/deploy/app.log 2>&1 &
    
  • systemd服务(生产最佳实践):创建系统服务实现开机自启、进程守护及日志管理。创建服务文件:
    sudo vim /etc/systemd/system/your-java-app.service
    
    写入以下内容(根据实际路径和用户调整):
    [Unit]
    Description=Your Java Application
    After=syslog.target network.target
    
    [Service]
    User=ubuntu  # 运行服务的用户(建议用非root)
    WorkingDirectory=/path/to/deploy
    ExecStart=/usr/bin/java -jar /path/to/deploy/your-project.jar
    Restart=always  # 进程崩溃后自动重启
    RestartSec=3    # 重启间隔3秒
    Environment="JAVA_OPTS=-Xms512m -Xmx1024m"  # JVM内存配置
    
    [Install]
    WantedBy=multi-user.target
    
    使服务生效并启动:
    sudo systemctl daemon-reload
    sudo systemctl start your-java-app
    sudo systemctl enable your-java-app  # 开机自启
    
    查看服务状态(确认是否运行):
    sudo systemctl status your-java-app
    

7. 配置防火墙(允许外部访问)
若应用需要通过公网IP或域名访问,需开放对应端口(如8080):

sudo ufw allow 8080/tcp  # 允许TCP协议的8080端口
sudo ufw enable          # 启用防火墙(若未启用)

验证端口是否开放:

sudo ufw status

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

sudo apt install nginx -y

编辑Nginx配置文件(如默认站点配置):

sudo vim /etc/nginx/sites-available/default

添加以下内容(将请求转发到本地的8080端口):

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 restart nginx

9. 日志管理与监控

  • 查看应用日志:若使用nohup或systemd,可通过以下命令实时查看日志:
    tail -f /path/to/deploy/app.log  # nohup日志路径
    journalctl -u your-java-app -f   # systemd服务日志
    
  • 监控应用状态:使用systemctl status查看服务状态,或通过JMX、Prometheus等工具监控JVM性能。

以上步骤覆盖了Java项目在Ubuntu上的完整编译部署流程,可根据项目类型(如Spring Boot、Java Web)和需求调整细节(如数据库连接、环境变量配置)。

0