走啊走
加油

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

服务器价格表

在使用 Alibaba Cloud Linux 3(基于 CentOS/RHEL 的优化发行版)部署 Spring Boot 项目时,虽然系统兼容性较好,但仍需注意以下关键问题,以确保应用稳定、安全和高效运行:


1. Java 环境配置

  • JDK 安装与版本选择
    • 推荐使用 OpenJDK 或 Oracle JDK。Alibaba Cloud Linux 3 默认支持 OpenJDK 8/11/17
    • 使用 yum 安装 OpenJDK:
      sudo yum install -y java-1.8.0-openjdk-devel
    • 验证安装:
      java -version
      javac -version
  • 环境变量设置
    • 设置 JAVA_HOMEPATH
      export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
      export PATH=$JAVA_HOME/bin:$PATH
    • 建议写入 /etc/profile 或用户 .bashrc

2. 系统资源限制调整

  • 文件描述符限制
    Spring Boot 应用(尤其是高并发服务)可能需要大量连接,需提高 ulimit

    • 检查当前限制:
      ulimit -n
    • 修改 /etc/security/limits.conf
    • soft nofile 65536
    • hard nofile 65536
    • 修改 /etc/systemd/system.conf 中的 DefaultLimitNOFILE=65536(若使用 systemd 启动)。
  • 进程数限制

    * soft nproc 16384
    * hard nproc 16384

3. 时间与时区设置

  • 同步系统时间
    sudo timedatectl set-timezone Asia/Shanghai
    sudo systemctl enable chronyd && sudo systemctl start chronyd
  • Spring Boot 日志和定时任务依赖准确时间,避免因时区或时间偏差导致问题。

4. 防火墙配置

  • Alibaba Cloud Linux 3 默认使用 firewalld
  • 开放 Spring Boot 应用端口(如 8080):
    sudo firewall-cmd --permanent --add-port=8080/tcp
    sudo firewall-cmd --reload
  • 或直接关闭(仅测试环境):
    sudo systemctl stop firewalld
    sudo systemctl disable firewalld

5. 应用部署方式

  • 推荐使用 systemd 管理服务
    创建 /etc/systemd/system/myapp.service

    [Unit]
    Description=My Spring Boot Application
    After=syslog.target
    
    [Service]
    User=myuser
    ExecStart=/usr/bin/java -jar /opt/myapp/app.jar
    SuccessExitStatus=143
    Restart=always
    RestartSec=10
    
    [Install]
    WantedBy=multi-user.target

    启用服务:

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

6. 日志管理

  • 重定向输出日志
    systemd 服务中添加日志路径:

    StandardOutput=append:/var/log/myapp/app.log
    StandardError=append:/var/log/myapp/error.log
  • 使用 logrotate 定期轮转日志,避免磁盘占满。

7. 性能与 JVM 调优

  • 根据服务器配置合理设置 JVM 参数:
    ExecStart=/usr/bin/java 
    -Xms512m -Xmx2g 
    -XX:+UseG1GC 
    -Dspring.profiles.active=prod 
    -jar /opt/myapp/app.jar
  • 注意:Alibaba Cloud Linux 对容器和 JVM 有优化,可考虑使用 Alibaba Dragonwell JDK(LTS 版 OpenJDK,针对云环境优化)。

8. 安全加固

  • 最小权限原则
    • 不要使用 root 用户运行应用,创建专用用户:
      sudo useradd -r -s /bin/false myapp
      sudo chown -R myapp:myapp /opt/myapp
  • SELinux 状态检查
    Alibaba Cloud Linux 3 默认可能关闭 SELinux,确认状态:

    sestatus

    若开启,需配置策略允许 Java 应用网络访问。


9. 依赖与端口冲突

  • 检查是否已有服务占用目标端口:
    netstat -tlnp | grep :8080
  • 确保数据库、Redis 等中间件可达,并配置正确的连接信息。

10. 监控与运维

  • 安装云监控插件(如 Alibaba Cloud CMS Agent),监控 CPU、内存、网络。
  • 配置健康检查接口(如 /actuator/health),便于集成负载均衡或容器编排。

11. 文件系统与磁盘

  • 确保应用目录有足够空间,建议将日志、上传文件等放在独立挂载的磁盘。
  • 使用 xfsext4 文件系统,性能稳定。

12. 网络与 DNS

  • 确认 DNS 解析正常,避免因域名解析失败导致外部服务调用超时。
  • 可配置 /etc/resolv.conf 使用阿里云公共 DNS:
    nameserver 223.5.5.5
    nameserver 223.6.6.6

总结

在 Alibaba Cloud Linux 3 上部署 Spring Boot 项目,重点在于:
✅ 正确配置 Java 环境
✅ 合理设置系统资源限制
✅ 使用 systemd 管理进程
✅ 做好安全与日志管理
✅ 结合云平台特性进行调优(如 Dragonwell JDK)

遵循以上最佳实践,可确保 Spring Boot 应用在生产环境中稳定、高效运行。