服务器 Apollo 配置中心部署教程:从环境准备到验证
先判断你要解决的是哪类问题
本文针对的是最常见的服务器 Apollo 教程需求:在 Linux 服务器上把 Apollo 配置中心跑起来,让业务服务能连上它读取配置。
适合单机测试或小规模内部环境,生产多节点高可用集群不在本次范围内。
Apollo 是携程开源的分布式配置管理中心,核心作用是让配置改动能实时生效,不用重启业务服务。
它分为三个角色:Config Service 提供配置读取接口,Admin Service 负责配置修改和管理,Portal 是网页管理界面。
三者可以部署在同一台机器上,也可以分开。
开始之前,请先确认服务器满足以下条件:
- 操作系统:CentOS 7+ 或 Ubuntu 20.04+ 等常见 Linux 发行版
- JDK:8 或 11,用
java -version查看 - MySQL:5.7 或 8.0,本地或远程均可
- 内存:建议 2GB 以上,单机测试 1GB 可能吃紧
- 端口:8070(Config Service)、8080(Admin Service)、8070 和 8090(Portal)需未被占用
如果 JDK 和 MySQL 还没装,先补齐再继续。
MySQL 建议单独建库,不要和业务库混用,避免后续权限和备份混乱。
部署前的资源与目录准备
Apollo 的官方发布包可以从 GitHub Releases 获取,下载后解压即可。
这里不写死版本号,你按页面当前提供的版本选择即可。
假设放在 /opt/apollo 下,执行:
mkdir -p /opt/apollo
cd /opt/apollo
# 将下载的压缩包解压到当前目录
tar -zxvf apollo-*.tar.gz
解压后你会看到 apollo-configservice、apollo-adminservice、apollo-portal 三个目录,每个里面都有 config 和 scripts 子目录。
启动脚本在 scripts 下,配置文件在 config 下。
数据库方面,Apollo 需要两个库:ApolloConfigDB 和 ApolloPortalDB。
官方 SQL 脚本在源码的 scripts/sql 目录下,通常包含 apolloconfigdb.sql 和 apolloportaldb.sql。
导入方式:
mysql -u root -p -e "CREATE DATABASE ApolloConfigDB DEFAULT CHARACTER SET utf8mb4;"
mysql -u root -p -e "CREATE DATABASE ApolloPortalDB DEFAULT CHARACTER SET utf8mb4;"
mysql -u root -p ApolloConfigDB < apolloconfigdb.sql
mysql -u root -p ApolloPortalDB < apolloportaldb.sql
导入后建议检查一下表是否建全,重点是 ApolloConfigDB 里的 App、Cluster、Namespace 等表。
修改配置并启动三个服务
Apollo 的数据库连接信息写在每个服务的 config/application-gateway.properties 或 config/application.properties 中。
不同版本文件名可能略有差异,以实际解压结果为准。
以 Config Service 为例,编辑 apollo-configservice/config/application-gateway.properties:
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/ApolloConfigDB?characterEncoding=utf8
spring.datasource.username=apollo
spring.datasource.password=你的密码
Admin Service 和 Portal 类似,分别指向 ApolloConfigDB 和 ApolloPortalDB。
注意 Portal 还需要在 apollo-portal/config/apollo-env.properties 里配置各环境 Meta Server 地址,单机测试可以只保留 dev 环境。
启动顺序建议先 Config Service,再 Admin Service,最后 Portal:
cd /opt/apollo/apollo-configservice/scripts
./startup.sh
cd /opt/apollo/apollo-adminservice/scripts
./startup.sh
cd /opt/apollo/apollo-portal/scripts
./startup.sh
启动后可以用 tail -f /opt/apollo/apollo-configservice/logs/apollo-configservice.log 观察日志,
看到 Started ConfigServiceApplication 之类字样说明进程起来了。
验证 Apollo 是否真正可用
服务启动不等于配置能被读到,需要按下面几步核对:
- 访问
http://服务器IP:8070,Config Service 默认提供健康检查接口,能返回 JSON 即正常 - 访问
http://服务器IP:8090打开 Portal 登录页,默认账号密码通常是apollo/admin,首次登录后应尽快修改 - 在 Portal 里新建一个项目,添加一条测试配置,例如
test.key=hello - 用业务服务或 curl 请求 Config Service 的配置读取接口,确认能拿到刚才写入的值
如果 Portal 能打开但读不到配置,
重点检查 Portal 的 apollo-env.properties 里 Meta Server 地址是否指向了正确的 Config Service 端口。
容易踩坑的几个地方
端口冲突:
Config Service 默认 8080,
Admin Service 默认 8090,
Portal 默认 8070,
如果和已有服务冲突,
需要在启动脚本或配置里改端口,
并同步修改 Meta Server 地址。
数据库时区问题:MySQL 连接串建议加上 serverTimezone=Asia/Shanghai,否则可能出现时间字段写入异常。
防火墙未放行:CentOS 用 firewall-cmd --add-port=8070/tcp --permanent 后记得 firewall-cmd --reload;
云服务器还要在安全组里放行对应端口。
内存不足:Apollo 三个 Java 进程同时跑,内存不够会频繁 OOM。
启动脚本里通常有 JAVA_OPTS 可以调小堆内存,但不要低于 256MB。
用 root 跑服务:建议单独建一个普通用户来运行 Apollo,降低误操作和权限风险。
常见疑问
Apollo 和 Nacos 配置中心有什么区别?
两者都能做配置管理。Apollo 的配置发布、灰度、权限模型相对成熟,界面偏管理后台风格;Nacos 同时提供注册中心和配置中心,集成度更高。选哪个主要看你团队已有的技术栈和运维习惯,没有绝对优劣。
单机部署能直接上生产吗?
不建议。单机没有冗余,任意一个进程挂掉都会影响配置读取。生产环境至少要把 Config Service 和 Admin Service 做多节点,Portal 视管理需求决定是否多节点。
配置改了业务服务没生效怎么办?
先确认业务服务里是否用了 Apollo 客户端并监听了对应 Namespace,再检查发布是否成功、客户端是否连到了正确的环境。可以在客户端日志里搜索 Apollo 相关关键字定位。
数据库密码怎么管理更安全?
不要把明文密码提交到代码仓库。可以用环境变量或配置中心自身的加密能力,至少保证配置文件权限为 600,且只有运行 Apollo 的用户可读。
收尾建议
完成以上步骤后,你手里应该有一个能登录 Portal、能发布配置、能被客户端读取的 Apollo 单机环境。
下一步可以根据团队规模决定是否拆分部署、加监控告警,以及把数据库换成独立实例。
遇到启动失败时,优先看对应服务的日志文件,大部分问题在日志里都有明确提示。