使用 Alibaba Cloud Linux 3 部署Spring Boot项目需要注意哪些问题?

服务器

在使用 Alibaba Cloud Linux 3(基于 RHEL/CentOS 的优化发行版)部署 Spring Boot 项目时,虽然系统本身稳定且性能优秀,但仍有一些关键问题需要注意,以确保应用稳定、安全、高效运行。以下是主要注意事项:


一、系统环境准备

  1. Java 环境安装

    • 推荐使用 OpenJDK 或 Oracle JDK(建议 Java 8/11/17 LTS 版本)。
    • 使用 yum 安装 OpenJDK:
      sudo yum install -y java-17-openjdk-devel
    • 验证安装:
      java -version
      javac -version
    • 设置 JAVA_HOME 环境变量(推荐添加到 /etc/profile 或用户 .bashrc):
      export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
      export PATH=$JAVA_HOME/bin:$PATH
  2. 时间与时区设置

    • 确保系统时间准确,避免日志或调度异常:
      timedatectl set-timezone Asia/Shanghai
      timedatectl set-ntp true
  3. 关闭或配置防火墙(firewalld)

    • 若需开放端口(如 8080):
      sudo firewall-cmd --permanent --add-port=8080/tcp
      sudo firewall-cmd --reload
    • 或根据安全策略使用安全组(云平台层面更推荐)。

二、Spring Boot 应用部署方式

  1. Jar 包部署(推荐)

    • 将打包好的 app.jar 上传至服务器。
    • 启动命令示例:
      nohup java -jar app.jar --spring.profiles.active=prod > app.log 2>&1 &
    • 建议使用 systemd 管理服务(见下文)。
  2. 构建与上传

    • 在 CI/CD 中使用 Maven/Gradle 构建:
      mvn clean package -DskipTests
    • 使用 scprsync 安全传输 Jar 包。

三、使用 systemd 管理服务(推荐)

创建系统服务文件,实现开机自启、自动重启等。

# /etc/systemd/system/myapp.service
[Unit]
Description=My Spring Boot Application
After=syslog.target

[Service]
User=myuser
WorkingDirectory=/opt/myapp
ExecStart=/usr/bin/java -jar /opt/myapp/app.jar --spring.profiles.active=prod
SuccessExitStatus=143
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target

启用服务:

sudo systemctl daemon-reload
sudo systemctl enable myapp
sudo systemctl start myapp

查看日志:

journalctl -u myapp -f

四、性能与资源调优

  1. JVM 参数优化

    • 根据服务器内存设置堆大小:
      ExecStart=/usr/bin/java -Xms512m -Xmx2g -XX:+UseG1GC -jar app.jar
    • 生产环境建议开启 GC 日志:
      -Xlog:gc*:file=/var/log/myapp/gc.log:time
  2. 文件句柄限制

    • 修改 /etc/security/limits.conf
      myuser soft nofile 65536
      myuser hard nofile 65536
    • systemd 服务中也可通过 LimitNOFILE= 设置。

五、安全注意事项

  1. 不要使用 root 运行应用

    • 创建专用用户:
      useradd -r -s /sbin/nologin myuser
      chown -R myuser:myuser /opt/myapp
  2. 目录权限控制

    • 应用目录仅允许必要用户读写:
      chmod 750 /opt/myapp
  3. 敏感信息管理

    • 避免将数据库密码等硬编码,使用环境变量或配置中心(如 Nacos、Apollo)。
    • 外部化配置文件路径:
      java -jar app.jar --spring.config.location=/etc/myapp/application-prod.yml

六、日志管理

  1. 日志输出到文件

    • 使用 logback-spring.xmllog4j2 配置滚动策略。
    • 示例:按天分割,保留 30 天。
  2. 日志轮转(logrotate)

    • 配置 /etc/logrotate.d/myapp
      /var/log/myapp/*.log {
          daily
          rotate 30
          compress
          missingok
          notifempty
          copytruncate
      }

七、监控与维护

  1. 健康检查

    • 开启 Actuator 端点,用于健康检查和监控:
      management:
        endpoints:
          web:
            exposure:
              include: health,info,metrics
  2. 集成监控工具

    • Prometheus + Grafana 收集 JVM 指标。
    • 使用 Alibaba Cloud ARMS 或开源方案进行 APM 监控。
  3. 定期更新系统

    sudo yum update -y

八、网络与连接问题

  • Alibaba Cloud Linux 3 默认可能启用 SELinux,若遇到连接拒绝等问题,可临时禁用测试:
    setenforce 0

    生产环境建议配置 SELinux 规则而非关闭。


总结

类别 注意事项
Java 环境 正确安装 JDK,设置 JAVA_HOME
部署方式 推荐 jar + systemd
安全 非 root 用户运行,权限最小化
性能 JVM 调优,文件句柄限制
日志 外部化配置,日志轮转
监控 健康检查 + 外部监控系统
系统兼容性 Alibaba Cloud Linux 3 兼容 CentOS/RHEL,大多数操作通用

通过以上配置,可以确保 Spring Boot 项目在 Alibaba Cloud Linux 3 上稳定、安全、高效地运行。建议结合阿里云的 ECS、SLB、云监控等服务实现完整的生产级部署架构。

未经允许不得转载:CDNK博客 » 使用 Alibaba Cloud Linux 3 部署Spring Boot项目需要注意哪些问题?