apollo在linux下能跑起来的核心是:数据库先配好、jvm和环境变量别漏、服务必须按configservice→adminservice→portal顺序启动;90%失败源于mysql认证插件不兼容、java_home未生效或configservice注册错误网卡ip。

$JAVA_HOME 没生效、或 configservice 注册了错误网卡 IP。
MySQL 8.0+ 连不上?先改认证插件再导入 SQL
报错 Client does not support authentication protocol 不是密码错了,是驱动不认 MySQL 8.0 默认的 caching_sha2_password 插件。
- 用 root 登录 MySQL 后立刻执行:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password'; - 必须先执行这条,再导入
apolloconfigdb.sql和apolloportaldb.sql - 两个库不能混:
ApolloConfigDB给configservice和adminservice共用;ApolloPortalDB单独给portal,少一个 portal 就打不开 - 密码里不能有空格,否则
spring.datasource.password解析失败,日志只显示Connection refused,实际是连接池根本没建起来
Java 环境和 JVM 参数必须显式控制
java -version 显示正常 ≠ Apollo 能用。启动脚本依赖 $JAVA_HOME,而它经常没配或配错路径。
- 运行
echo $JAVA_HOME,确认输出是类似/usr/lib/jvm/java-11-openjdk-amd64的真实路径,且该路径下存在/bin/java - 在
/etc/profile末尾加:export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64,然后source /etc/profile - 对低配机器(如 2核4G),务必在各服务的
startup.sh里调 JVM 参数:-Xms256m -Xmx256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m - Portal 内存吃得多,建议单独给
-Xms512m -Xmx512m,否则容易 OOM 导致白屏
application-github.properties 配置必须严格匹配环境
这个文件在 apollo-configservice/conf/ 和 apollo-adminservice/conf/ 各一份,内容相似但作用不同。最容易栽在三个地方:
-
spring.datasource.url必须指向你刚建好的ApolloConfigDB,端口、库名、参数(如useSSL=false&characterEncoding=utf8)一个都不能少 -
eureka.service.url必须写成完整地址,例如http://192.168.1.100:8080/eureka/,不能只写 IP 或省略协议 -
apollo.profile必须显式设为github,否则 Spring Boot 读不到这个配置文件,直接 fallback 到空配置,服务起得来但连不上 Eureka
服务必须按 configservice → adminservice → portal 顺序启动
Portal 启动时会调 adminservice 的 API 获取应用列表,adminservice 又依赖 configservice 提供的元数据服务。顺序错或中间断掉,后续全挂。
- 启动前检查网卡:如果机器有
docker0或veth*,configservice默认注册 docker 网段 IP,客户端连不上。在startup.sh的 JVM 参数里加:-Dspring.cloud.inetutils.ignoredInterfaces=docker0,veth.* - 验证
configservice是否注册成功:curl http://127.0.0.1:8080/eureka/apps应返回 XML 或 JSON,含configservice实例信息;返回空或 404 就说明注册失败 - 三个服务的端口默认是
8080(config)、8090(admin)、8070(portal),若被占用,必须统一改startup.sh里的SERVER_PORT和配置文件中的server.port











