NIUCLOUD是一款SaaS管理后台框架多应用插件+云编译。上千名开发者、服务商正在积极拥抱开发者生态。欢迎开发者们免费入驻。一起助力发展! 广告
## 一、单机部署 笔者在仔细研究了apollo的部署架构之后,发现专门进行单机安装的讲解意义不大。因为apollo本身就是使用Spring Cloud开发的,它的服务的高可用设计都是基于我们之前讲过的“服务注册与发现”。 ![](https://img.kancloud.cn/2d/fd/2dfdc34ade36b6ef31c8269f5e8b9f9d_755x585.png) * config-service和adminservice的部署: * 单机安装就是服务部署到同一主机上,启动一个实例,向eureka(apollo的config-service本身)注册一次 * 分布式安装就是服务部署到不同主机上,每个服务启动多个实例,向eureka(apollo的config-service本身)注册多次 * 服务注册中心的**portal界面应用本身不需要进行集群高可用部署**,因为它就是一个web页面,供给团队内部进行配置管理使用的。即使挂掉了也没有很大关系,也不影响线上服务的正常运行。当然如果你希望部署多个也是可以的,启动多个实例就可以了。 所以单机安装和分布式安装的内容差异极小,**我们就直接讲解“分布式部署”**。另外,apollo官方专门在github上开辟了一个项目:[apollo-build-scripts](https://github.com/nobodyiam/apollo-build-scripts),该项目包含了进行apollo部署所需的脚本。通常安装apollo的单机模式有两种方法,大家可以去参考一下: * [常规单机部署方式(官方文档)](https://github.com/ctripcorp/apollo/wiki/Quick-Start) * [Docker的单机部署方式(官方文档)](https://github.com/ctripcorp/apollo/wiki/Apollo-Quick-Start-Docker%E9%83%A8%E7%BD%B2) > 但笔者觉得用这种封装好的脚本学习部署,反而容易对初学者造成困扰,不易于理解。总之,见仁见智吧! ## 二、安装前的准备工作 ### 基础软件版本要求 * Java版本最低要求 * Apollo服务端:1.8+ * Apollo客户端:1.7+ * MySQL版本要求:5.6.5+ Apollo的表结构对`timestamp`使用了多个default声明,所以需要5.6.5以上版本。 mysql版本检查命令如下: ~~~ SHOW VARIABLES WHERE Variable_name = 'version'; ~~~ ### 下载apollo安装包 [https://github.com/ctripcorp/apollo/releases](https://github.com/ctripcorp/apollo/releases) ![](https://img.kancloud.cn/35/20/352097ff7708c18f8e718c25f162192e_844x269.png) 可以笼统的认为: * portal就是apollo配置管理的“脸面”,WEB管理界面。portal一般是要部署在生产环境主机上的。 * config-service和admin-service就是“环境管理服务”。生产环境部署一套、测试环境部署一套、研发环境部署一套…… ## 二、portal安装步骤 ### 2.1 创建数据库 Apollo Portal有自己的数据库`ApolloPortalDB`,官方把数据库、表的创建和样例数据都分别准备了sql文件,只需要导入数据库即可。 * 管理员账号执行初始化SQL:[sql/apolloportaldb.sql](https://github.com/nobodyiam/apollo-build-scripts/blob/master/sql/apolloportaldb.sql),包含建库、建表及示例数据 ~~~ # 用管理员账号登录mysql之后执行命令,创建数据库、建表及插入示例数据。 mysql > source 你的SQL所在的linux文件路径/apolloportaldb.sql ~~~ 虽然我们用管理员账户创建数据库,但是我们一般不用管理员用户访问业务数据库,所以我建立了一个test用户,并对其进行赋权。 ~~~ CREATE USER 'test'@'%' IDENTIFIED BY '你的密码'; GRANT ALL ON ApolloPortalDB.* TO 'test'@'%' IDENTIFIED BY '你的密码'; //只有执行了这一句才可以远程登陆 FLUSH PRIVILEGES; ~~~ ### 2.2 目录结构说明 将apollo-portal.zip安装包上传到服务器并解压 ~~~ #在当前目录下创建portal 目录,并将文件解压到里面 mkdir ./portal && unzip apollo-portal-1.6.1-github.zip -d ./portal ~~~ 解压之后目录结构如下 ![](https://img.kancloud.cn/89/75/897596c80706f3590d2e786b4bcd58ae_1293x294.png) ### 2.3.数据库配置修改 apollo-portal-1.6.1-github.zip包解压出来有一个config/application-github.properties文件,修改其中的mysql ip地址、端口、用户名、密码信息,指向ApolloPortalDB所在的mysql数据库。 * 根据你的数据库ApolloPortalDB地址将localhost修改为数据库主机ip * 根据你的ApolloPortalDB实际数据库修改用户名密码,我的用户名是test(上文新建的) ~~~ # DataSource spring.datasource.url = jdbc:mysql://localhost:3306/ApolloPortalDB?characterEncoding=utf8 spring.datasource.username = test spring.datasource.password = 你的mysql用户密码 ~~~ ### 2.4.多环境配置文件 Apollo Portal支持多环境配置,其配置文件是config/apollo-env.properties。Apollo Portal需要根据环境的不同,访问不同的meta service(apollo-configservice)地址,所以需要在配置中提供ConfigService服务地址信息。 ~~~ local.meta=http://localhost:8080 dev.meta=http://fill-in-dev-meta-server:8080 fat.meta=http://fill-in-fat-meta-server:8080 uat.meta=http://fill-in-uat-meta-server:8080 lpt.meta=${lpt_meta} pro.meta=http://fill-in-pro-meta-server:8080 ~~~ > 因为我们还没部署任何生产、测试、或者其他环境,所以暂时将文件内容删掉即可(上面的配置是文件内的默认配置,删掉)。 **apollo默认支持的环境单词缩写解释:** * LOCAL:本地开发环境 * DEV:开发环境 * FWS:功能Web服务测试环境 * FAT:功能验收测试环境 * UAT:用户接受度测试环境 * LPT:负载和性能测试环境 * PRO:生产环境 * TOOLS:工具环境,生产环境中的一个特殊区域,它允许访问测试环境,例如Apollo Portal应该部署在工具环境中。 ## 三、启动Apollo配置中心 ### 3.1 修改端口 apollo portal的默认端口是8070,不好,一方面容易发生冲突,一方面容易被安全攻击。所以我们改一下端口,改成不常用的即可,我改成9430。 修改scripts/startup.sh脚本(注意该启动脚本里面还指定了日志文件的位置:LOG\_DIR,看日志去这里) ![](https://img.kancloud.cn/1a/10/1a10511ed2af04007a04f008f88cae7a_431x110.png) 同时要把这个端口在防火墙上开放出来 ~~~ firewall-cmd --zone=public --add-port=9430/tcp --permanent; firewall-cmd --reload ~~~ ### 3.2 执行启动脚本 进入scripts目录下,执行startup.sh脚本 ~~~ ./startup.sh ~~~ 如果你去LOG\_DIR目录下查看日志,会发现日志中有一些connect timed out(连接超时的异常),这是因为ApolloPortalDB中有一些默认的DEV环境配置,而我们还没有搭建任何的环境,只是搭建了一个统一管理中心的界面应用portal。所以connect timed out(连接超时的异常)可以暂时忽略。 ## 四、安装结果 访问:[http://apollo-portal主机ip:9430/,出现下面的界面](http://xn--apollo-portalip-c63xd222a:9430/%EF%BC%8C%E5%87%BA%E7%8E%B0%E4%B8%8B%E9%9D%A2%E7%9A%84%E7%95%8C%E9%9D%A2) ![](https://img.kancloud.cn/64/df/64dff24f066f40ca892b35140fd660c1_869x507.png) 输入用户名、密码 apollo/admin,登陆成功就表示我们安装成功了。