Ubuntu Java应用如何发布上线
导读:Ubuntu Java应用发布上线实操指南 一 准备与打包 安装构建工具与 JDK:sudo apt update && sudo apt install -y openjdk-17-jdk maven;如需 Gradle...
Ubuntu Java应用发布上线实操指南
一 准备与打包
- 安装构建工具与 JDK:sudo apt update & & sudo apt install -y openjdk-17-jdk maven;如需 Gradle 可另行安装。
- 使用构建工具打包:
- Maven:在项目根目录执行 mvn clean package,产物在 target/*.jar;确保打包为可执行 JAR(包含主类)。
- Gradle:执行 gradle build,产物在 build/libs/*.jar。
- 可执行 JAR 的关键配置:
- Maven 示例(在 pom.xml 的 中):
- maven-jar-plugin 指定 ;
- 使用 maven-dependency-plugin 将依赖复制到 target/lib,并在 manifest 中配置 Class-Path。
- Gradle 示例(在 build.gradle 中):
- jar { manifest { attributes ‘Main-Class’: ‘your.main.Class’ } }
- 可配置 copyDependencies 任务将依赖复制到 build/libs/lib。
- Maven 示例(在 pom.xml 的 中):
- 上传到服务器:本地执行 scp target/app.jar user@server:/opt/app/,进入服务器目录 cd /opt/app。以上步骤覆盖在 Ubuntu 上安装 JDK、Maven/Gradle、配置可执行 JAR 与上传的要点。
二 运行方式一 直接运行与 systemd 托管
- 直接运行(测试用):nohup java -jar app.jar > app.log 2> & 1 & ;生产环境建议使用进程管理工具。
- 使用 systemd 托管(推荐):
-
创建服务文件:sudo vim /etc/systemd/system/myapp.service
-
示例内容(按需调整内存与路径):
[Unit]
Description=My Java App
After=network.target[Service]
Type=simple
User=ubuntu
ExecStart=/usr/bin/java -Xms512m -Xmx1024m -jar /opt/app/app.jar
SuccessExitStatus=143
Restart=always
StandardOutput=journal
StandardError=journal[Install]
WantedBy=multi-user.target -
启用与启动:sudo systemctl daemon-reload & & sudo systemctl enable --now myapp
-
常用命令:sudo systemctl status myapp;sudo journalctl -u myapp -f(查看日志)。
-
- 说明:systemd 方式便于开机自启、自动重启与集中日志管理,适合生产环境长期运行。
三 运行方式二 Web 应用部署到 Tomcat
- 安装 Tomcat:sudo apt install tomcat9;检查状态:sudo systemctl status tomcat9;默认监听 8080。
- 部署 WAR:将应用 WAR 复制到 /var/lib/tomcat9/webapps/(例如 myapp.war),Tomcat 会自动解压部署,访问 http://server_ip:8080/myapp。
- 管理:sudo systemctl start|stop|restart tomcat9;如需开机自启:sudo systemctl enable tomcat9。
- 适用场景:传统 WAR 包、Servlet/JSP 应用或需容器管理生命周期的项目。
四 反向代理与域名访问
- 安装与启用 Nginx:sudo apt install nginx;sudo systemctl enable --now nginx。
- 配置反向代理(示例:/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;
proxy_set_header X-Forwarded-Proto $scheme;
}
} - 生效与验证:sudo nginx -t & & sudo systemctl reload nginx;访问 http://your_domain.com。
- 作用:对外暴露 80/443 端口、统一域名与路由、支持后续接入 HTTPS/TLS。
五 数据库与安全加固
- MySQL 安装与初始化:sudo apt install mysql-server;执行 sudo mysql_secure_installation 完成安全设置(设置 root 密码、移除匿名用户等)。
- 创建业务库与用户:
- mysql -u root -p
- CREATE DATABASE mydb CHARACTER SET utf8mb4;
- CREATE USER ‘myuser’@‘localhost’ IDENTIFIED BY ‘StrongPass!’;
- GRANT ALL PRIVILEGES ON mydb.* TO ‘myuser’@‘localhost’;
- FLUSH PRIVILEGES;
- 应用配置:在应用配置文件中使用上述 数据库、用户、密码;生产环境建议使用专用数据库账户与最小权限。
- 防火墙与端口:如启用防火墙,放行 80/443(Nginx)与 8080(直连应用/Tomcat),或仅开放 80/443 并通过反向代理访问后端。
- 安全建议:开启 UFW 或云安全组限制来源 IP;为域名配置 Let’s Encrypt 免费证书启用 HTTPS;JAR/TOMCAT 不以 root 运行;定期备份数据库与应用。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu Java应用如何发布上线
本文地址: https://pptw.com/jishu/768648.html
