准备工作
mysql
mysql> SHOW VARIABLES WHERE Variable_name = 'version';
+---------------+--------+
| Variable_name | Value |
+---------------+--------+
| version | 5.7.24 |
+---------------+--------+
java
java -version
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)
下载
直接 github 下载
$ git clone https://github.com/nobodyiam/apollo-build-scripts.git
数据库初始化
创建 ApolloPortalDB
通过各种MySQL客户端导入 sql/apolloportaldb.sql
即可。
我这里直接执行内容。
验证
mysql> show tables;
+--------------------------+
| Tables_in_apolloportaldb |
+--------------------------+
| app |
| appnamespace |
| authorities |
| consumer |
| consumeraudit |
| consumerrole |
| consumertoken |
| favorite |
| permission |
| role |
| rolepermission |
| serverconfig |
| userrole |
| users |
+--------------------------+
mysql> select `Id`, `AppId`, `Name` from ApolloPortalDB.App;
+----+-----------+------------+
| Id | AppId | Name |
+----+-----------+------------+
| 1 | SampleApp | Sample App |
+----+-----------+------------+
创建ApolloConfigDB
通过各种MySQL客户端导入 sql/apolloconfigdb.sql
即可。
我这里直接执行内容。
验证
mysql> select `NamespaceId`, `Key`, `Value`, `Comment` from ApolloConfigDB.Item;
+-------------+---------+-------+----------------------+
| NamespaceId | Key | Value | Comment |
+-------------+---------+-------+----------------------+
| 1 | timeout | 100 | sample timeout配置 |
+-------------+---------+-------+----------------------+
配置数据库连接信息
Apollo服务端需要知道如何连接到你前面创建的数据库,所以需要编辑demo.sh,修改ApolloPortalDB和ApolloConfigDB相关的数据库连接串信息。
# apollo config db info
apollo_config_db_url="jdbc:mysql://localhost:3306/ApolloConfigDB?characterEncoding=utf8&serverTimezone=Asia/Shanghai"
apollo_config_db_username=root
apollo_config_db_password=123456
# apollo portal db info
apollo_portal_db_url="jdbc:mysql://localhost:3306/ApolloPortalDB?characterEncoding=utf8&serverTimezone=Asia/Shanghai"
apollo_portal_db_username=root
apollo_portal_db_password=123456
添加对应的账户信息,其他的保持不变。
启动
端口
Quick Start脚本会在本地启动3个服务,分别使用8070, 8080, 8090端口,请确保这3个端口当前没有被使用。
执行启动脚本
这里使用的 sh 脚本,如果本地没有可以下载 git bash
./demo.sh start
看到如下日志,说明启动成功:
==== starting service ====
Service logging file is ./service/apollo-service.log
Started [10768]
Waiting for config service startup.......
Config service started. You may visit http://localhost:8080 for service status now!
Waiting for admin service startup....
Admin service started
==== starting portal ====
Portal logging file is ./portal/apollo-portal.log
Started [10846]
Waiting for portal startup......
Portal started. You can visit http://localhost:8070 now!
这里只是测试,真实生产参见 分布式部署指南
异常排查
如果启动遇到了异常,可以分别查看service和portal目录下的log文件排查问题。
注:在启动apollo-configservice的过程中会在日志中输出eureka注册失败的信息,如com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused。需要注意的是,这个是预期的情况,因为apollo-configservice需要向Meta Server(它自己)注册服务,但是因为在启动过程中,自己还没起来,所以会报这个错。后面会进行重试的动作,所以等自己服务起来后就会注册正常了。
- 自己遇到的问题
服务启动失败:
异常如下:
Caused by: org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set
- 解决方案
把 demo.sh 中的 localhost 修改为 127.0.0.1
使用
访问
可以进入到登陆页
登陆
输入账户
用户名: apollo
密码: admin
进行登陆
配置
点击SampleApp进入配置界面,可以看到当前有一个配置timeout=100 配置界面
参考资料
springboot启动出现Access to DialectResolutionInfo cannot be null when ‘hibernate.dialect’ not set
https://ctripcorp.github.io/apollo/#/zh/deployment/quick-start