首页主机资讯Java应用如何在Ubuntu上部署

Java应用如何在Ubuntu上部署

时间2025-12-22 20:39:04发布访客分类主机资讯浏览681
导读:在 Ubuntu 上部署 Java 应用的实用指南 一 环境准备 更新系统并安装常用工具 sudo apt update && sudo apt upgrade -y sudo apt install -y vim wg...

在 Ubuntu 上部署 Java 应用的实用指南

一 环境准备

  • 更新系统并安装常用工具
    • sudo apt update & & sudo apt upgrade -y
    • sudo apt install -y vim wget curl
  • 安装 JDK(以 OpenJDK 17 为例)
    • sudo apt install -y openjdk-17-jdk
    • java -version 验证安装结果
  • 配置环境变量(全局生效)
    • echo ‘export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64’ | sudo tee -a /etc/profile
    • echo ‘export PATH=$JAVA_HOME/bin:$PATH’ | sudo tee -a /etc/profile
    • source /etc/profile
  • 如需数据库(以 MySQL 8.0 为例)
    • sudo apt install -y mysql-server
    • sudo mysql_secure_installation
    • 登录并创建业务库:mysql -u root -p,CREATE DATABASE appdb CHARACTER SET utf8mb4;
  • 如为 Web 应用,建议安装 Nginx 作为反向代理
    • sudo apt install -y nginx

二 部署方式

  • 方式 A 可执行 JAR + systemd(Spring Boot 常用)
    • 构建:mvn clean package 或 ./gradlew build,产物为可执行 fat jar
    • 上传:scp target/app.jar user@server:/opt/apps/
    • 创建服务:sudo nano /etc/systemd/system/java-app.service
      [Unit]
      Description=Java Web Application
      After=network.target
      
      [Service]
      User=deploy
      WorkingDirectory=/opt/apps
      ExecStart=/usr/bin/java -Xms512m -Xmx1024m -jar /opt/apps/app.jar
      SuccessExitStatus=143
      Restart=on-failure
      StandardOutput=journal
      StandardError=journal
      
      [Install]
      WantedBy=multi-user.target
      
    • 启动与开机自启
      • sudo systemctl daemon-reload
      • sudo systemctl enable --now java-app.service
      • sudo systemctl status java-app.service
  • 方式 B WAR 部署到 Tomcat
    • 安装 Tomcat 9
      • 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
      • echo ‘export CATALINA_HOME=/usr/local/tomcat’ | sudo tee -a /etc/profile
      • echo ‘export PATH=$CATALINA_HOME/bin:$PATH’ | sudo tee -a /etc/profile
      • source /etc/profile
    • 启动与部署
      • $CATALINA_HOME/bin/startup.sh
      • 将 WAR 放入 $CATALINA_HOME/webapps/,Tomcat 会自动解压部署
  • 方式 C Docker 容器化
    • 示例 Dockerfile
      FROM eclipse-temurin:17-jre-jammy
      WORKDIR /app
      COPY target/app.jar /app/app.jar
      EXPOSE 8080
      ENTRYPOINT ["java","-jar","/app/app.jar"]
      
    • 构建与运行
      • docker build -t my-java-app:1.0 .
      • docker run -d --name app -p 8080:8080 my-java-app:1.0

三 网络与反向代理

  • 开放防火墙端口(示例为 8080
    • sudo ufw allow 8080/tcp
    • 云服务器需在控制台安全组放行对应端口
  • 配置 Nginx 反向代理(HTTP)
    • 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;
          
          proxy_set_header X-Forwarded-Proto $scheme;
      
        }
      
      }
          
      
    • 校验与生效
      • sudo nginx -t
      • sudo systemctl restart nginx
  • 如需启用 HTTPS,可使用 Let’s Encrypt 的 certbot 为 Nginx 自动签发证书

四 运行与维护

  • 日志与查看
    • systemd:sudo journalctl -u java-app.service -f
    • JAR 前台:nohup java -jar app.jar > app.log 2> & 1 &
  • 常用运维
    • 停止/重启:sudo systemctl stop|restart java-app.service
    • 版本升级:替换 JAR → sudo systemctl restart java-app.service
    • 文件权限:建议以非 root 运行(如 User=deploy),目录权限 755,日志目录可 775
  • 健康检查
    • curl -I http://127.0.0.1:8080/actuator/health(如启用 Actuator)
    • ss -tlnp | grep 8080 或 lsof -i:8080 检查端口占用

五 常见问题排查

  • 命令未找到或版本不匹配
    • java: command not found 或 Unsupported major.minor version
    • 处理:安装匹配版本 JDK(如 sudo apt install openjdk-17-jdk),统一构建与运行 JDK 版本
  • 端口被占用
    • java.net.BindException: Address already in use
    • 处理:lsof -i:8080 查 PID,kill -9 或调整应用端口
  • 外网访问不通
    • 处理:sudo ufw allow 8080/tcp,云安全组放行;本机 curl 验证后再排查网络链路
  • 权限不足
    • Permission denied
    • 处理:chmod +x app.jar,chown -R deploy:deploy /opt/apps,避免使用 root 运行
  • 环境变量未生效
    • JAVA_HOME Not found(在 systemd/nohup 场景)
    • 处理:在 /etc/profile 或 systemd 的 Environment= 中显式设置 JAVA_HOME
  • 依赖缺失或包不完整
    • ClassNotFoundException
    • 处理:确保打包为“胖包”(mvn clean package),必要时检查依赖范围与仓库
  • 中文乱码或时区异常
    • 处理:启动时增加 -Dfile.encoding=UTF-8 -Duser.timezone=Asia/Shanghai
  • 直接执行 JAR 报错“无法执行二进制文件”
    • 处理:使用 java -jar app.jar 而非 ./app.jar

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Java应用如何在Ubuntu上部署
本文地址: https://pptw.com/jishu/777746.html
debian反汇编指令功能 debian反汇编指令方法

游客 回复需填写必要信息