温馨提示×

Java程序在Ubuntu如何部署

小樊
33
2026-01-03 03:41:52
栏目: 编程语言

在 Ubuntu 上部署 Java 应用的实用步骤


一 准备与安装 Java

  • 更新系统并安装 JDK(推荐 OpenJDK 11OpenJDK 17):
    • 安装命令:sudo apt update && sudo apt install openjdk-17-jdk -y
    • 验证版本:java -version、javac -version
  • 多版本管理(如同时装有 JDK 11/17):
    • 交互选择:sudo update-alternatives --config java
  • 设置环境变量(可选,便于框架/脚本识别):
    • 写入全局环境:echo ‘JAVA_HOME=“/usr/lib/jvm/java-17-openjdk-amd64”’ | sudo tee -a /etc/environment
    • 当前会话生效:source /etc/environment
    • 验证:echo $JAVA_HOME
  • 说明:Ubuntu 官方仓库提供 OpenJDK,也可用 APT 安装 Oracle JDK 或添加 PPA;上述方式均为常见且可行的路径。

二 部署方式一 可执行 JAR + systemd(Spring Boot 常用)

  • 上传与放置应用:
    • 示例目录:/var/www/java-app,将构建好的 app.jar 上传至此
  • 直接运行(测试用):
    • 命令:cd /var/www/java-app && java -jar app.jar
  • 配置为系统服务(生产推荐):
    • 新建服务文件:sudo nano /etc/systemd/system/java-app.service
    • 示例内容(按需调整内存与用户):
      [Unit]
      Description=Java Web Application
      After=network.target
      
      [Service]
      User=ubuntu
      ExecStart=/usr/bin/java -Xms512m -Xmx2g -jar /var/www/java-app/app.jar
      SuccessExitStatus=143
      TimeoutStopSec=10
      Restart=on-failure
      WorkingDirectory=/var/www/java-app
      StandardOutput=journal
      StandardError=journal
      
      [Install]
      WantedBy=multi-user.target
      
    • 启用与启动:
      • 重载:sudo systemctl daemon-reload
      • 启动:sudo systemctl start java-app
      • 开机自启:sudo systemctl enable java-app
      • 查看状态与日志:sudo systemctl status java-app;sudo journalctl -u java-app -f
  • 说明:使用 systemd 可确保进程守护、崩溃自启与开机启动,适合生产环境长期运行。

三 部署方式二 WAR 包部署到 Tomcat

  • 安装 Tomcat(两种方式,二选一):
    • 方式 A(系统包):sudo apt install tomcat9 -y;管理命令:sudo systemctl start|stop|restart tomcat9
    • 方式 B(二进制包):
      • 下载并解压:cd /usr/local && sudo wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.74/bin/apache-tomcat-9.0.74.tar.gz
      • 解压与重命名:sudo tar xzf apache-tomcat-9.0.74.tar.gz && sudo mv apache-tomcat-9.0.74 tomcat
      • 启动:/usr/local/tomcat/bin/startup.sh
  • 部署应用:
    • myapp.war 复制到:/usr/local/tomcat/webapps/
    • Tomcat 会自动解压并部署,访问:http://服务器IP:8080/myapp
  • 常用调整:
    • 修改端口:编辑 /usr/local/tomcat/conf/server.xml,将 <Connector port=“8080”…> 改为所需端口后重启
  • 说明:WAR 部署适合传统 Java Web(Servlet/JSP)应用;系统包方式便于用 systemctl 管理,二进制包便于多实例与自定义目录。

四 部署方式三 Docker 容器化

  • 安装 Docker(略,按官方文档执行)
  • 构建镜像(示例 Dockerfile,基于 OpenJDK 8):
    FROM openjdk:8-jre-slim
    ENV TZ=Asia/Shanghai
    RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
    VOLUME /logs
    COPY target/app.jar /app.jar
    ENTRYPOINT ["java","-jar","/app.jar"]
    
  • 构建与运行:
    • 构建:docker build -t my-java-app .
    • 运行(映射 8080):docker run -d --name myapp -p 8080:8080 my-java-app
  • 说明:容器化具备环境隔离、可移植与扩缩容优势,适合微服务与 CI/CD 流程。

五 网络与运维要点

  • 反向代理与域名访问(Nginx,端口 80/443):
    • 安装:sudo apt install nginx -y
    • 配置示例(/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
  • 防火墙放行(如使用 UFW):sudo ufw allow 80,443,8080/tcp
  • 数据库与连接(以 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;
  • 日志与问题排查:
    • systemd 服务日志:sudo journalctl -u java-app -f
    • Tomcat 日志:tail -f /usr/local/tomcat/logs/catalina.out
    • 应用日志:按项目日志框架(如 Logback/Log4j)配置输出到文件
  • 说明:Nginx 反向代理便于统一域名、证书管理与静态资源处理;数据库与防火墙为常见依赖与访问控制点。

0