加油
努力

在阿里云轻量应用服务器上如何部署Spring Boot项目?

在阿里云轻量应用服务器(Lightweight Application Server)上部署 Spring Boot 项目,通常分为 环境准备代码上传打包运行安全配置 四个阶段。以下是详细步骤:


一、前置准备

  1. 购买并登录轻量应用服务器
    • 选择 CentOS/Ubuntu 等操作系统镜像。
    • 安装 JDK 8+、Maven(可选)、Git 等工具(若本地已打包可跳过)。
  2. 本地构建 Spring Boot 项目
    mvn clean package -DskipTests
    # 生成 target/*.jar 文件
  3. 确认端口与防火墙
    • Spring Boot 默认端口为 8080,需在控制台开放该端口(或自定义端口)。

二、上传项目到服务器

方式 1:使用 SCP 命令(推荐)

# 将本地 jar 包上传至服务器(替换实际路径和 IP)
scp target/myapp.jar root@<服务器IP>:/opt/app/

方式 2:通过 SFTP 工具(如 FileZilla)

  • 连接地址:sftp://<服务器IP>
  • 用户名:root
  • 密码:登录密码或密钥

三、在服务器上启动项目

1. 安装 Java(如未预装)

# Ubuntu/Debian
sudo apt update && sudo apt install openjdk-17-jdk -y

# CentOS/RHEL
sudo yum install java-17-openjdk-devel -y

验证:

java -version

2. 创建运行目录并解压/放置 jar 包

mkdir -p /opt/app
cd /opt/app
# 若已上传则直接执行下一步;否则从本地复制

3. 启动 Spring Boot 应用

nohup java -jar myapp.jar --server.port=8080 > app.log 2>&1 &
  • nohup:后台运行,避免终端关闭后进程终止
  • > app.log 2>&1:将日志输出到 app.log 文件
  • &:后台运行

查看进程状态:

ps -ef | grep myapp.jar
tail -f app.log

四、配置公网访问与安全组

  1. 登录阿里云控制台 → 轻量应用服务器 → 点击实例 → “防火墙”
  2. 添加规则:
    • 协议:TCP
    • 端口:8080(或你配置的端口)
    • 授权对象:0.0.0.0/0(生产环境建议限制特定 IP)

⚠️ 注意:Spring Boot 默认绑定 localhost,需确保启动参数包含 --spring.profiles.active=prod 或在 application.yml 中设置:

server:
  address: 0.0.0.0

五、进阶优化(可选)

  • 使用 systemd 管理服务(实现开机自启):

    sudo vim /etc/systemd/system/myapp.service

    内容示例:

    [Unit]
    Description=My Spring Boot App
    After=network.target
    
    [Service]
    User=root
    WorkingDirectory=/opt/app
    ExecStart=/usr/bin/java -jar myapp.jar
    Restart=always
    
    [Install]
    WantedBy=multi-user.target

    启用服务:

    sudo systemctl daemon-reload
    sudo systemctl enable myapp
    sudo systemctl start myapp
  • 反向X_X + Nginx(推荐生产环境):

    • 监听 80/443 端口,转发到 localhost:8080
    • 支持 HTTPS、静态资源缓存等
  • 日志轮转:使用 logback-spring.xmllogrotate 管理日志大小。


常见问题排查

问题 解决方案
无法访问页面 检查安全组端口、Spring Boot 是否绑定 0.0.0.0、防火墙是否拦截
内存溢出 增加 JVM 参数:-Xms512m -Xmx2g
端口被占用 lsof -i:8080 查占用进程,改用其他端口
数据库连接失败 检查远程数据库白名单、网络连通性(telnet db-host port

如需自动化部署,可结合 Jenkins/GitLab CI + Docker 实现持续集成。需要具体脚本或 Dockerfile 示例,欢迎告诉我你的技术栈细节!

云服务器