在使用 Alibaba Cloud Linux 3 部署 Spring Boot 项目时,虽然系统本身是基于 RHEL/CentOS 的稳定发行版并针对阿里云环境做了优化,但仍有一些关键点需要注意,以确保应用稳定、安全、高效运行。以下是部署过程中需要重点关注的问题:
1. 系统环境准备
-
Java 版本兼容性:
- 确保安装与 Spring Boot 项目匹配的 JDK(如 OpenJDK 8/11/17)。
- 推荐使用
yum或dnf安装 OpenJDK,例如:sudo yum install java-1.8.0-openjdk-devel - 验证 Java 版本:
java -version和javac -version。
-
设置 JAVA_HOME 环境变量:
- 编辑
/etc/profile或用户.bashrc文件,添加:export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk export PATH=$JAVA_HOME/bin:$PATH - 执行
source /etc/profile生效。
- 编辑
2. 防火墙与安全组配置
- 开放端口:
- 默认 Spring Boot 使用 8080 端口,需在 Alibaba Cloud 控制台配置 安全组规则,允许外部访问该端口。
- 在系统层面,若启用
firewalld,需放行端口:sudo firewall-cmd --permanent --add-port=8080/tcp sudo firewall-cmd --reload
3. 系统资源与性能调优
-
内存管理:
- 合理设置 JVM 堆内存(避免 OOM),例如启动参数:
java -Xms512m -Xmx1g -jar your-app.jar - 根据 ECS 实例规格分配合理内存,避免过度占用导致系统不稳定。
- 合理设置 JVM 堆内存(避免 OOM),例如启动参数:
-
文件句柄限制:
- 高并发场景下可能遇到“too many open files”,需调整系统限制:
ulimit -n 65536 - 永久修改:编辑
/etc/security/limits.conf: - soft nofile 65536
- hard nofile 65536
- 高并发场景下可能遇到“too many open files”,需调整系统限制:
4. 进程守护与服务化
-
使用 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 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
5. 文件权限与目录结构
- 应用 jar 包和日志目录应有合适的读写权限。
- 推荐将应用部署在
/opt/myapp或/home/myuser/app等目录。 - 日志路径建议外挂或指向独立磁盘,避免占满系统盘。
6. 时间与时区设置
- Alibaba Cloud Linux 默认使用 UTC 时间,Spring Boot 可能依赖本地时区。
- 设置正确时区:
sudo timedatectl set-timezone Asia/Shanghai - 在 Spring Boot 中也可通过 JVM 参数指定:
-Duser.timezone=GMT+08:00
7. 网络与 DNS 配置
- 检查
/etc/resolv.conf是否有有效 DNS,避免因域名解析失败导致外部 API 调用超时。 - 若使用 VPC 内网,确保 ECS 实例网络策略正确。
8. 安全加固
- 最小权限原则:不要用 root 用户运行 Spring Boot 应用。
- 禁用不必要的服务:减少攻击面。
- 定期更新系统:
sudo yum update - 启用阿里云安骑士(云安全中心)进行漏洞扫描和入侵检测。
9. 监控与日志
- 将日志输出到文件并轮转(可使用 logback 或 log4j2 配置)。
- 结合阿里云 SLS(日志服务)收集日志。
- 使用云监控或 Prometheus + Grafana 监控 JVM 和应用指标。
10. 容器化部署(可选)
- 推荐使用 Docker + Alibaba Container Registry(ACR)+ ACK(Kubernetes)进行标准化部署。
- 若使用容器,注意基础镜像兼容性(Alibaba Cloud Linux 3 适配的镜像)。
总结
| 类别 | 注意事项 |
|---|---|
| 环境 | 正确安装 JDK,设置 JAVA_HOME |
| 安全 | 开放安全组,配置防火墙,非 root 运行 |
| 服务 | 使用 systemd 托管进程 |
| 性能 | 调整 JVM 参数、文件句柄限制 |
| 日志 | 集中管理,避免写满磁盘 |
| 时区 | 设置为 Asia/Shanghai |
| 更新 | 定期系统更新与安全补丁 |
通过以上措施,可以确保 Spring Boot 项目在 Alibaba Cloud Linux 3 上稳定、安全、高效地运行。建议结合阿里云最佳实践文档和 Spring Boot 官方部署指南进行综合配置。
CLOUD云枢