地址是:https://github.com/ctripcorp/apollo ,前面我下载过快速启动的版本,好像版本是1.1.0,会有登录页面卡顿,无法删除NameSpace、增加人员等权限问题,所以还是下最新的吧。
clone完项目之后,导入apolloconfigdb.sql,apolloportaldb.sql,新建两个数据库,修改build.bat/sh中的数据库地址等信息,根据你的环境需要修改meta服务地址信息
执行build.bat/build.sh,依次启动(window下),或者把以下三个文件发布到linux环境中
1、apollo-configservice项目 target目录下的apollo-configservice-1.1.2.jar
2、apollo-adminservice项目 target目录下的apollo-adminservice-1.1.2.jar
3、apollo-portal项目 target目录下的apollo-portal-1.1.2.jar
温馨提示:如果三个项目想跑在一个节点下,首先要修改apollo-portal项目的端口,或者在启动时指定,不然会暂用8080端口,与configservice冲突,并且记得要使用build.bat/build.sh打包,或者按自己的需要选择自己的profile再打包
原因是因为apollo中,针对不同的profile有一些个性化的操作,比如说不指定auth profile,那么protal项目启动后,会默认用apollo用户登录,无法退出..等等,可以自行看源码@ConditionalOnMissingProfile/@ConditionalOnProfile部分
接着进行portal项目,配置项目信息,如我的portal端口是8070,那么就访问127.0.0.1:8070,
默认账户名apollo,密码admin
1、点击创建项目,自定义应用id
2、点击左下角,创建自己的NameSpace(用原有的application.properties也可以)
3、选择私有NameSpace,保存
4、新增配置,点击发布
项目启动完成后,开始修改我们原有的spring boot项目
在application.properties/yml/boostrap.yml中添加
1、app.id={自定义应用id}
2、apollo.meta={configservice地址}
3、修改apollo.cacheDir地址,如果配置中心服务宕机,cache配置的地址
4、修改原有的读取properties工具类,或者新建一个,下面是个demo
@Component
@Slf4j
public class ConfigUtil {
private static Config config;
//注意这里 是你刚刚新建的nameSpace的名字,我因为是起的项目名,所以用applicatoin.name
@Value("${spring.application.name}")
private String applicationName;
/**
* 获取namespace的配置,相当于获取.properties
* @return
*/
@Bean
public Config config(){
return ConfigService.getConfig(applicationName);
}
/**
* 注册config 到ConfigUtil.config 并添加config change事件
* @param config
*/
@Autowired
public void setConfig(Config config) {
this.config = config;
config.addChangeListener(changeEvent -> {
log.info("Changes for namespace : {}",changeEvent.getNamespace());
for (String key1 : changeEvent.changedKeys()) {
ConfigChange change = changeEvent.getChange(key1);
log.info("Found change - key: {}, oldValue: {}, newValue: {}, changeType: {}",change.getPropertyName(), change.getOldValue(), change.getNewValue(), change.getChangeType());
}
});
}
/**
* 下换原有的获取getConfigValue方法,改成从apollo中获取
* @param key
* @return
*/
public static String getConfigValue(String key){
return getConfigValue(key,"");
}
/**
* 替换原有的获取getConfigValue方法,改成从apollo中获取
* @param key
* @param defaultStr
* @return
*/
public static String getConfigValue(String key, String defaultStr){
Assert.hasText(key,"key 不能为空");
String value = config.getProperty(key, defaultStr);
return value;
}
}
启动项目,在启动参数中加上System Property -Denv=dev(这里填你想启动的apollo环境,默认是dev)
看到日志在load apollo配置
接着到apollo portal管理页面修改一下刚刚发布的配置,点击发布 ,发现config.addChangeListener起作用了,到此完成
接下来给一些小tips:
1、首先进入管理员工具,新建项目用户;最好还是别用apollo直接建,因为权限高,一开始给开发用户分配好,各自管理各自的项目
2、也是进入用户管理,修改apollo用户密码,输入用户名apollo,再输入新密码保存就可以,跟新建用户一样
3、可以进入ApolloPortalDB库,ServerConfig表修改系统参数(如所属部门等),也可以在系统参数菜单这里修改,但是你还是得从数据库看Key,再搜索
4、修改ApolloConfigDB库,ServerConfig表中的eureka信息,可以实现互备,动态扩容等等
5、建议分布式部署