在使用 Alibaba Cloud Linux 3(基于 RHEL/CentOS 的优化发行版)部署 Spring Boot 项目时,虽然系统本身稳定且性能优秀,但仍有一些关键问题需要注意,以确保应用稳定、安全、高效运行。以下是主要注意事项:
一、系统环境准备
-
Java 环境安装
- 推荐使用 OpenJDK 或 Oracle JDK(建议 Java 8/11/17 LTS 版本)。
- 使用
yum安装 OpenJDK:sudo yum install -y java-17-openjdk-devel - 验证安装:
java -version javac -version - 设置
JAVA_HOME环境变量(推荐添加到/etc/profile或用户.bashrc):export JAVA_HOME=/usr/lib/jvm/java-17-openjdk export PATH=$JAVA_HOME/bin:$PATH
-
时间与时区设置
- 确保系统时间准确,避免日志或调度异常:
timedatectl set-timezone Asia/Shanghai timedatectl set-ntp true
- 确保系统时间准确,避免日志或调度异常:
-
关闭或配置防火墙(firewalld)
- 若需开放端口(如 8080):
sudo firewall-cmd --permanent --add-port=8080/tcp sudo firewall-cmd --reload - 或根据安全策略使用安全组(云平台层面更推荐)。
- 若需开放端口(如 8080):
二、Spring Boot 应用部署方式
-
Jar 包部署(推荐)
- 将打包好的
app.jar上传至服务器。 - 启动命令示例:
nohup java -jar app.jar --spring.profiles.active=prod > app.log 2>&1 & - 建议使用
systemd管理服务(见下文)。
- 将打包好的
-
构建与上传
- 在 CI/CD 中使用 Maven/Gradle 构建:
mvn clean package -DskipTests - 使用
scp或rsync安全传输 Jar 包。
- 在 CI/CD 中使用 Maven/Gradle 构建:
三、使用 systemd 管理服务(推荐)
创建系统服务文件,实现开机自启、自动重启等。
# /etc/systemd/system/myapp.service
[Unit]
Description=My Spring Boot Application
After=syslog.target
[Service]
User=myuser
WorkingDirectory=/opt/myapp
ExecStart=/usr/bin/java -jar /opt/myapp/app.jar --spring.profiles.active=prod
SuccessExitStatus=143
Restart=always
RestartSec=10
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
四、性能与资源调优
-
JVM 参数优化
- 根据服务器内存设置堆大小:
ExecStart=/usr/bin/java -Xms512m -Xmx2g -XX:+UseG1GC -jar app.jar - 生产环境建议开启 GC 日志:
-Xlog:gc*:file=/var/log/myapp/gc.log:time
- 根据服务器内存设置堆大小:
-
文件句柄限制
- 修改
/etc/security/limits.conf:myuser soft nofile 65536 myuser hard nofile 65536 - 在
systemd服务中也可通过LimitNOFILE=设置。
- 修改
五、安全注意事项
-
不要使用 root 运行应用
- 创建专用用户:
useradd -r -s /sbin/nologin myuser chown -R myuser:myuser /opt/myapp
- 创建专用用户:
-
目录权限控制
- 应用目录仅允许必要用户读写:
chmod 750 /opt/myapp
- 应用目录仅允许必要用户读写:
-
敏感信息管理
- 避免将数据库密码等硬编码,使用环境变量或配置中心(如 Nacos、Apollo)。
- 外部化配置文件路径:
java -jar app.jar --spring.config.location=/etc/myapp/application-prod.yml
六、日志管理
-
日志输出到文件
- 使用
logback-spring.xml或log4j2配置滚动策略。 - 示例:按天分割,保留 30 天。
- 使用
-
日志轮转(logrotate)
- 配置
/etc/logrotate.d/myapp:/var/log/myapp/*.log { daily rotate 30 compress missingok notifempty copytruncate }
- 配置
七、监控与维护
-
健康检查
- 开启 Actuator 端点,用于健康检查和监控:
management: endpoints: web: exposure: include: health,info,metrics
- 开启 Actuator 端点,用于健康检查和监控:
-
集成监控工具
- Prometheus + Grafana 收集 JVM 指标。
- 使用 Alibaba Cloud ARMS 或开源方案进行 APM 监控。
-
定期更新系统
sudo yum update -y
八、网络与连接问题
- Alibaba Cloud Linux 3 默认可能启用
SELinux,若遇到连接拒绝等问题,可临时禁用测试:setenforce 0生产环境建议配置 SELinux 规则而非关闭。
总结
| 类别 | 注意事项 |
|---|---|
| Java 环境 | 正确安装 JDK,设置 JAVA_HOME |
| 部署方式 | 推荐 jar + systemd |
| 安全 | 非 root 用户运行,权限最小化 |
| 性能 | JVM 调优,文件句柄限制 |
| 日志 | 外部化配置,日志轮转 |
| 监控 | 健康检查 + 外部监控系统 |
| 系统兼容性 | Alibaba Cloud Linux 3 兼容 CentOS/RHEL,大多数操作通用 |
通过以上配置,可以确保 Spring Boot 项目在 Alibaba Cloud Linux 3 上稳定、安全、高效地运行。建议结合阿里云的 ECS、SLB、云监控等服务实现完整的生产级部署架构。
CDNK博客