之前一直是用本地的配置中心跑微服务一切正常,没有出现过问题,今天想把配置中心部署在公司服务器上面,结果一直报错:无法连接配置中心所在的git地址,研究了好久终于解决了,下面说一下部署的步骤和解决的思路。
【部署步骤】1. 指定一个域名(2级域名就可以),开通端口6001(随便什么,只要不冲突)
2. 服务器下载git并配置秘钥
(1) 先检查服务器上面有没有秘钥,id_rsa是私钥,id_rsa.pub是公钥,这两个都有就不用再生成了
(2) 如果没有就需要生成秘钥,执行命令 ssh-keygen -t rsa -C "xxxxx@xxxxx.com",然后按3次回车就可以
(3) 执行命令more id_rsa.pub打开文件,然后把id_rsa.pub里面的内容复制下来
3. 登录码云(因为我是用码云作为项目管理工具,github也是这个步骤),配置公钥
个人中心 -- 设置 -- ssh公钥
把你刚刚复制的id_rsa.pub里面的内容,放到这里(ssh-rsa和结尾的邮箱,放不放都行,码云可以识别,所以不用纠结)
然后点击确定就配置成功了
4. 回到服务器,执行命令 ssh -T git@gitee.com
如果出现这种信息,说明公钥配置成功,服务器和码云已经可以建立连接了
5. 将配置中心服务端jar包上传到服务器,执行命令 java -jar 配置中心.jar
然后你就可以看到配置中心启动成功了,但是仅仅这样是不够的,如果退出服务器,服务就会停止。
所以需要 ctrl+z 退出到控制台,执行命令 bg, 执行命令 exit
这样即使退出服务器,服务也能保持在后台运行
【出现问题】本来以为不会有什么问题,万万没想到报错了,如下图所示:
这错误是说不能连接我给的git地址啊,奇怪,下面我们来排错:
1. 首先想到的是权限不够,回到服务器,执行命令git clone git@gitee.com:woaaadebg11111/xxxxxxxxxxxxxx.git
结果可以clone下来,这就说明权限是够的,服务器的git也是安装成功的
2. 如果权限是够的,会不会是访问地址的问题,但是能在报错信息里看到我们在代码里配置的git地址,说明地址也是对的
3. 公钥配置不成功,上面我们执行ssh -T git@gitee.com是通的,所以这个错误原因也排除
4. 配置文件不正确,但是我本地是能正常运行的啊,查了一下配置中心服务端的配置文件,发现通过ssh方式连接的都在配置
文件里面配置了私钥,抱着试一试的态度,修改了配置文件,把服务器id_rsa里面的私钥copy到代码里面
新增ignore-local-ssh-settings和private-key
private-key里的东西在哪里找?
按上面步骤生成密钥之后,会生成两个文件id_rsa和id_rsa.pub,这个private-key里面的内容就是id_rsa里面的复制下来即可
一般只支持RSA的密钥,如果生成的不是,请重新生成
ssh-keygen -m PEM -t rsa -b 4096 -C "11111111@qq.com"
5. 测试
居然好使了!!! 看来真是需要配置私钥,想一想其实也对,用公钥的话服务是无状态的,谁都可以用,需要在代码里指定私钥才可以保证安全性