在Ubuntu上部署Ja va项目,其实有一套成熟的标准流程。从环境准备到编译打包,再到服务化运行和反向袋里,每一步都有值得注意的细节。下面我们就顺着这条路径,把整个流程拆解清楚。
1. 准备工作:系统更新与工具安装
首先更新系统软件包列表,确保后续安装的组件都是最新版本:

sudo apt update && sudo apt upgrade -y
接着安装常用工具,比如vim、wget、curl,方便后续操作:
sudo apt install vim wget curl -y
2. 安装Ja va开发环境(JDK)
选择OpenJDK 11(也可以根据项目要求选8或17),安装命令非常直接:
sudo apt install openjdk-11-jdk -y
安装完成后,验证一下JDK是否成功:
ja va -version # 检查运行时环境
ja vac -version # 检查编译工具
如果能看到版本信息,说明环境已就绪。
3. 配置Ja va环境变量(可选但推荐)
虽然不配也能用,但配置JA VA_HOME可以避免每次输入完整路径的麻烦。编辑~/.bashrc(用户级)或/etc/profile(系统级):
vim ~/.bashrc
在文件末尾添加以下内容(JDK路径可能因版本而异,可通过update-alternatives --config ja va确认):
export JA VA_HOME=/usr/lib/jvm/ja va-11-openjdk-amd64
export PATH=$JA VA_HOME/bin:$PATH
保存后执行:
source ~/.bashrc
环境变量即刻生效。
4. 编译与打包Ja va项目
根据项目使用的构建工具,选择对应的命令:
- Ma ven项目:进入项目根目录(含
pom.xml),执行清理并打包:
生成的JAR/WAR文件默认在mvn clean packagetarget/目录下,比如your-project-1.0.0.jar。 - Gradle项目:进入含
build.gradle的目录,运行:
产物在gradle buildbuild/libs/目录下。 - 手动编译(无构建工具):如果项目是纯Ja va文件,先用
ja vac编译,再打包为JAR:ja vac src/*.ja va -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/ja va-apps。
6. 启动Ja va应用
启动方式有三种,适用场景各不相同:
- 前台运行(测试用):直接执行JAR,日志输出到终端:
ja va -jar /path/to/deploy/your-project.jar - 后台运行(生产推荐):使用
nohup让应用在后台持续运行,日志写入文件:nohup ja va -jar /path/to/deploy/your-project.jar > /path/to/deploy/app.log 2>&1 & - systemd服务(生产最佳实践):创建系统服务,实现开机自启、进程守护和日志管理。先创建服务文件:
写入以下内容(根据实际路径和用户调整):sudo vim /etc/systemd/system/your-ja va-app.service
然后使服务生效并启动:[Unit] Description=Your Ja va Application After=syslog.target network.target [Service] User=ubuntu # 运行服务的用户,建议用非root WorkingDirectory=/path/to/deploy ExecStart=/usr/bin/ja va -jar /path/to/deploy/your-project.jar Restart=always # 进程崩溃后自动重启 RestartSec=3 # 重启间隔3秒 Environment="JA VA_OPTS=-Xms512m -Xmx1024m" # JVM内存配置 [Install] WantedBy=multi-user.target
查看服务状态:sudo systemctl daemon-reload sudo systemctl start your-ja va-app sudo systemctl enable your-ja va-app # 开机自启sudo systemctl status your-ja va-app
7. 配置防火墙(允许外部访问)
如果应用需要被外部访问,记得开放对应端口(比如8080):
sudo ufw allow 8080/tcp # 允许TCP协议的8080端口
sudo ufw enable # 启用防火墙(若未启用)
验证端口是否开放:
sudo ufw status
8. 可选:配置反向袋里(如Nginx)
要用域名访问或启用HTTPS,Nginx是常见的选择。安装Nginx:
sudo apt install nginx -y
编辑默认站点配置:
sudo vim /etc/nginx/sites-a vailable/default
添加以下内容(将请求转发到本地的8080端口):
server {
listen 80;
server_name your-domain.com; # 替换为你的域名或公网IP
location / {
proxy_pass http://localhost:8080; # 转发到Ja va应用端口
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-ja va-app -f # systemd服务日志 - 监控应用状态:使用
systemctl status查看服务状态,或通过JMX、Prometheus等工具监控JVM性能。
以上步骤覆盖了Ja va项目在Ubuntu上的完整编译部署流程。根据项目类型(如Spring Boot、Ja va Web)和实际需求,可以灵活调整数据库连接、环境变量等细节。关键是把每一步想清楚,部署起来就不会手忙脚乱。