使用git服务器实现生产环境应用服务器代码更新管理的方案
来源:互联网 发布:语法高亮 js 编辑:程序博客网 时间:2024/05/28 23:12
方案的缘由是生产机房除指定的两台管理主机外,其它应用主机均不开放公网SSH管理端口。在对应用主机上的应用进行源码更新时,虽然可以借助架设的堡垒机或lrzsz工具实现大小文件、甚至批量文件的传输,但lrzsz工具仅适用于上传小文件,尤其是在通过堡垒机进行ssh代理中转时更为突出。而堡垒机虽然提供了WEB方式的文件传输(多文件对多点)功能,但每次都要使用浏览器登录进行操作,略麻烦。
因此,设计了这样一个基于git服务器的源码传输方案。
总体思路是:
- 在生产机房开放了公网SSH管理端口的主机上部署git服务器;
- 从公司办公环境使用图形化git工具管理代码文件,并推送至远程的git服务器;
- 在生产环境中,应用主机需要更新代码时,先ssh登录到该主机,将git服务器的代码仓库克隆到本地,以后每次需要更新时只要运行一次git pull即可获取到最新版本的代码;
- 虽然没有进一步实现,但借助fabric工具应该可以实现对多个应用主机的批量自动化处理。
0、设置git服务器
以CentOS6.5为例。
在git服务器上安装git软件包,并为每个有代码更新权限的用户创建一个专用的git仓库,以避免相互干扰。
#yum -y install git
#useradd git
#su - git
创建一个测试使用的仓库:
$git init --bare codes.git
修改/etc/passwd禁用shell登录,git用户可以正常通过ssh使用git,但无法登录shell:
git:x:5023:5023::/home/git:/usr/bin/git-shell
1、设置用户访问远程git库:
创建SSH Key。
(1)安装图形化工具tortoiseGit,下载地址:https://tortoisegit.org/download/ 。
(2)安装完成后,从菜单中找到PuTTY Key Generator并运行。
在弹出的界面中,点击"Generate",按提示完成制作key的步骤。
(3)手工复制工具界面中生成的公钥代码的内容并追加到远程ssh服务器的authorized_keys文件中。
(4)点击"Save private key"将私钥保存至本地。
2、选择一个本地目录用于存储git仓库代码,并克隆远程仓库到本地
在选中的目录上右击并选择TortoiseGit-Clone,按下图填写URL并加载刚才保存的ssh私钥。点击ok完成配置。
当远程的git服务器使用了自定义的ssh端口时,TortoiseGit会返回一个网络报错。
3、设置自定义的git服务器ssh端口
由于tortoiseGit不能支持ssh的自定义端口,所以需要通过putty这个工具提供支持。
需要下载一个putty,然后按照下文指导设置一个session 会话的连接并保存。
然后再使用tortoiseGit进行代码push时就可以连接正确的ssh端口了。
下载putty:http://the.earth.li/~sgtatham/putty/0.66/x86/putty.exe
运行putty,新建并保存一个session会话连接:
在session界面中输入host ip,port以及session的名称。
从左侧菜单中选择Connection-SSH-Auth,在右侧选择自己的私钥。
回到Session菜单下,点击"Save"。然后可以关闭putty工具了。
4、重新将远程仓库克隆到本地
这次需要将第2步中使用过的URL地址修改如下,使用第3步中定义的session name替换掉远程服务器的ip地址。
点击ok,后即可以成功完成克隆。
5、使用TortoiseGit进行代码add、commit、push操作
在windows的本地git仓库目录中,使用鼠标右键完成文件的“add”操作;
“add”成功后的提示窗口中提供了"commit"的按钮,点击"commit"可以提交到本地master分支;
"commit"成功后的提示窗口中提供了"push"的按钮,点击"push"可以推送到远程git服务器origin创库的master分支。
点"close"完成全部操作。
6、在生产环境应用主机上面下载代码并进行更新
1)登录需要更新代码的应用主机,切换到指定的授权系统用户(如myuser)
对myuser授权的方法,是将该主机的myuser用户的公钥添加到git服务器git用户的.ssh/authorized_keys文件中,以支持公钥无密码操作git shell。
2)在应用主机上选择一个用于存放git代码的路径,如/tmp/gittest
$mkdir -p /tmp/gittest
$cd /tmp/gittest
3)第一次运行时需要先把远程库克隆到本地一份:
$git clone ssh://git@192.168.10.11:68806/home/git/codes.git
Initialized empty Git repository in /tmp/gittest/codes/.git/
warning: You appear to have cloned an empty repository.
warning: You appear to have cloned an empty repository.
完成克隆后,在/tmp/mygit/codes下已经有一份最新的代码了,且建立了本地master分支与远程origin库的关联。
以后再需要获取新版本的代码库,只需要执行git pull命令,如下一步所示。
4)使用git pull来获取远程库的代码到本地
$cd /tmp/gittest/codes
$git pull origin master #从远程仓库获取最新版本代码并与本地master分支进行合并
注:第一次执行后可以直接运行git pull,会默从远程origin取代码覆盖本地master分支。
其它git管理命令:
$git log #查看git操作记录
$ git branch #查看本地分支
* master
$ git remote -v #查看远程仓库
origin ssh://git@192.168.10.11:68806/home/git/codes.git (fetch)
origin ssh://git@192.168.10.11:68806/home/git/codes.git (push)
* master
$ git remote -v #查看远程仓库
origin ssh://git@192.168.10.11:68806/home/git/codes.git (fetch)
origin ssh://git@192.168.10.11:68806/home/git/codes.git (push)
0 0
- 使用git服务器实现生产环境应用服务器代码更新管理的方案
- 使用git管理服务器开发环境配置
- git 上传更新的代码到服务器
- git服务器更新、提交代码
- 关于生产环境服务器的登录安全问题
- SVN化的WEB目录更新方案以及管理服务器群的PSSH并行工具的使用
- webstorm中使用git管理服务器上的代码——入门级
- Git--将服务器代码更新到本地
- 从生产环境同步代码到测试服务器
- git服务器的使用
- 实现生产环境的监控&管理
- 代码管理之git服务器搭建
- ubuntu11.10搭建git服务器, 使用gitosis管理git服务器
- WebSocket :Nginx+WebSocket内部路由策略推送服务器的实现(附可生产环境应用代码)
- Git简单应用:部署代码到服务器
- 生产环境下的服务器的Crontab写法
- 使用git代替FTP部署代码到服务器的例子
- 【Webhooks】使用Git的Webhooks进行服务器自动部署代码
- git repo回退代码
- id3lib-3.8.3在linux下的编译
- 如何自动更新-CMD
- iOS获取网络类型和运营商信息
- linux系统下解析shell标准输出流生成json包demon
- 使用git服务器实现生产环境应用服务器代码更新管理的方案
- 回旋函数写法与str_pad函数
- 第一个用java-swing写的 图形界面程序-扫雷
- 山东省第六届蓝桥杯 ///标题:牌型种数//c/c++组
- java中Double类型的运算精度问题
- 智能后视镜采用OBD卡位车联网入口
- js遍历json数组
- maven配置错误
- android与后台交互