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

在使用 Alibaba Cloud Linux 3 部署 Spring Boot 项目时,虽然该系统基于 CentOS/RHEL 生态且兼容性良好,但仍有一些关键点需要注意,以确保项目稳定、安全和高效运行。以下是部署过程中需要重点关注的问题及建议:


1. 系统环境准备

✅ 安装 Java 环境

  • Spring Boot 通常依赖 Java(JDK 8/11/17+),需确认已正确安装。
  • 推荐使用 OpenJDK 或 Alibaba Dragonwell(阿里优化的 OpenJDK 发行版):

    # 安装 OpenJDK 17
    sudo dnf install -y java-17-openjdk-devel
    
    # 或使用 Dragonwell(推荐用于性能敏感场景)
    # 下载并配置 Dragonwell(从官网获取最新版本)
  • 验证安装:
    java -version
    javac -version

✅ 设置 JAVA_HOME 环境变量

export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
export PATH=$JAVA_HOME/bin:$PATH

建议写入 /etc/profile 或用户 .bashrc


2. 防火墙与端口配置

  • 默认 Spring Boot 使用 8080 端口,需开放防火墙:
    sudo firewall-cmd --permanent --add-port=8080/tcp
    sudo firewall-cmd --reload
  • 若使用云服务器,请同步在 阿里云安全组规则 中放行对应端口。

3. 系统资源限制调优

Alibaba Cloud Linux 3 对资源管理较严格,注意以下几点:

✅ 文件句柄数限制

Spring Boot 可能打开大量连接(如数据库、HTTP 连接池),需提高限制:

# 编辑 limits.conf
sudo vi /etc/security/limits.conf

添加:

* soft nofile 65536
* hard nofile 65536

✅ 用户进程数限制

避免因线程过多导致“unable to create new native thread”错误:

* soft nproc 16384
* hard nproc 16384

⚠️ 注意:修改后需重新登录生效,或重启服务。


4. 服务化部署建议(使用 systemd)

推荐将 Spring Boot 应用作为系统服务运行,便于管理。

创建 systemd 服务文件

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

内容示例:

[Unit]
Description=My Spring Boot Application
After=network.target

[Service]
Type=simple
User=myuser
ExecStart=/usr/bin/java -jar /opt/myapp/app.jar
SuccessExitStatus=143
Restart=always
RestartSec=10

StandardOutput=journal
StandardError=journal

Environment=SPRING_PROFILES_ACTIVE=prod
Environment=JAVA_OPTS="-Xms512m -Xmx2g"

[Install]
WantedBy=multi-user.target

启用并启动服务

sudo systemctl daemon-reexec
sudo systemctl enable myapp
sudo systemctl start myapp
sudo systemctl status myapp

5. 日志管理

  • Spring Boot 默认输出日志到控制台,结合 systemd 可使用 journalctl 查看:
    journalctl -u myapp.service -f
  • 建议配置日志轮转(logrotate)或将日志输出到文件(通过 logging.file.name 配置)。

6. 时间与时区设置

  • Alibaba Cloud Linux 3 默认时区可能为 UTC,而 Spring Boot 应用常需东八区:
    sudo timedatectl set-timezone Asia/Shanghai
  • 在应用中也可显式设置:
    @PostConstruct
    void started() {
      TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai"));
    }

7. 网络与 DNS 配置

  • 某些镜像默认 DNS 可能不稳定,可手动设置:
    sudo vi /etc/resolv.conf

    添加:

    nameserver 223.5.5.5    # 阿里公共 DNS
    nameserver 223.6.6.6

8. 安全加固建议

  • 禁用不必要的服务。
  • 使用非 root 用户运行应用。
  • 定期更新系统:
    sudo dnf update -y
  • 启用 Alibaba Cloud 的 云安全中心 监控入侵、漏洞等。

9. 性能优化(可选)

  • Alibaba Cloud Linux 3 针对云环境做了内核优化,可结合 Dragonwell JVM 提升性能。
  • 合理设置 JVM 参数(堆大小、GC 策略等)。
  • 考虑启用 cgroup v2 资源隔离(适用于容器化部署)。

10. 监控与运维

  • 使用阿里云 CloudMonitor 监控 ECS 实例 CPU、内存、网络。
  • 结合 Spring Boot Actuator + Prometheus + Grafana 实现应用级监控。
  • 日志可通过 SLS(日志服务)采集集中分析。

总结:关键检查清单

项目 是否完成
安装 JDK 并配置 JAVA_HOME
开放防火墙与安全组端口
调整系统资源限制(nofile, nproc)
使用 systemd 托管服务
设置正确时区
使用非 root 用户运行应用
配置日志输出与轮转
定期系统更新与安全扫描

通过以上配置,可以确保在 Alibaba Cloud Linux 3 上稳定、安全地运行 Spring Boot 应用。如有进一步需求(如 Docker 容器化、Nginx 反向X_X等),可继续扩展架构。

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