ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Apollo Quick Start 快速上手指南:五分钟在本地启动 Apollo 配置中心(all-in-one 单机部署)

Apollo Quick Start 快速上手指南:五分钟在本地启动 Apollo 配置中心(all-in-one 单机部署) Apollo Quick Start 快速上手指南五分钟在本地启动 Apollo 配置中心all-in-one 单机部署【免费下载链接】apolloApollo is a reliable configuration management system suitable for microservice configuration management scenarios.项目地址: https://gitcode.com/gh_mirrors/apoll/apollo导读本文是 docs/en/deployment/quick-start.md 的完整中文解读与源码级深化版面向希望在本地快速体验 Apollo 配置中心的开发者。通过阅读本文你将掌握环境准备Java 17/MySQL 5.6.5、Quick Start 安装包的获取与自定义打包、以 H2 内存库 / H2 文件库 / MySQL 三种方式一键启动 Apollo以及通过官方 Demo 客户端完成创建项目 → 配置发布 → 客户端热更新的完整闭环验证从而对 Apollo 的核心链路建立直观认识。重要提示Quick Start 只用于本地体验与功能演示切勿用于生产环境也不要将 8070/8080/8090 三个端口暴露到公网。生产部署请参照 distributed-deployment-guide。一、准备工作1.1 Java 运行环境组件版本要求Apollo 服务端Java 17Apollo 客户端Java 1.8需要注意Quick Start 的 all-in-one 安装包是自启动 jar 包内含全部依赖 jar 与内嵌 Tomcat 容器因此服务端必须使用较新的 JDK。若你的业务应用运行在 Java 1.7 环境应选用 1.x 版本的 apollo-client例如 1.9.1。配置完成后用如下命令验证java -version示例输出java version 17.0.14 Java(TM) SE Runtime Environment (build 17.0.147) Java HotSpot(TM) 64-Bit Server VM (build 17.0.147, mixed mode)Windows 用户请务必确认JAVA_HOME环境变量已正确设置。1.2 MySQL 版本要求如果计划使用 H2 内存数据库 / H2 文件数据库则无需安装 MySQL可直接跳过本节。若使用 MySQL要求版本5.6.5。原因是 Apollo 的表结构在多处使用timestamp类型的默认声明如DEFAULT CURRENT_TIMESTAMP、ON UPDATE CURRENT_TIMESTAMP参见 apolloconfigdb.sql 中App表的定义这一语法特性从 MySQL 5.6.5 起才可用。连接 MySQL 后可用如下命令检查版本SHOW VARIABLES WHERE Variable_name version;Variable_nameValueversion5.7.111.3 下载 Quick Start 安装包官方提供了现成的 Quick Start 安装包约 50M 左右下载后即可直接使用省去编译打包过程。安装包之所以较大是因为它是一个自启动 jar 包包含了所有依赖 jar 与内嵌 Tomcat 容器。获取方式任选其一GitHubclone 或下载 apollo-quick-start 项目。注意该仓库与主仓库分离地址是 https://github.com/apolloconfig/apollo-quick-start。百度网盘通过官方提供的网盘链接下载提取码见官方文档解压apollo-quick-start.zip到本地。1.3.1 手动打包 Quick Start 安装包Quick Start 仅用于本地测试一般无需自行打包但若你修改了源码想重新打包可参考以下步骤修改apollo-configservice、apollo-adminservice、apollo-portal三个模块的pom.xml注释掉spring-boot-maven-plugin和maven-assembly-plugin在仓库根目录执行mvn clean package -pl apollo-assembly -am -DskipTeststrue将apollo-assembly/target下的 jar 包复制出来并重命名为apollo-all-in-one.jar。从仓库源码看apollo-assembly/pom.xml 聚合了apollo-configservice、apollo-adminservice、apollo-portal三个模块并通过 maven-resources-plugin 把scripts/sql/profiles下的 H2 与 MySQL 初始化 SQL 一并复制进包内META-INF/sql/profiles这正是 all-in-one 包能够自动初始化数据库的基础。ApolloApplication.java 依次启动 commonContext、ConfigService、AdminService、Portal 四个 Spring 上下文完成三个服务在同进程内的聚合运行。二、初始化与启动注意事项必读Apollo 服务端进程需要占用8070Portal、8080ConfigService、8090AdminService三个端口启动前请确认这三个端口未被占用脚本中SPRING_PROFILES_ACTIVE的三个 profile 含义如下github必需 profile对应官方构建包的默认数据库配置组database-discovery指定使用数据库服务发现以数据库作为服务注册中心替代默认的 Eureka 发现auth为 Portal 提供基于 Spring Security 的简单认证若不需要认证或采用其他认证方式可移除Quick Start 仅供本地测试请勿将 8070/8080/8090 暴露到公网。以下启动命令默认关闭 H2 ConsoleSPRING_H2_CONSOLE_ENABLEDfalse如本地调试确实需要可自行调整该变量但同样要避免外网访问。从源码看database-discoveryprofile 对应 DatabaseDiscoveryService.java使用Profile(database-discovery)条件装配它通过DatabaseDiscoveryClient从数据库注册表中读取 ConfigService 实例列表各模块 application.properties 中spring.profiles.group.github mysql则把github与数据库类型 profile 关联起来。2.1 使用 H2 内存数据库自动初始化无需任何额外配置直接启动即可。但要注意使用内存数据库时进程重启后所有数据都会丢失。export SPRING_PROFILES_ACTIVEgithub,database-discovery,auth export SPRING_H2_CONSOLE_ENABLEDfalse unset SPRING_SQL_CONFIG_INIT_MODE unset SPRING_SQL_PORTAL_INIT_MODE java -jar apollo-all-in-one.jar2.2 使用 H2 文件数据库自动初始化H2 文件模式将数据持久化到本地文件重启后数据保留。脚本中~/apollo/apollo-config-db与~/apollo/apollo-portal-db可替换为任意自定义路径但需确保该路径有读写权限。2.2.1 首次启动初始化首次启动需设置SPRING_SQL_CONFIG_INIT_MODEalways与SPRING_SQL_PORTAL_INIT_MODEalways触发建库建表export SPRING_PROFILES_ACTIVEgithub,database-discovery,auth export SPRING_H2_CONSOLE_ENABLEDfalse # config db export SPRING_SQL_CONFIG_INIT_MODEalways export SPRING_CONFIG_DATASOURCE_URLjdbc:h2:file:~/apollo/apollo-config-db;modemysql;DB_CLOSE_ON_EXITFALSE;DB_CLOSE_DELAY-1;BUILTIN_ALIAS_OVERRIDETRUE;DATABASE_TO_UPPERFALSE # portal db export SPRING_SQL_PORTAL_INIT_MODEalways export SPRING_PORTAL_DATASOURCE_URLjdbc:h2:file:~/apollo/apollo-portal-db;modemysql;DB_CLOSE_ON_EXITFALSE;DB_CLOSE_DELAY-1;BUILTIN_ALIAS_OVERRIDETRUE;DATABASE_TO_UPPERFALSE java -jar apollo-all-in-one.jarURL 参数说明modemysql以 MySQL 兼容模式运行 H2保证与 Apollo 的 MySQL 建表语句兼容DB_CLOSE_ON_EXITFALSE与DB_CLOSE_DELAY-1避免 JVM 退出即销毁、保证文件数据库可跨进程复用BUILTIN_ALIAS_OVERRIDETRUE与DATABASE_TO_UPPERFALSE确保函数别名与小写表名等行为与 MySQL 对齐。2.2.2 后续启动跳过初始化后续启动需移除两个 INIT_MODE 变量避免重复初始化export SPRING_PROFILES_ACTIVEgithub,database-discovery,auth export SPRING_H2_CONSOLE_ENABLEDfalse # config db unset SPRING_SQL_CONFIG_INIT_MODE export SPRING_CONFIG_DATASOURCE_URLjdbc:h2:file:~/apollo/apollo-config-db;modemysql;DB_CLOSE_ON_EXITFALSE;DB_CLOSE_DELAY-1;BUILTIN_ALIAS_OVERRIDETRUE;DATABASE_TO_UPPERFALSE # portal db unset SPRING_SQL_PORTAL_INIT_MODE export SPRING_PORTAL_DATASOURCE_URLjdbc:h2:file:~/apollo/apollo-portal-db;modemysql;DB_CLOSE_ON_EXITFALSE;DB_CLOSE_DELAY-1;BUILTIN_ALIAS_OVERRIDETRUE;DATABASE_TO_UPPERFALSE java -jar apollo-all-in-one.jar2.3 使用 MySQL自动初始化脚本中your-mysql-server:3306需替换为实际的 MySQL 地址与端口ApolloConfigDB、ApolloPortalDB替换为实际库名apollo-username、apollo-password填实际的用户名和密码。2.3.1 首次启动自动建库建表export SPRING_PROFILES_ACTIVEgithub,database-discovery,auth export SPRING_H2_CONSOLE_ENABLEDfalse # config db export SPRING_SQL_CONFIG_INIT_MODEalways export SPRING_CONFIG_DATASOURCE_URLjdbc:mysql://your-mysql-server:3306/ApolloConfigDB?useUnicodetruecharacterEncodingUTF8 export SPRING_CONFIG_DATASOURCE_USERNAMEapollo-username export SPRING_CONFIG_DATASOURCE_PASSWORDapollo-password # portal db export SPRING_SQL_PORTAL_INIT_MODEalways export SPRING_PORTAL_DATASOURCE_URLjdbc:mysql://your-mysql-server:3306/ApolloPortalDB?useUnicodetruecharacterEncodingUTF8 export SPRING_PORTAL_DATASOURCE_USERNAMEapollo-username export SPRING_PORTAL_DATASOURCE_PASSWORDapollo-password java -jar apollo-all-in-one.jar2.3.2 后续启动跳过初始化export SPRING_PROFILES_ACTIVEgithub,database-discovery,auth export SPRING_H2_CONSOLE_ENABLEDfalse # config db unset SPRING_SQL_CONFIG_INIT_MODE export SPRING_CONFIG_DATASOURCE_URLjdbc:mysql://your-mysql-server:3306/ApolloConfigDB?useUnicodetruecharacterEncodingUTF8 export SPRING_CONFIG_DATASOURCE_USERNAMEapollo-username export SPRING_CONFIG_DATASOURCE_PASSWORDapollo-password # portal db unset SPRING_SQL_PORTAL_INIT_MODE export SPRING_PORTAL_DATASOURCE_URLjdbc:mysql://your-mysql-server:3306/ApolloPortalDB?useUnicodetruecharacterEncodingUTF8 export SPRING_PORTAL_DATASOURCE_USERNAMEapollo-username export SPRING_PORTAL_DATASOURCE_PASSWORDapollo-password java -jar apollo-all-in-one.jar2.4 使用 MySQL手动初始化2.4.1 手动初始化两个数据库在启动前通过任意 MySQL 客户端分别导入官方初始化脚本导入 apolloconfigdb.sql 创建ApolloConfigDBConfigService/AdminService 使用的配置库包含App、Cluster、Namespace、Item、Release等核心表导入 apolloportaldb.sql 创建ApolloPortalDBPortal 使用的管理库包含App、Role、UserRole、Permission等权限相关表。两个脚本开头均有CREATE DATABASE IF NOT EXISTS ... DEFAULT CHARACTER SET utf8mb4语句会自动建库。仓库中 h2-default 与 mysql-database-not-specified 等目录还提供了 H2 与未指定库名的变体。2.4.2 启动手动初始化后不要再设置 INIT_MODE 变量直接启动export SPRING_PROFILES_ACTIVEgithub,database-discovery,auth export SPRING_H2_CONSOLE_ENABLEDfalse # config db unset SPRING_SQL_CONFIG_INIT_MODE export SPRING_CONFIG_DATASOURCE_URLjdbc:mysql://your-mysql-server:3306/ApolloConfigDB?useUnicodetruecharacterEncodingUTF8 export SPRING_CONFIG_DATASOURCE_USERNAMEapollo-username export SPRING_CONFIG_DATASOURCE_PASSWORDapollo-password # portal db unset SPRING_SQL_PORTAL_INIT_MODE export SPRING_PORTAL_DATASOURCE_URLjdbc:mysql://your-mysql-server:3306/ApolloPortalDB?useUnicodetruecharacterEncodingUTF8 export SPRING_PORTAL_DATASOURCE_USERNAMEapollo-username export SPRING_PORTAL_DATASOURCE_PASSWORDapollo-password java -jar apollo-all-in-one.jar三、注意事项与边界Quick Start 仅用于快速体验 Apollo生产环境请参照 distributed-deployment-guideQuick Start 不支持新增环境Environment多环境能力只能通过分布式部署实现详见上述指南。四、使用 Apollo 配置中心4.1 使用示例项目SampleApp4.1.1 初始化示例配置打开 http://localhost:8070。Quick Start 集成了基于 Spring Security 的简单认证更多信息参见 Portal 实现用户登录功能 中的Implementation 1Apollo 自带的 Spring Security 简单认证。输入用户名apollo、密码admin登录。点击创建项目填写SampleApp信息并提交。进入 SampleApp 的配置界面点击添加配置项填写timeout并提交。点击发布按钮填写发布信息如发布备注、发布人完成发布。4.1.2 运行客户端程序官方提供了一个简单的 Demo 客户端用户输入一个 key 的名称程序输出该 key 对应的值若 key 不存在则输出undefined同时客户端会监听配置变更事件一旦配置发生变化即输出变更信息。运行./demo.sh client启动 Demo 客户端忽略之前的调试输出会看到如下提示Apollo Config Demo. Please input key to get the value. Input quit to exit. 输入timeout输出 timeout Loading key : timeout with value: 1000若客户端运行遇到问题可修改client/log4j2.xml中的日志级别为 DEBUG 查看详细日志logger namecom.ctrip.framework.apollo additivityfalse leveltrace AppenderRef refAsync levelDEBUG/ /logger4.1.3 修改配置并发布回到配置界面把timeout的值改为2000再次发布。4.1.4 客户端查看修改后的值若客户端仍在运行配置发布后它会监听到变更事件并输出Changes for namespace application Change - key: timeout, oldValue: 1000, newValue: 2000, changeType: MODIFIED再次输入timeout可看到新值 timeout Loading key : timeout with value: 2000这一过程直观展示了 Apollo 配置发布 → 客户端长连接实时感知变更 → 本地缓存更新的核心机制。4.2 使用新建项目4.2.1 应用接入 Apollo在 Portal 中新建项目后应用接入 Apollo 的具体步骤参见 Java 应用接入指南在应用中引入apollo-client依赖、配置app.id、指定apollo.meta服务地址等。4.2.2 运行客户端程序由于换用了新项目客户端需要修改appId信息编辑client/META-INF/app.properties把app.id改为你新建项目的 AppIdapp.idyour appId然后运行./demo.sh client启动 Demo 客户端即可从新建项目中读取配置。结语至此你已经完成了 Apollo 配置中心的本地快速体验从环境准备、安装包获取到 H2/MySQL 三种数据源模式的启动与初始化再到通过官方 Demo 完成创建项目 → 发布配置 → 客户端热更新的完整闭环。这套流程是理解 Apollo 架构Portal/ConfigService/AdminService 三服务协作、客户端长连接与本地缓存机制的捷径当需要支撑真实业务时请转入 分布式部署指南按模块拆分部署并配置多环境能力。【免费下载链接】apolloApollo is a reliable configuration management system suitable for microservice configuration management scenarios.项目地址: https://gitcode.com/gh_mirrors/apoll/apollo创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表