在使用 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
- 推荐使用 OpenJDK 或 Oracle JDK。Alibaba Cloud Linux 3 默认支持
- 环境变量设置:
- 设置
JAVA_HOME和PATH: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. 文件系统与磁盘
- 确保应用目录有足够空间,建议将日志、上传文件等放在独立挂载的磁盘。
- 使用
xfs或ext4文件系统,性能稳定。
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 应用在生产环境中稳定、高效运行。
CLOUD云计算