计划:java
内容:git
spring cloud Dalston SR3
搭建配置中心spring cloud config 1.3.2.RELEASE
版本spring cloud 1.5.3.RELEASE
版本依赖介绍微服务并非本章的重点,固然若没有了解过微服务的,能够先了解一下,再继续本章的内容。github
推荐几篇文章: 解析微服务架构(一):什么是微服务 解析微服务架构(二):融入微服务的企业集成架构 解析微服务架构(三):微服务重构应用及IBM解决方案spring
若读者不肯意看长篇大论抑或以为过于抽象不能很好的理解,那么笔者简单的例子来介绍微服务apache
去超市,咱们发现有专门卖肉的、卖零食的、卖蔬菜的、卖酒的,各部门**
各司其职
**,不像80年代卖肉的也卖菜,而每一个部门至关于一个服务,同时也发现,超市有服务台,能够问酒都放哪里,在软件中我门能够简单理解为网关,但网关还有不少事情能够作,后面咱们再介绍bootstrap
微服务优势:tomcat
微服务缺点:微信
先看两个图尝试理解理解cookie
图一: session
图二:
图一咱们理解一下: 目前config server支持从三个地方获取配置文件,分别为:
那很是好,咱们能够把配置提交到版本仓库便可
图二咱们简单理解下:
配置中心能够理解成超市中的仓库,我卖酒的,得问他我能卖些什么酒,也就是说,在软件中,我每一个服务得问他我有些什么配置
也同时看得出,咱们只要把配置文件提交到配置仓库,发送事件/钩子,那么服务就会随之而去配置中心获取文件更新,下降咱们的维护成本
接下来咱们不得不说一个事情,不然玩不转配置中心
重点:
服务是以spring.application.name
的配置属性来决定这个服务的id,也就是告诉配置中心,我是谁
spring.profiles.active
这是要拿哪一个配置文件,那么这样咱们就能够区分多个维度或者说环境,这里能够是多个,能够逗号分隔
访问策略:
/{application}/{profile}[/{label}] /{application}-{profile}.yml /{label}/{application}-{profile}.yml /{application}-{profile}.properties /{label}/{application}-{profile}.properties
若配置为:
spring.application.name=sso spring.profiles.active=dev
会寻找配置文件名为:sso-dev.properties文件,固然也能够为sso-dev.yml或其余
上面啰嗦了那么多,终于要到代码阶段了...
如图所示以最简单的方式获取代码,固然也把原始代码放置于original-files文件夹下
因为项目工程集中化,因此解压拷贝到工程后须要进行简单调整
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.carl.auth</groupId> <artifactId>sso-config</artifactId> <version>1.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>sso-config</name> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.6.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <spring-cloud.version>Dalston.SR3</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</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> </plugin> </plugins> </build> <!--为了加快速度,修改为国内的代理--> <repositories> <repository> <releases> <enabled>true</enabled> </releases> <id>maven2-release</id> <url>http://uk.maven.org/maven2/</url> </repository> <repository> <snapshots> <enabled>true</enabled> <!--快照版本库两个小时检查更新一遍--> <updatePolicy>interval:120</updatePolicy> </snapshots> <id>oss-snapshots</id> <url>http://repository.jboss.org/nexus/content/groups/public/</url> </repository> </repositories> <pluginRepositories> <pluginRepository> <releases> <enabled>true</enabled> </releases> <id>maven2-release</id> <url>http://uk.maven.org/maven2/</url> </pluginRepository> </pluginRepositories> </project>
配置管理服务服务支持
/* * 版权全部.(c)2008-2017. 卡尔科技工做室 */ package com.carl.auth.ssoconfig; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.config.server.EnableConfigServer; @SpringBootApplication @EnableConfigServer public class SsoConfigApplication { public static void main(String[] args) { SpringApplication.run(SsoConfigApplication.class, args); } }
把application.properties修改为application.yml,由于yml文件更直观
该配置文件为配置中心的项目设置
#指定日志输出文件 logging: file: "logs/sso-config.log" info: name : "配置中心" --- server: #服务端口 port: 8888 #访问路径 context-path: /config spring: profiles: #本地配置文件 active: #配置文件本地化 - native application: #指定应用名称 name: sso-config
mvn spring-boot:run
若看到以下结果,恭喜你,配置成功
2017-09-09 15:54:44.776 INFO 10696 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Located managed bean 'refreshEndpoint': registering with J MX server as MBean [org.springframework.cloud.endpoint:name=refreshEndpoint,type=RefreshEndpoint] 2017-09-09 15:54:45.287 INFO 10696 --- [ main] o.s.c.support.DefaultLifecycleProcessor : Starting beans in phase 0 2017-09-09 15:54:45.727 INFO 10696 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8888 (http) 2017-09-09 15:54:45.743 INFO 10696 --- [ main] c.c.auth.ssoconfig.SsoConfigApplication : Started SsoConfigApplication in 17.302 seconds (JVM runnin g for 28.779)
能够尝试访问:http://localhost:8888/config
出现以下别灰心,那是正常的,不出来才是不正常的呢。。。
到此,已经完成大部分的工程,那么接下来是咱们的重头戏
resources/config
接下来咱们尝试写配置文件在config目录就叫sso-dev.properties
吧,意味着cas的配置应该为:
spring.application.name=sso spring.profiles.active=dev
测试一下配置文件(sso-dev.properties 内容以下):
# # 版权全部.(c)2008-2017. 卡尔科技工做室 # hello_key=value
重启一下配置中心 试试访问:http://localhost:8888/config/sso/dev
结果以下,恭喜你!!!
继续走... 把sso-dev.properties文件修改为sso-server须要的配置(把application.properties内容拷贝过来便可)
# # 版权全部.(c)2008-2017. 卡尔科技工做室 # ## # CAS Server Context Configuration # server.context-path=/cas server.port=8443 server.ssl.enabled=false server.max-http-header-size=2097152 server.use-forward-headers=true server.connection-timeout=20000 server.error.include-stacktrace=NEVER server.tomcat.max-http-post-size=2097152 server.tomcat.basedir=build/tomcat server.tomcat.accesslog.enabled=true server.tomcat.accesslog.pattern=%t %a "%r" %s (%D ms) server.tomcat.accesslog.suffix=.log server.tomcat.max-threads=10 server.tomcat.port-header=X-Forwarded-Port server.tomcat.protocol-header=X-Forwarded-Proto server.tomcat.protocol-header-https-value=https server.tomcat.remote-ip-header=X-FORWARDED-FOR server.tomcat.uri-encoding=UTF-8 spring.http.encoding.charset=UTF-8 spring.http.encoding.enabled=true spring.http.encoding.force=true ## # CAS Cloud Bus Configuration # spring.cloud.bus.enabled=false endpoints.enabled=false endpoints.sensitive=true endpoints.restart.enabled=false endpoints.shutdown.enabled=false management.security.enabled=true management.security.roles=ACTUATOR,ADMIN management.security.sessions=if_required management.context-path=/status management.add-application-context-header=false security.basic.authorize-mode=role security.basic.enabled=false security.basic.path=/cas/status/** ## # CAS Web Application Session Configuration # server.session.timeout=300 server.session.cookie.http-only=true server.session.tracking-modes=COOKIE ## # CAS Thymeleaf View Configuration # spring.thymeleaf.encoding=UTF-8 spring.thymeleaf.cache=true spring.thymeleaf.mode=HTML ## # CAS Log4j Configuration # # logging.config=file:/etc/cas/log4j2.xml server.context-parameters.isLog4jAutoInitializationDisabled=true ## # CAS AspectJ Configuration # spring.aop.auto=true spring.aop.proxy-target-class=true ## # CAS Authentication Credentials # cas.authn.accept.users=casuser::Mellon
再次重启sso-config 试试访问:http://localhost:8888/config/sso/dev
结果以下,再次恭喜你!!!
接下来是重点 在sso-server工程下做业:
bootstrap.properties:
# # 版权全部.(c)2008-2017.广州市森锐科技股份有限公司 #指定日志文件 logging.file=logs/cas.log info.name=单点登陆系统 #定义application.name的id spring.application.name=sso #寻找配置中心为sso-dev.properties spring.profiles.active=dev #指定配置中心地址 spring.cloud.config.uri=http://localhost:8888/config #开启配置中心 spring.cloud.config.enabled=true #支持自动任务去配置中心刷新配置 spring.cloud.config.watch.enabled=true #30秒刷新一次 spring.cloud.config.watch.initialDelay=30000 #请求配置中心超市 spring.cloud.config.watch.delay=1000 #检查配置健康 health.config.enabled=true
因为手脚架创建出来的不便于看调试信息,因此把log4j2.xml也调整一下,因为文件行数过多,就不放出来了,须要的自行下载,主要把warn改为info和一些debug
最后,项目的目录结构应该以下:
运行sso-server
build.cmd run
若出现以下图,恭喜你,运行成功
最后访问:http://localhost:8443/cas
用户名/密码:casuser/Mellon
若最后能登陆成功,本章的内容你已获得必定的收获
若是技术的交流或者疑问能够联系或者提出issue。
QQ: 756884434 (请注明:SSO-CSDN)
若是项目对你有技术上的提高、工做上的帮助或者一些启示,不妨请小编喝杯咖啡,小编更会满怀激情的为你们讲解和输出博文哦。
微信 支付宝