1. 安装Java运行环境(JDK)
在Ubuntu上部署Java项目前,需先安装JDK(Java Development Kit)。推荐使用OpenJDK(开源且稳定),以OpenJDK 11为例,操作步骤如下:
sudo apt updatesudo apt install openjdk-11-jdkjava -version(若输出Java版本信息,则说明安装成功)。2. 准备Java项目
确保项目已完成开发并通过测试,需将其打包为可执行文件:
mvn clean package,生成的JAR文件位于target/目录(如myapp-1.0.0.jar)。gradle build,JAR文件位于build/libs/目录。3. 上传项目文件到服务器
使用scp(安全复制)命令将本地打包好的JAR文件上传至Ubuntu服务器。例如:
scp target/myapp-1.0.0.jar username@your_server_ip:/path/to/deploy
(替换username为服务器用户名、your_server_ip为服务器IP地址、/path/to/deploy为目标路径)。
4. 部署运行Java项目
直接在终端执行以下命令,项目会在当前终端窗口运行,关闭终端则停止:
java -jar /path/to/deploy/myapp-1.0.0.jar。
使用nohup命令让项目在后台持续运行,即使终端关闭也不会停止,日志输出到app.log文件:
nohup java -jar /path/to/deploy/myapp-1.0.0.jar > /path/to/deploy/app.log 2>&1 &。
将项目配置为系统服务,实现开机自启、自动重启等功能。操作步骤如下:
sudo vim /etc/systemd/system/myapp.service[Unit]
Description=My Java Application
After=network.target
[Service]
User=your_username
WorkingDirectory=/path/to/deploy
ExecStart=/usr/bin/java -Xms512m -Xmx1024m -jar /path/to/deploy/myapp-1.0.0.jar
Restart=always
RestartSec=3
Environment="JAVA_OPTS=-Xms512m -Xmx1024m"
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reloadsudo systemctl start myappsudo systemctl enable myappsudo systemctl status myapp(若显示“active (running)”,则说明启动成功)。5. 配置防火墙(允许外部访问)
若项目需要对外提供服务(如Web应用),需开放对应端口(如8080)。以Ubuntu默认防火墙ufw为例:
sudo ufw allow 8080/tcp
验证端口是否开放:sudo ufw status(显示“8080/tcp ALLOW”则表示成功)。
6. 可选:配置反向代理(如Nginx)
若需通过域名访问项目或启用HTTPS,可使用Nginx作为反向代理。操作步骤如下:
sudo apt install nginx/etc/nginx/conf.d/myapp.conf,添加以下内容(将your_domain.com替换为你的域名,8080替换为项目端口):server {
listen 80;
server_name your_domain.com;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
sudo systemctl restart nginx。7. 可选:自动化部署(如GitHub Actions)
通过CI/CD工具实现代码推送后自动构建、部署,提升效率。以GitHub Actions为例:
.github/workflows/deploy.yml文件,内容如下(替换your_username、your_server_ip、your_deploy_path等为实际值):name: Deploy Java App
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up JDK 11
uses: actions/setup-java@v3
with:
java-version: '11'
distribution: 'adopt'
- name: Build with Maven
run: mvn -B package --file pom.xml
- name: Upload to Server
run: |
sshpass -p ${{ secrets.SERVER_PASSWORD }} scp -o StrictHostKeyChecking=no target/*.jar ${{ secrets.SERVER_USER }}@${{ secrets.SERVER_IP }}:${{ secrets.DEPLOY_PATH }}
sshpass -p ${{ secrets.SERVER_PASSWORD }} ssh -o StrictHostKeyChecking=no ${{ secrets.SERVER_USER }}@${{ secrets.SERVER_IP }} "systemctl restart myapp"
(需在GitHub仓库的“Settings > Secrets and variables > Actions”中配置SERVER_USER、SERVER_PASSWORD、SERVER_IP、DEPLOY_PATH等密钥)。