Ubuntu上Java应用如何部署
小樊
33
2026-01-01 00:19:50
Ubuntu上Java应用部署全流程
一 环境准备与构建
安装 JDK 11/17 (按需选择):sudo apt update && sudo apt install openjdk-17-jdk -y,验证:java -version、javac -version。
安装构建工具(如项目使用):sudo apt install maven 或 gradle 。
获取代码并构建:
Maven:mvn clean package(产物在 target/ )。
Gradle:gradle build(产物在 build/libs/ )。
将产物 JAR 传到服务器:scp target/app.jar user@server:/opt/app/。
备注:Spring Boot 项目通常直接产出可执行 fat jar ,无需外部容器即可运行。
二 运行与进程管理
直接运行(测试用):cd /opt/app && java -jar app.jar(默认监听 8080 )。
后台运行(简单方式):nohup java -jar app.jar > app.log 2>&1 &。
生产推荐 systemd 托管:
新建服务:sudo nano /etc/systemd/system/app.service
示例内容:
[Unit]
Description=Java App
After=network.target
[Service]
User=ubuntu
WorkingDirectory=/opt/app
ExecStart=/usr/bin/java -jar /opt/app/app.jar
SuccessExitStatus=143
TimeoutStopSec=10
Restart=on-failure
[Install]
WantedBy=multi-user.target
启用与启动:sudo systemctl daemon-reload && sudo systemctl enable --now app && sudo systemctl status app
常用运维:sudo systemctl restart app、sudo journalctl -u app -f(查看日志)
三 Web应用与反向代理
直接暴露应用端口(适合内网/测试):保持应用在 8080 ,通过 http://服务器IP:8080 访问。
使用 Nginx 反向代理(适合生产、域名与 HTTPS):
安装:sudo apt install nginx -y
配置:sudo nano /etc/nginx/sites-available/default
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://127.0.0.1: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 nginx -t && sudo systemctl restart nginx
如需 HTTPS,建议配合 Certbot 申请 Let’s Encrypt 证书。
四 WAR部署到Tomcat
安装 Tomcat 9 :
下载并解压到 /opt/tomcat;设置环境变量:export CATALINA_HOME =/opt/tomcat
启动:/opt/tomcat/bin/startup.sh(默认端口 8080 )
部署应用:将 app.war 复制到 /opt/tomcat/webapps/,Tomcat 会自动解压部署,访问 http://服务器IP:8080/app。
变更端口:编辑 /opt/tomcat/conf/server.xml ,将 <Connector port=“8080”…/> 改为所需端口并重启。
五 数据库与发布方式扩展
MySQL(如应用需要):
安装与初始化:sudo apt install mysql-server -y;sudo mysql_secure_installation
建库建用户示例:CREATE DATABASE mydb; CREATE USER ‘myuser’@‘localhost’ IDENTIFIED BY ‘password’; GRANT ALL ON mydb.* TO ‘myuser’@‘localhost’; FLUSH PRIVILEGES;
打包与发布方式扩展:
生成 .deb 包(便于 apt 管理):准备目录与 control 文件,使用 dpkg-deb --build . 打包,sudo dpkg -i your-app_1.0_amd64.deb。
使用 Docker (环境一致性最佳):
Dockerfile:
FROM openjdk:17-jdk
WORKDIR /app
COPY target/app.jar /app/app.jar
EXPOSE 8080
CMD [“java”,“-jar”,“app.jar”]
构建与运行:docker build -t app . && docker run -p 8080:8080 app。