安裝包
下載安裝包
1 2 3 4 5
| apollo-configservice-x.x.x-github.zip
apollo-adminservice-x.x.x-github.zip
apollo-portal-x.x.x-github.zip
|
網址: https://github.com/ctripcorp/apollo/releases
獲取sql
1 2 3
| apolloconfigdb.sql
apolloportaldb.sql
|
網址: https://github.com/ctripcorp/apollo/tree/master/scripts/sql
jdk
- Apollo服務端:1.8+
- Apollo客戶端:1.7+
Mysql:
部署
目錄:
D:\java\other\apollo
如圖:
執行SQL,會生成兩個庫:
1 2 3
| ApolloPortalDB
ApolloConfigDB
|
如圖:
配置:
打開\apollo-configservice\scripts\startup.sh,將端口改為:8111,
如下:
1
| SERVER_PORT=${SERVER_PORT:=8111}
|
打開\apollo-configservice\config\application-github.properties,修改mysql數據庫連接字符串,
如下:
1 2 3 4
| # DataSource spring.datasource.url = jdbc:mysql://127.0.0.1:3306/ApolloConfigDB?characterEncoding=utf8&serverTimezone=UTC spring.datasource.username = root spring.datasource.password = 123456
|
打開\apollo-configservice\scripts\startup.sh,
打開cmd,輸入:
如圖:
打開\apollo-adminservice\config\application-github.properties,修改mysql數據庫連接字符串, 如下:
1 2 3 4
| # DataSource spring.datasource.url = jdbc:mysql://localhost:3306/ApolloConfigDB?characterEncoding=utf8&serverTimezone=UTC spring.datasource.username = root spring.datasource.password = 123456
|
打開\apollo-adminservice\scripts\startup.sh,
打開cmd,輸入:
打開\apollo-portal\config\application-github.properties,修改mysql數據庫連接字符串, 如下:
1 2 3 4
| # DataSource spring.datasource.url = jdbc:mysql://127.0.0.1:3306/ApolloPortalDB?characterEncoding=utf8&serverTimezone=UTC spring.datasource.username = root spring.datasource.password = 123456
|
默認當前項目中,可用環境為env,
如圖:
打開\apollo-portal\config\apollo-env.properties,內容如下:
1 2 3 4 5 6
| local.meta=http://localhost:8111 dev.meta=http://localhost:8111 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-portal\scripts\startup.sh,
打開cmd,輸入:
登錄:
打開:http://127.0.0.1:8070/
輸入賬號/密碼:apollo/admin
如圖:
系統參數
點擊“管理員工具”-“系統參數”,菜單進入應用配置頁面,通過organizations關鍵字查詢部門信息,如圖:
修改value值,追加一個部門[mstest,微服務測試部門],修改完一分鐘實時生效,內容如下:
1
| [{"orgId":"TEST1","orgName":"樣例部門1"},{"orgId":"TEST2","orgName":"樣例部門2"},{"orgId":"mstest","orgName":"微服務測試部門"}]
|
如圖:
用戶管理
填寫用戶信息,點擊提交,一分鐘實時生效,新增用戶[msuser,msuser],
如圖:
創建項目
現在創建項目,就可以選擇剛才添加用戶。在項目分配了負責人 msuser,如果使msuser登錄的話,則只能看到他自己負責的項目。而 apollo 用戶是超級管理員所以可以看到所有項目。
1 2 3 4 5 6 7
| 部門:指定的部門
AppId:應用唯一標識
應用名稱: 應用的名稱,建議格式 xx-yy-zz
應用負責人:指定的用戶
|
如圖:
Namespace
創建一個類型為private的Namespace,
如圖:
權限管理
可以給指定用戶添加對該應用的修改權和發布權。
如圖:
新增配置
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/ApolloPortalDB?characterEncoding=utf8&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456
如圖:
客戶端接入和操作
創建一個基礎工程 Spring Boot,命名: apollodemo,增加依賴:
1 2 3 4 5 6 7 8 9 10
| <!-- 網址為:
https://mvnrepository.com/artifact/com.ctrip.framework.apollo/apollo-client
--> <dependency> <groupId>com.ctrip.framework.apollo</groupId> <artifactId>apollo-client</artifactId> <version>1.7.0</version> </dependency>
|
pom.xml 內容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
| <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <!-- springboot版本與springcloud須匹配 --> <version>2.1.4.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.test</groupId> <artifactId>apollodemo</artifactId> <version>0.0.1-SNAPSHOT</version> <name>apollodemo</name> <description>Demo project for Spring Boot</description>
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <java.version>1.8</java.version> <!-- springboot版本與springcloud須匹配 --> <spring.boot.version>2.1.4.RELEASE</spring.boot.version> <spring.cloud.version>Greenwich.SR1</spring.cloud.version> <spring.maven.version>2.4.1</spring.maven.version> </properties>
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency>
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
<dependency> <groupId>com.ctrip.framework.apollo</groupId> <artifactId>apollo-client</artifactId> <version>1.7.0</version> </dependency>
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.16</version> <scope>provided</scope> </dependency>
</dependencies>
<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring.cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>${spring.maven.version}</version> </plugin> </plugins> </build>
</project>
|
application.yml,內容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| server: port: 9111 # 端口
spring: application: name: msproj-demo # 應用名稱
# apollo 相關配置 app: id: msproj # 與 Apollo 配置中心中的 AppId 一致
apollo: meta: http://localhost:8111 # Apollo 中的 Eureka 注冊中心地址 #cluster: # 指定 Apollo 集群,相同集群實例使用對應集群的配置 #cacheDir: # 配置緩存目錄,網絡不可用時任然可提供配置服務 bootstrap: enable: true # 啟用 apollo
env: DEV # 指定環境
|
ApollodemoApplication類,內容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| package com.test.apollodemo;
import com.ctrip.framework.apollo.spring.annotation.EnableApolloConfig; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@EnableApolloConfig({"application", "test1"})//注入 @SpringBootApplication public class ApollodemoApplication {
public static void main(String[] args) { SpringApplication.run(ApollodemoApplication.class, args); }
}
|
ConfigProperties類,內容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| package com.test.apollodemo.config;
import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component;
@Component @Data @NoArgsConstructor @AllArgsConstructor public class ConfigProperties {
@Value("${spring.datasource.url}") private String url; @Value("${spring.datasource.username}") private String username; @Value("${spring.datasource.password}") private String password; }
|
ConfigController類,內容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| package com.test.apollodemo.controller;
import com.ctrip.framework.apollo.Config; import com.ctrip.framework.apollo.ConfigService; import com.test.apollodemo.config.ConfigProperties; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap; import java.util.Map;
@RestController public class ConfigController {
@Autowired private ConfigProperties configProperties;
/** * 注入方式 * @return */ @GetMapping("/getDB") public Map<Object, Object> getDB() {
Map<Object, Object> map = new HashMap<Object, Object>(); map.put("url", configProperties.getUrl()); map.put("username", configProperties.getUsername()); map.put("password", configProperties.getPassword());
return map; }
/** * 用API方式獲取 * @return */ @GetMapping("/getDBAPI") public Map<Object, Object> getDBAPI() {
Config config = ConfigService.getConfig("test1"); // 獲取配置信息,第一個參數為配置項的 key,第二個參數為默認值(讀取不到配置就會使用默認值,建議都加上默認值)
String url = config.getProperty("spring.datasource.url", null); String username = config.getProperty("spring.datasource.username", null); String password = config.getProperty("spring.datasource.password", null);
Map<Object, Object> map = new HashMap<Object, Object>(); map.put("url", url); map.put("username", username); map.put("password", password);
return map; } }
|
運行后,輸入:http://localhost:9111/getDB
如圖:
http://localhost:9111/getDBAPI
如圖:
切換到apollo界面,修改Key為spring.datasource.url,點擊發布,可以看看是否成功,
如圖: