一、单环境部署
1.按照官方文档步骤操作
https://github.com/nobodyiam/apollo-build-scripts
2.修改demo.sh
原:
Apollo服务端需要知道如何连接到你前面创建的数据库,所以需要编辑demo.sh,修改ApolloPortalDB和ApolloConfigDB相关的数据库连接串信息。
注意:填入的用户需要具备对ApolloPortalDB和ApolloConfigDB数据的读写权限。
#apollo config db info
apollo_config_db_url=jdbc:mysql://localhost:3306/ApolloConfigDB?characterEncoding=utf8
apollo_config_db_username=用户名
apollo_config_db_password=密码(如果没有密码,留空即可)
# apollo portal db info
apollo_portal_db_url=jdbc:mysql://localhost:3306/ApolloPortalDB?characterEncoding=utf8
apollo_portal_db_username=用户名
apollo_portal_db_password=密码(如果没有密码,留空即可)
注意:不要修改demo.sh的其它部分
修改后:
apollo_config_db_url=jdbc:mysql://localhost:3306/apolloconfigdb?serverTimezone=UTC
apollo_config_db_username=root
apollo_config_db_password=root
# apollo portal db info
apollo_portal_db_url=jdbc:mysql://localhost:3306/apolloportaldb?serverTimezone=UTC
apollo_portal_db_username=root
apollo_portal_db_password=root
2.1.注意:此处我将 characterEncoding=utf8 替换成serverTimezone=UTC 如果没替换会报错
报错信息:
java.sql.SQLException: The server time zone value '?ț???????' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:63)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:73)
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:76)
at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:835)
at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:455)
at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:240)
at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:199)
at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:117)
at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:123)
at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:365)
at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:194)
at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:460)
2.2.如果 characterEncoding=utf-8&serverTimezone=UTC 同时存在也会异常
***************************
APPLICATION FAILED TO START
***************************
Description:
Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.
Reason: Failed to determine suitable jdbc url
Action:
Consider the following:
If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.
If you have database settings to be loaded from a particular profile you may need to activate it (the profiles github are currently active).
3.修改之后启动
4.启动成功
5.http://localhost:8070/
二、多环境部署
注意:
apollo-portal 服务和 ApolloPortalDB 数据库只需要在生产环境部署一套
apollo-configservice、apollo-adminservice 服务和 ApolloConfigDB 需要在每个环境部署各一套
各个服务:
环境 | 地址 | 服务名 |
---|---|---|
– | localhost:8070 | apollo-portal |
DEV | localhost:8080 localhost:8090 | apollo-configservice apollo-adminservice |
PRO | localhost:8081 localhost:8091 | apollo-configservice apollo-adminservice |
数据库:
环境 | 地址 | 数据表名称 |
---|---|---|
– | localhost:3306 | ApolloPortalDB |
DEV | localhost:3306 | ApolloConfigDB |
PRO | localhost:3306 | ApolloConfigDB2 |
1.按照需要做好准备工作
2.获取安装包
这边不需要点别的操作,直接从GitHub Release页面下载预先打好的安装包(取最新的即可)
3.解压
注意:在windows模拟多环境portal只需要一个就好,但是adminservice和configservice都需要两份
4.数据库准备
apolloconfigdb每个环境都需要自己各自的库所以拷贝了一份apolloconfigdb2
5. 修改配置
apollo-configservice-1.7.1-github
打开config目录下application-github.properties,修改DB地址
spring.datasource.url = jdbc:mysql://localhost:3306/ApolloConfigDB?useSSL=false&characterEncoding=utf8&serverTimezone=UTC spring.datasource.username = root spring.datasource.password = root
apollo-configservice-1.7.1-github2
打开config目录下application-github.properties,修改DB地址
apollo-adminservice-1.7.1-github
打开config目录下application-github.properties,修改DB地址
# DataSource spring.datasource.url = jdbc:mysql://localhost:3306/ApolloConfigDB?useSSL=false&characterEncoding=utf8&serverTimezone=UTC spring.datasource.username = root spring.datasource.password = root
apollo-adminservice-1.7.1-github1
打开config目录下application-github.properties,修改DB地址
# DataSource spring.datasource.url = jdbc:mysql://localhost:3306/ApolloConfigDB2?useSSL=false&characterEncoding=utf8&serverTimezone=UTC spring.datasource.username = root spring.datasource.password = root
apollo-portal-1.7.1-github
# DataSource spring.datasource.url = jdbc:mysql://localhost:3306/ApolloPortalDB?useSSL=false&characterEncoding=utf8&serverTimezone=UTC spring.datasource.username = root spring.datasource.password = root
6.修改多环境配置
6.1添加多环境配置:
dev.meta=http://localhost:8080 pro.meta=http://localhost:8081
6.2 数据库中加入上面的dev,pro,多环境直接“,”隔开
6.3 修改 apolloconfigdb2 http://localhost:8081/eureka/
启动configservice的时候会启动其自带的Eureka。adminservice需要注册到Eureka中,apollo-configservice-1.7.1-github1和apollo-adminservice-1.7.1-github2链接的是apolloconfigdb2
根据7.3启动的端口8081,eureka.service.url修改为http://localhost:8081/eureka/,adminservice才能注册到正确的Eureka
7.启动五个jar包
启动要按照configservice、adminservice、portal 的顺序启动。因为启动configservice的时候会启动其自带的Eureka。adminservice需要注册到Eureka中。portal需要发现各环境的adminservice。
这里特别注意,多环境下,一定要先将所有环境的adminservice和configservice都启动后,最后再启动portal。
7.1 F:\projectjar\apollo\apollo-configservice-1.7.1-github ------ java -jar apollo-configservice-1.7.1.jar --server.port=8080
7.2 F:\projectjar\apollo\apollo-adminservice-1.7.1-github ------ java -jar apollo-adminservice-1.7.1.jar --server.port=8090
7.3 F:\projectjar\apollo\apollo-configservice-1.7.1-github1 ------ java -jar apollo-configservice-1.7.1.jar --server.port=8081
7.4 F:\projectjar\apollo\apollo-adminservice-1.7.1-github2 ------ java -jar apollo-adminservice-1.7.1.jar --server.port=8091
7.5 F:\projectjar\apollo\apollo-portal-1.7.1-github ----- java -jar apollo-portal-1.7.1.jar --server.port=8070
8. 都启动成功后验证
8.1 localhost:8080
8.2 localhost:8081
8.3 localhost:8070 可以看到两个环境