温馨提示×

Ubuntu Java如何使用Spring Boot

小樊
32
2025-12-06 11:06:39
栏目: 编程语言

在 Ubuntu 上使用 Java 运行 Spring Boot 的完整流程

一 环境准备

  • 安装 Java JDK(推荐 OpenJDK 11OpenJDK 17):
    • 更新索引并安装:sudo apt update && sudo apt install openjdk-17-jdk -y
    • 验证版本:java -version
  • 可选:安装 Maven(便于本地构建):sudo apt install maven -y
  • 说明:Spring Boot 项目通常使用可执行 JAR 运行,JDK 用于编译与运行,JRE 仅能运行。

二 构建可执行 JAR

  • 使用项目自带的包装器(推荐,避免本机与服务器环境差异):
    • Maven:在项目根目录执行:./mvnw clean package
    • Gradle:在项目根目录执行:./gradlew clean build
  • 使用系统安装的构建工具:
    • Maven:mvn clean package
  • 构建产物默认位于:Maven 的 target/ 目录,Gradle 的 build/libs/ 目录,文件名通常包含版本号(如:app-0.0.1-SNAPSHOT.jar)。

三 在 Ubuntu 上运行与验证

  • 将 JAR 上传到服务器(示例):scp target/app.jar user@server_ip:/var/www/java-app/
  • 进入目录并启动:
    • 前台运行:java -jar /var/www/java-app/app.jar
    • 后台运行并输出日志:nohup java -jar /var/www/java-app/app.jar > app.log 2>&1 &
  • 验证:
    • 查看进程:ps aux | grep app.jar
    • 查看日志:tail -f app.log
    • 本机或服务器浏览器访问:http://localhost:8080(如配置了 server.port,请使用对应端口)。

四 生产环境建议

  • 使用 systemd 管理服务(推荐):
    • 创建服务文件:sudo nano /etc/systemd/system/myapp.service
    • 示例内容(按需修改 Description、User、WorkingDirectory、ExecStart、Environment):
      [Unit]
      Description=My Spring Boot App
      After=network.target
      
      [Service]
      Type=simple
      User=ubuntu
      WorkingDirectory=/var/www/java-app
      ExecStart=/usr/bin/java -jar /var/www/java-app/app.jar
      SuccessExitStatus=143
      Restart=always
      Environment=SPRING_PROFILES_ACTIVE=prod
      
      [Install]
      WantedBy=multi-user.target
      
    • 启用与启动:
      • sudo systemctl daemon-reload
      • sudo systemctl enable --now myapp
      • 查看状态与日志:sudo systemctl status myapp;sudo journalctl -u myapp -f
  • 配置 Nginx 反向代理(将域名或 80/443 端口转发到应用端口,如 8080):
    • 安装:sudo apt install nginx -y
    • 配置示例(/etc/nginx/sites-available/myapp):
      server {
          listen 80;
          server_name your_domain_or_ip;
      
          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 ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/;sudo systemctl reload nginx
  • 外部配置文件与多环境:
    • 启动时指定:java -jar app.jar --spring.config.location=/opt/conf/application-prod.yml
    • 或在 systemd 中注入环境变量:Environment=SPRING_CONFIG_LOCATION=/opt/conf/application-prod.yml。

五 常见问题与排查

  • 端口被占用:ss -tulpen | grep 8080;必要时 kill 或调整 server.port
  • 内存不足:启动时设置 JVM 参数,例如:-Xms512m -Xmx1g
  • 无法远程访问:
    • 云服务器需放行安全组/防火墙的 8080(或 Nginx 的 80/443)端口
    • 检查应用是否仅绑定 127.0.0.1,应改为 0.0.0.0
  • 日志与诊断:
    • 实时查看:tail -f app.log 或 journalctl -u myapp -f
    • 进程检查:ps aux | grep java;netstat -tulpen | grep java

0