CentOS6.5 Gitolite构建Git镜像服务器

来源:互联网 发布:得熊猫者得天下知乎 编辑:程序博客网 时间:2024/05/17 02:40

若有大量其他的客户机与Git服务器不在同一个数据中心,这样在批量进行Git克隆等操作时,会出现专线带宽长时间占用、操作速度缓慢等现象,而长时间占用带宽会给业务带来不良影响。解决这种现象,我们可以在客户机所在的数据中心搭建一台Git镜像服务器(Git镜像服务器与Git服务器相同,客户机可以直接从这台服务器进行克隆等操作)。

下面来进行Git镜像服务器的构建:

一、环境准备

三台CentOS6.5 系统服务器,一台做客户机,两台做服务机,配置如下:

客户机:

主机名:gclient.ylhb.com

IP:10.0.0.201

hosts绑定:

10.0.0.211 gserver1.ylhb.com 10.0.0.212 gserver2.ylhb.com

主服务机1:

主机名:gserver1.ylhb.com

IP:10.0.0.211

hosts绑定:

10.0.0.211 gserver1.ylhb.com 10.0.0.212 gserver2.ylhb.com

镜像服务机2:

主机名:gserver2.ylhb.com

IP:10.0.0.212

hosts绑定:

10.0.0.211 gserver1.ylhb.com 10.0.0.212 gserver2.ylhb.com

二、安装及配置gitolite(两台服务机上)

1.安装git及相关包

yum install zlib-devel perl-CPAN perl-devel curl-devel gettext expat-devel gettext-devel openssl-devel perl-Time-HiRes git -y  

2.创建git用户

useradd -d /data/git git  echo '111111' | passwd --stdin git    

3.安装gitolite

su - git  mkdir bin  git clone https://github.com/sitaramc/gitolite.git  ./gitolite/install --to /data/git/bin/  

4.生成git用户秘钥对

ssh-keygen -t rsa    #一直回车  

5.创建.ssh/config文件并分别配置如下

主服务机1:

vim /data/git/.ssh/confighost gserver2user githostname 10.0.0.212identityfile /data/git/.ssh/id_rsa
文件权限设置为644

chmod 644 /data/git/.ssh/config
镜像服务机2:

vim /data/git/.ssh/confighost gserver1user githostname 10.0.0.211identityfile /data/git/.ssh/id_rsa
文件权限设置为644
chmod 644 /data/git/.ssh/config

三、客户端生成秘钥对,为gitolite配置管理员

客户机:

安装git

yum install git -y

创建git用户(root用户下)

useradd gitecho '111111' | passwd --stdin git
生产git用户密钥对
ssh-keygen -t rsa    #一直回车
上传公钥到两台服务机,并改文件名为admin.pub

scp .ssh/id_rsa.pub git@10.0.0.211:/tmp/admin.pubscp .ssh/id_rsa.pub git@10.0.0.212:/tmp/admin.pub

下载服务机1上的git用户的SSH公钥,并该文件名为server-server1-pub

scp git@10.0.0.211:~/.ssh/id_rsa.pub /tmp/server-gserver1.pub

两台服务机:

切换到git用户,为gitolite配置管理员

su - git./bin/gitolite setup -pk /tmp/admin.pub

四、客户机克隆gitolite管理库并配置

切换到git用户,创建两个目录gserver1和gserver2,分别克隆主服务机和镜像服务机管理库

gserver1目录下:

git clone git@10.0.0.211:gitolite-admin.git  cd gitolite-admincp /tmp/server-gserver1.pub keydir/
配置conf/gitolite.conf

vim conf/gitolite.confrepo gitolite-admin    RW+     =   admin server-server1 repo testing    RW+     =   @all
提交到远程

git add . && git commit -m "1" && git push

gserver2目录下:

git clone git@10.0.0.212:gitolite-admin.git  cd gitolite-admincp /tmp/server-gserver1.pub keydir/
配置conf/gitolite.conf
vim conf/gitolite.confrepo gitolite-admin    RW+     =   admin server-server1 repo testing    RW+     =   @all
提交到远程
git add . && git commit -m "1" && git push

验证:

主服务机上,git用户下执行以下命令

ssh gserver2 info

出现hello server-gserver1, this is git@gserver2 running gitolite3 v3.6.5-4-g6ed0156 on git 1.7.1则配置成功


五、配置mirror功能

客户机上、git用户gserver1、gserver2目录下,分别配置gitolite.conf如下,并提交

repo gitolite-admin    RW+     =   admin server-gserver1    option mirror.master = gserver1    option mirror.slaves = gserver2    option mirror.redirectOK = all repo testing    RW+     =   @all    option mirror.master = gserver1    option mirror.slaves = gserver2    option mirror.redirectOK = all
提交更改到远程

git add . && git commit -m "2" && git push
主服务机1上,git用户下修改".gitolite.rc"文件

vim .gitolite.rcHOSTNAME                  =>  "gserver1", 'mirror', 'Mirroring',
镜像服务机上,git用户下修改".gitolite.rc"文件
vim .gitolite.rcHOSTNAME                  =>  "gserver2", 'mirror', 'Mirroring',

以上即完成镜像服务器配置。


六、测试验证

客户机上,git用户gserver1目录下克隆主服务机1的测试库,在里面创建文件并提交,看是否能同步到镜像服务机2

git clone git@10.0.0.211:testing.gitcd testing/echo "ylhb" > ylhbgit add . && git commit -m "3" && git push origin master
客户机上,git用户gserver2目录下克隆镜像服务机2的测试库,查看testing里是否有文件ylhb。

git clone git@10.0.0.212:testing.gitls testing
可以看到文件同步,则镜像服务器配置成功。



0 0