文档地址:http://disconf.readthedocs.io/zh_CN/latest/ github地址:https://github.com/knightliao/disconf
安装过程
一.安装依赖软件
安装Mysql(Ver 14.12 Distrib 5.0.45, for unknown-linux-gnu (x86_64) using EditLine wrapper)
安装Tomcat(apache-tomcat-7.0.50)
安装Nginx(nginx/1.5.3)
安装 zookeeeper (zookeeper-3.3.0)
安装 Redis (2.4.5)
准备配置
将你的配置文件放到此地址目录下(以下地址可自行设定):
/home/work/dsp/disconf-rd/online-resources
如果不确定如何配置,可以拷贝/disconf-web/profile/rd/目录下的文件,拷贝过去后修改成本地的环境配置即可。
配置文件包括:
- jdbc-mysql.properties (数据库配置)
- redis-config.properties (Redis配置,主要用于web登录使用)
- zoo.properties (Zookeeper配置)
- application.properties (应用配置)
注意,记得执行将application-demo.properties复制成application.properties:
cp application-demo.properties application.properties
*注意,即使只有一个redis,也应该配置两个redis client,否则将造成内部错误。*
设置War包将要被部署的地址(以下地址可自行设定):
/home/work/dsp/disconf-rd/war
构建
ONLINE_CONFIG_PATH=/home/work/dsp/disconf-rd/online-resources
WAR_ROOT_PATH=/home/work/dsp/disconf-rd/war
export ONLINE_CONFIG_PATH
export WAR_ROOT_PATH
cd disconf-web
sh deploy/deploy.sh
这样会在 /home/work/dsp/disconf-rd/war 生成以下结果:
-disconf-web.war
-html
-META-INF
-WEB-INF
初始化数据库:
可以参考 sql/readme.md 来进行数据库的初始化。注意顺序执行
0-init_table.sql
1-init_data.sql
201512/20151225.sql
20160701/20160701.sql
里面默认有6个用户(请注意线上环境删除这些用户以避免潜在的安全问题)
name pwd
admin admin
testUser1 MhxzKhl9209
testUser2 MhxzKhl167
testUser3 MhxzKhl783
testUser4 MhxzKhl8758
testUser5 MhxzKhl112
如果想自己设置初始化的用户名信息,可以参考代码来自己生成用户:
src/main/java/com/baidu/disconf/web/tools/UserCreateTools.java
部署War
修改server.xml文件,在Host结点下设定Context:
<Context path="" docBase="/home/work/dsp/disconf-rd/war"></Context>
并设置端口为 8015
启动Tomcat,即可。
部署 前端
修改 nginx.conf
upstream disconf {
server 127.0.0.1:8015;
}
server {
listen 8081;
server_name disconf.com;
access_log /home/work/var/logs/disconf/access.log;
error_log /home/work/var/logs/disconf/error.log;
location / {
root /home/work/dsp/disconf-rd/war/html;
if ($query_string) {
expires max;
}
}
location ~ ^/(api|export) {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_pass http://disconf;
}
}
关于host
这里的 host 设置成 disconf.com (可以自定义),但它 必须与 application.properties 里的domain一样。
然后浏览器的访问域名也是这个。(至此安装完毕)
集成项目过程
以www为例:
1.pom文件加入,
<dependency>
<groupId>com.baidu.disconf</groupId>
<artifactId>disconf-client</artifactId>
<version>2.6.35</version>
</dependency>
2.tao.xml中加入:
<!-- 使用disconf必须添加以下配置 -->
<bean id="disconfMgrBean" class="com.baidu.disconf.client.DisconfMgrBean"
destroy-method="destroy">
<property name="scanPackage" value="com.example.disconf.demo"/>
</bean>
<bean id="disconfMgrBean2" class="com.baidu.disconf.client.DisconfMgrBeanSecond"
init-method="init" destroy-method="destroy">
</bean>
<!-- 使用托管方式的disconf配置(无代码侵入, 配置更改会自动reload)-->
<bean id="configproperties_disconf"
class="com.baidu.disconf.client.addons.properties.ReloadablePropertiesFactoryBean">
<property name="locations">
<list>
<!-- 此处文件是web端上传存在的配置文件1. -->
<value>classpath:/venus.properties</value>
<value>classpath:/rabbit.properties</value>
<value>classpath:/sentinelRedis.properties</value>
<value>classpath:/springsession.properties</value>
<value>VenusClient.xml</value>
</list>
</property>
</bean>
<bean id="propertyConfigurer"
class="com.baidu.disconf.client.addons.properties.ReloadingPropertyPlaceholderConfigurer">
<property name="order" value="1"/>
<property name="ignoreResourceNotFound" value="true"/>
<property name="ignoreUnresolvablePlaceholders" value="true"/>
<property name="propertiesArray">
<list>
<ref bean="configproperties_disconf"/>
</list>
</property>
</bean>
3.新建disconf.properties文件:文件内容
#是否使用远程配置文件,true(默认)从远程获取配置信息,false从本地获取配置文件
#为true时默认读取远程配置文件
disconf.enable.remote.conf=true
#disconf配置服务器的HOST,用逗号分隔127.0.0.1:8000,127.0.0.1:8000
disconf.conf_server_host=127.0.0.1:8014,127.0.0.1:8015
# 项目版本号格式必须写成这样
disconf.version=1_0_0_0
# 产品线_服务名
disconf.app=TGB_WWW
# \u73AF\u5883读取的环境
disconf.env=rd
#忽略的文件,用逗号分隔
disconf.ignore=
#获取远程配置 重试次数,默认是3次
disconf.conf_server_url_retry_times=1
#获取远程配置 重试时休眠时间,默认是5秒
disconf.conf_server_url_retry_sleep_seconds=1
/#下载配置文件的路径,默认也会下载到classpath目录下面一份
disconf.user_define_download_dir=./disconf/download
4,修改tao-venus-client.xml文件
将bean的class :com.meidusa.venus.spring.VenusPropertyPlaceholderConfigurer换成spring的
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<!— 此处可以读取classpath下的文件也可以读取下载到本地目录中的文件. -->
<value>/WEB-INF/classes/rabbit.properties</value>
<value>/WEB-INF/classes/venus.properties</value>
<value>/WEB-INF/classes/sentinelRedis.properties</value>
<value>/WEB-INF/classes/springsession.properties</value>
<!-- <value>file:/Users/du/Downloads/rabbit.properties</value>
<value>file:/Users/du/Downloads/sentinelRedis.properties</value>
<value>file:/Users/du/Downloads/springsession.properties</value> -->
</list>
</property>
</bean>
调试:
登录disconf平台上传配置文件,启动www,发现www读取的是下载的配置文件并启动成功 ,则disconf集成部署成功。
ps:如果是服务端 需要新建resources目录 和disconf.properties文件,原理同上