阿里云CentOS服务器部署多个SpringBoot应用需要配置哪些环境?

在阿里云 CentOS 服务器上部署多个 Spring Boot 应用,需要配置以下环境和进行相应设置,以确保应用稳定运行、互不干扰,并具备良好的可维护性。以下是详细的配置清单和建议:


一、基础环境准备

1. 安装 Java 环境(JDK)

Spring Boot 应用依赖 Java 运行环境。

# 查看是否已安装
java -version

# 推荐使用 OpenJDK 或 Oracle JDK(以 OpenJDK 为例)
sudo yum install -y java-1.8.0-openjdk-devel

# 或者安装较新版本(如 JDK 11/17)
sudo yum install -y java-11-openjdk-devel

✅ 建议:生产环境统一使用 LTS 版本(如 JDK 8、11、17)。

2. 配置 JAVA_HOME 环境变量

编辑 /etc/profile 文件:

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

执行 source /etc/profile 使配置生效。


二、应用部署方式选择

通常有以下几种部署方式:

方式 说明
JAR 包直接运行 最常见,每个应用打包为独立的 JAR
使用脚本管理 编写启动/停止脚本
使用 systemd 管理 推荐,实现开机自启、日志管理等

三、端口规划与隔离

每个 Spring Boot 应用必须监听不同的端口(默认 8080),避免冲突。

例如:

应用 端口
App1 8081
App2 8082
App3 8083

application.yml 中配置:

server:
  port: 8081

四、创建专用用户(安全建议)

不要使用 root 用户运行应用。

# 创建用户
sudo useradd -m springboot

# 设置密码(可选)
sudo passwd springboot

# 切换用户
su - springboot

将每个应用部署到该用户的家目录下,如:

/home/springboot/app1/app1.jar
/home/springboot/app2/app2.jar

五、使用 systemd 管理多个应用(推荐)

为每个 Spring Boot 应用创建一个 systemd 服务文件,实现开机自启、自动重启、日志记录。

示例:创建 app1.service

# /etc/systemd/system/app1.service
[Unit]
Description=Spring Boot App1
After=syslog.target

[Service]
User=springboot
WorkingDirectory=/home/springboot/app1
ExecStart=/usr/bin/java -jar /home/springboot/app1/app1.jar
SuccessExitStatus=143
Restart=always
RestartSec=10

StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target

启用服务

sudo systemctl daemon-reload
sudo systemctl enable app1.service
sudo systemctl start app1.service

重复此步骤为 app2、app3 创建 app2.serviceapp3.service


六、防火墙配置(开放端口)

CentOS 默认使用 firewalld。

# 开放端口(如 8081)
sudo firewall-cmd --permanent --add-port=8081/tcp
sudo firewall-cmd --reload

或关闭防火墙(仅测试环境):

sudo systemctl stop firewalld
sudo systemctl disable firewalld

七、反向X_X(可选,推荐 Nginx)

若希望统一通过域名访问,可使用 Nginx 反向X_X。

安装 Nginx

sudo yum install -y nginx
sudo systemctl enable nginx
sudo systemctl start nginx

配置反向X_X(示例)

# /etc/nginx/conf.d/app1.conf
server {
    listen 80;
    server_name app1.yourdomain.com;

    location / {
        proxy_pass http://127.0.0.1:8081;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

重启 Nginx:

sudo nginx -t && sudo systemctl reload nginx

八、日志管理

Spring Boot 默认输出日志到控制台,systemd 会将其记录到 journal。

查看日志:

sudo journalctl -u app1.service -f

也可在 application.yml 中配置日志输出到文件:

logging:
  file:
    name: /home/springboot/app1/logs/app.log
  level:
    root: INFO

结合 logrotate 进行日志轮转。


九、监控与健康检查

  • 使用 Spring Boot Actuator 提供健康检查接口。
  • 配置 Prometheus + Grafana 监控 JVM 和应用状态。
  • 使用 curl http://localhost:8081/actuator/health 检查应用状态。

十、安全加固(生产环境)

  • 更新系统:sudo yum update
  • 配置 SSH 密钥登录,禁用密码
  • 使用安全组限制公网访问(阿里云控制台)
  • 定期备份应用和数据

总结:部署 checklist

项目 是否完成
安装 JDK 并配置 JAVA_HOME
创建专用用户运行应用
每个应用使用不同端口
使用 systemd 管理服务
配置防火墙开放端口
使用 Nginx 反向X_X(可选)
配置日志输出与轮转
启用 Actuator 健康检查
安全加固(SSH、安全组等)

最佳实践建议

  • 每个应用独立部署、独立端口、独立服务管理。
  • 使用 systemd + Nginx 是生产环境的标准组合。
  • 自动化部署可结合 Jenkins、Shell 脚本或 Ansible。

如有需要,我可以提供完整的部署脚本模板或 systemd 服务生成工具。

未经允许不得转载:CLOUD云枢 » 阿里云CentOS服务器部署多个SpringBoot应用需要配置哪些环境?