①用自己的GitHub账号在GitHub上新建一个名为microservicecloud-config
的新Repository远程仓库。
②由上一步获得SSH协议的git地址。
[email protected]:XXXXXXXXX/microservicecloud-config.git
③本地硬盘目录上新建git仓库并clone。
git命令:git clone [email protected]:XXXXXXXX/microservicecloud-config.git
报错:
[email protected]: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
解决方案:
看上图,需要添加你本机的SSH key。注意换了电脑是要重新添加的,每台都不一样。添加SSH key的方法:
在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,
如下图,用户主目录是:
如果已经有了id_rsa和id_rsa.pub这两个文件,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:
$ ssh-keygen -t rsa -C "[email protected]"
你需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可。如下图:
然后可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。如下图:
然后:
填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容:注意不是私钥,是公钥的内容。如下图:
本机的这个git仓库并要和这个SSH key 关联上。用下述方法解决:
ssh-add "你的 id-rsa 文件地址"
注意这里ssh-add后面填的是私钥地址,我的私钥地址是:C:/Users/Administrator/.ssh/id_rsa 如下图:
ssh -add C:/Users/Administrator/.ssh/id_rsa
$ ssh [email protected]
验证是不是添加成功。如下图:
有时候你GitHub仓库初始化时候带了Readme或其他文件,推送之前需要先git pull 拉下来,会报“ * branch master -> FETCH_HEAD fatal: 拒绝合并无关的历史”的错误,解决方法是在git pull时加上–allow-unrelated-histories,如下:
git pull origin master --allow-unrelated-histories
这样应该就可以正常push了。
然后clone
git命令:git clone [email protected]:XXXXXXXX/microservicecloud-config.git
④在本地D:\yunweigongchengshi\microservicecloud-config里面新建一个application.yml。(这个地址假设是运维工程师的地址)。
在上图中,而且application.yml必须是以UTF-8的形式保存。
application.yml的全部内容是:
spring:
profiles:
active:
- dev
---
spring:
profiles: dev #开发环境
application:
name: microservicecloud-config-lss-dev
---
spring:
profiles: test #测试环境
application:
name: microservicecloud-config-lss-test
# 请保存为UTF-8格式
⑤将上一步的YML文件推送到github上。
git add . 和 git add * 区别
git add . 会把本地所有untrack的文件都加入暂存区,并且会根据.gitignore做过滤,但是git add * 会忽略.gitignore把任何文件都加入
1、git add .
2、git commit -m "init yml" 暂存区提交到本地工作区。
3、git push origin master将本地仓库上传到github
然后查看GitHub发现远程库内容改变。
⑥新建Module模块microservicecloud-config-3344
它即为Cloud的配置中心模块
⑦修改子工程microservicecloud-config-3344的pom文件。
子工程microservicecloud-config-3344的pom文件的修改内容是:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
子工程microservicecloud-config-3344的pom文件的完整内容是:
<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>
<parent>
<groupId>com.lss.springcloud</groupId>
<artifactId>microservicecloud</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>microservicecloud-config-3344</artifactId>
<dependencies>
<!-- springCloud Config -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<!-- 避免Config的Git插件报错:org/eclipse/jgit/api/TransportConfigCallback -->
<dependency>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit</artifactId>
<version>4.10.0.201712302008-r</version>
</dependency>
<!-- 图形化监控 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- 熔断 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
<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>
</dependency>
<!-- 热部署插件 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
</dependencies>
</project>
如果后台报错:Git插件报错:org/eclipse/jgit/api/TransportConfigCallback
则在pom文件中加入依赖:
<!-- 避免Config的Git插件报错:org/eclipse/jgit/api/TransportConfigCallback -->
<dependency>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit</artifactId>
<version>4.10.0.201712302008-r</version>
</dependency>
没出这个错,这个依赖就可以注释掉。
然后update这个项目。
⑧修改子工程microservicecloud-config-3344的yml文件。
application.yml的完整内容是:
server:
port: 3344
spring:
application:
name: microservicecloud-config
cloud:
config:
server:
git:
uri: [email protected]:XXXXXXXXXX/microservicecloud-config.git #GitHub上面的git仓库名字
⑨创建主启动类Config_3344_StartSpringCloudApp。
创建包:com.lss.springcloud
再在里面创建Config_3344_StartSpringCloudApp类。
Config_3344_StartSpringCloudApp.java的完整 内容是:
package com.lss.springcloud;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;
@SpringBootApplication
@EnableConfigServer
public class Config_3344_StartSpringCloudApp {
public static void main(String[] args)
{
SpringApplication.run(Config_3344_StartSpringCloudApp.class,args);
}
}
⑩windows下修改hosts文件,增加映射。127.0.0.1 config-3344.com
⑪测试通过Config微服务是否可以从GitHub上获取配置内容。
启动微服务3344
http://config-3344.com:3344/application-dev.yml
http://config-3344.com:3344/application-test.yml
http://config-3344.com:3344/application-xxx.yml(不存在的配置)
⑫配置读取规则。
官网:
/{application}-{profile}.yml的规则是如下这样:
http://config-3344.com:3344/application-dev.yml
http://config-3344.com:3344/application-test.yml
http://config-3344.com:3344/application-xxx.yml(不存在的配置)
/{application}/{profile}[/{label}的规则是如下这样:
http://config-3344.com:3344/application/dev/master
http://config-3344.com:3344/application/test/master
http://config-3344.com:3344/application/xxx/master
master是主干分支。
/{label}/{application}-{profile}.yml的规则是如下这样:
http://config-3344.com:3344/master/application-dev.yml
http://config-3344.com:3344/master/application-test.yml
至此:‘