Java服务在Ubuntu如何部署
导读:在 Ubuntu 上部署 Java 服务的实用步骤 一 准备环境 更新系统并安装 OpenJDK(以 OpenJDK 11 为例): 命令:sudo apt update && sudo apt install -y o...
在 Ubuntu 上部署 Java 服务的实用步骤
一 准备环境
- 更新系统并安装 OpenJDK(以 OpenJDK 11 为例):
- 命令:
sudo apt update & & sudo apt install -y openjdk-11-jdk - 验证:
java -version、javac -version
- 命令:
- 配置 JAVA_HOME(系统级,推荐写入 /etc/environment):
- 查看安装路径:
update-alternatives --config java(复制类似 /usr/lib/jvm/java-11-openjdk-amd64 的路径) - 写入:
echo 'JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"' | sudo tee -a /etc/environment - 使生效:
source /etc/environment - 验证:
echo $JAVA_HOME
- 查看安装路径:
二 打包应用
- Spring Boot / 可执行 JAR:使用 Maven 或 Gradle 打包为可执行 JAR。
- Maven:
mvn clean package,产物在 target/your-app.jar - Gradle:
./gradlew build,产物在 build/libs/your-app.jar
- Maven:
- 传统 WAR:使用
mvn package生成 target/app.war,后续部署到 Tomcat 等容器。
三 部署方式
- 方式 A:使用 systemd 管理服务(推荐)
- 创建服务文件:
sudo vim /etc/systemd/system/myapp.service - 示例内容(按需修改路径与参数):
[Unit] Description=My Java App After=network.target [Service] Type=simple User=ubuntu WorkingDirectory=/opt/myapp ExecStart=/usr/bin/java -Xms512m -Xmx1024m -jar /opt/myapp/app.jar Restart=always RestartSec=5 Environment="JAVA_OPTS=-Dspring.profiles.active=prod" [Install] WantedBy=multi-user.target - 常用命令:
- 重载并启动:
sudo systemctl daemon-reload & & sudo systemctl start myapp - 开机自启:
sudo systemctl enable myapp - 查看状态/日志:
sudo systemctl status myapp、sudo journalctl -u myapp -f
- 重载并启动:
- 创建服务文件:
- 方式 B:使用 Tomcat 部署 WAR
- 安装:
sudo apt install -y tomcat9 - 部署:将 app.war 复制到 /var/lib/tomcat9/webapps/(Tomcat 会自动解压部署)
- 访问验证:浏览器打开 http://服务器IP:8080/app
- 管理:使用
sudo systemctl start|stop|restart tomcat9管理服务
- 安装:
- 方式 C:使用 Docker
- 示例 Dockerfile(多阶段构建,体积更小):
FROM eclipse-temurin:17-jre-alpine AS runtime WORKDIR /app COPY target/app.jar /app/app.jar EXPOSE 8080 ENTRYPOINT ["java","-jar","/app/app.jar"] - 构建与运行:
- 构建:
docker build -t myapp:1.0 . - 运行:
docker run -d -p 8080:8080 --name myapp myapp:1.0 - 查看日志:
docker logs -f myapp
- 构建:
- 示例 Dockerfile(多阶段构建,体积更小):
四 网络与反向代理
- 防火墙放行端口(以 8080 为例):
- UFW:
sudo ufw allow 8080/tcp - 云服务器安全组需同步放行对应端口
- UFW:
- 使用 Nginx 反向代理与 HTTPS(示例):
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; } }- 启用 HTTPS 可结合 Certbot 获取免费证书。
五 运维与安全要点
- 日志与监控
- systemd:
journalctl -u myapp -f - 应用日志:按业务配置写入文件或使用集中式日志(如 ELK)
- systemd:
- JVM 与性能
- 合理设置堆内存:
-Xms与-Xmx(如 -Xms512m -Xmx1024m) - 生产建议开启 GC 日志与监控(如 JMX/Prometheus Exporter)
- 合理设置堆内存:
- 进程与权限
- 以非 root 用户运行服务(如 User=ubuntu),目录权限最小化
- 备份与回滚
- 备份 /opt/myapp/ 与配置文件;镜像/版本化发布便于快速回滚
- 健康检查与就绪探针
- Spring Boot Actuator:
/actuator/health - Docker/K8s 场景配置就绪/存活探针
- Spring Boot Actuator:
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Java服务在Ubuntu如何部署
本文地址: https://pptw.com/jishu/766350.html
