在使用 Alibaba Cloud Linux 3 部署 Spring Boot 项目时,虽然该系统基于 CentOS/RHEL 衍生并优化了云环境性能,但仍有一些需要注意的关键问题。以下是部署过程中的常见注意事项和最佳实践:
一、系统环境准备
-
确认系统版本与兼容性
- Alibaba Cloud Linux 3 是基于 RHEL 8 构建的,内核较新,支持现代 Java 版本。
- 确保你的 Spring Boot 项目使用的 Java 版本(如 JDK 8/11/17)与系统兼容。
-
安装合适的 JDK
- 推荐使用 OpenJDK 或 Oracle JDK,建议从官方或可信源安装:
sudo dnf install java-17-openjdk-devel -y - 验证安装:
java -version javac -version
- 推荐使用 OpenJDK 或 Oracle JDK,建议从官方或可信源安装:
-
配置 JAVA_HOME 环境变量
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk export PATH=$JAVA_HOME/bin:$PATH建议将上述内容写入
/etc/profile或用户~/.bashrc文件中。
二、项目构建与打包
-
使用 Maven/Gradle 打包为可执行 JAR
- 确保
pom.xml中包含 Spring Boot Maven 插件,生成 fat jar:<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> - 执行打包:
mvn clean package
- 确保
-
确保端口、配置文件适配生产环境
- 使用
application-prod.yml或通过环境变量注入配置(推荐)。 - 数据库连接、Redis、MQ 等地址应指向生产环境。
- 使用
三、部署方式选择
-
直接运行 JAR(适用于测试或单机)
nohup java -jar your-app.jar --spring.profiles.active=prod > app.log 2>&1 &- 注意:避免使用前台运行,防止终端关闭中断服务。
-
使用 systemd 管理服务(推荐用于生产)
创建服务文件/etc/systemd/system/myapp.service:[Unit] Description=My Spring Boot Application After=network.target [Service] Type=simple User=appuser ExecStart=/usr/bin/java -jar /opt/myapp/app.jar --spring.profiles.active=prod Restart=always StandardOutput=journal StandardError=journal [Install] WantedBy=multi-user.target启用并启动服务:
sudo systemctl daemon-reexec sudo systemctl enable myapp sudo systemctl start myapp
四、安全与权限
-
不要以 root 用户运行应用
- 创建专用用户运行 Spring Boot 应用:
sudo useradd -m -s /bin/bash appuser sudo chown -R appuser:appuser /opt/myapp/
- 创建专用用户运行 Spring Boot 应用:
-
防火墙配置
- Alibaba Cloud Linux 默认使用
firewalld:sudo firewall-cmd --permanent --add-port=8080/tcp sudo firewall-cmd --reload - 同时需在阿里云控制台的安全组中开放相应端口。
- Alibaba Cloud Linux 默认使用
-
SELinux 注意事项
- Alibaba Cloud Linux 3 默认启用 SELinux,若遇到权限问题:
getenforce # 查看状态 setenforce 0 # 临时禁用(不推荐生产) - 更佳做法是配置正确的 SELinux 策略,而非直接关闭。
- Alibaba Cloud Linux 3 默认启用 SELinux,若遇到权限问题:
五、性能与监控
-
JVM 参数调优
- 根据服务器内存设置合理堆大小:
-Xms512m -Xmx2g -XX:+UseG1GC - 添加到启动命令中:
java -Xms512m -Xmx2g -jar app.jar
- 根据服务器内存设置合理堆大小:
-
日志管理
- 将日志输出到文件,并使用 logrotate 管理:
sudo vim /etc/logrotate.d/myapp - 示例配置:
/opt/myapp/logs/*.log { daily rotate 7 compress missingok notifempty }
- 将日志输出到文件,并使用 logrotate 管理:
-
监控与告警
- 集成 Prometheus + Grafana 监控 JVM 和业务指标。
- 使用阿里云 ARMS 或 CloudMonitor 进行应用性能监控。
六、网络与反向(可选)
-
使用 Nginx 反向
-
安装 Nginx:
sudo dnf install nginx -y -
配置反向
/etc/nginx/conf.d/myapp.conf:server { listen 80; server_name your-domain.com; location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } -
启动 Nginx:
sudo systemctl enable nginx sudo systemctl start nginx
-
七、其他注意事项
| 项目 | 建议 |
|---|---|
| 时间同步 | 确保系统时间准确,使用 chronyd 自动同步 |
| 系统更新 | 定期执行 sudo dnf update 获取安全补丁 |
| 备份策略 | 定期备份应用 JAR、配置文件和数据库 |
| 域名与 HTTPS | 使用 Nginx + SSL 证书(Let’s Encrypt)实现 HTTPS |
总结
在 Alibaba Cloud Linux 3 上部署 Spring Boot 项目,核心要点包括:
✅ 正确安装 JDK 并配置环境
✅ 使用 systemd 管理服务生命周期
✅ 遵循最小权限原则(非 root 运行)
✅ 开放防火墙和安全组端口
✅ 合理配置 JVM 和日志
✅ 考虑使用反向和 HTTPS
只要遵循上述规范,Spring Boot 项目可以在 Alibaba Cloud Linux 3 上稳定高效运行。
如有容器化需求,也可考虑使用 Docker + Alibaba 容器服务(ACK),进一步提升部署灵活性。
CLOUD技术笔记