zhouying23 发表于 2018-9-18 07:35:58

使用gitolite-3.6搭建git镜像服务器

  需求:
  在外网搭建一台git服务器,大家在任何联网的地方可以向git服务器提交、clone,如果一个仓库特别大,在公司clone一个仓库的时候会使用时间过长,带宽占用等不利的因素,那我们在公司内网搭建一台镜像服务器,clone代码的时候可以从镜像服务器clone,会省很多时间,下面我们开始。
  我是参照gitolite官网文档搭建的:http://gitolite.com/gitolite/mirroring.html
  环境:
  总共3台机器,一台在外网git主服务器(以下称为servser1),一台在公司内网git镜像服务器(以下称为server2),另外一台客户机(以下称为client),此实验环境都使用的rhel6.5。
  server1的ip:192.168.1.172
  server2的ip:192.168.1.165
  client 的ip:192.168.1.180
  在3台机器的hosts文件中添加以下内容:
192.168.1.172 server1.example.com  
192.168.1.165 server2.example.com
  在server1和server2上安装git,并且创建git账户
#yum -y install git perl-Time-HiRes  
#useradd git
  
#su - git
  在client、server1、server2上生成key
#ssh-keygen  在client端上传到server1、server2,并改名为admin.pub,并且下载server1的pubkey并且命名为server-server1.pub(此处服务器的pubkey必须以server-开头)
#scp .ssh/id_rsa.pub server1.example.com:/tmp/admin  
#scp .ssh/id_rsa.pub server2.example.com:/tmp/admin
  
#scp server1.example.com:/home/git/.ssh/id_rsa.pub /tmp/server-server1.pub
  在server1、server2上创建config文件,文件权限设置为644
  server1的配置:
#vim .ssh/config  

  
###添加以下内容###
  
host server2
  
user git
  
hostname server2.example.com
  
identityfile ~/.ssh/id_rsa
  
###保存退出###
  

  
#chmod 644 .ssh/config
  server2的配置:
#vim .ssh/config  

  
####添加以下内容
  
host server1
  
user git
  
hostname server1.example.com
  
identityfile ~/.ssh/id_rsa
  
###保存退出###
  

  
#chmod 644 .ssh/config
  在server1、server2端下载安装gitolite
#git clone git://github.com/sitaramc/gitolite  
#mkdir ~/bin
  
#gitolite/bin/install -to /home/git/bin
  
#gitolite setup -pk /tmp/admin.pub
  到此我们可以在client端克隆gitolite-admin仓库
  创建server1,server2目录以便区分是哪台服务器的gitolite-admin仓库
#mkdir server1  
#cd server1
  
#git clione git@server1.example.com:gitolite-admin
  
#cd gitolite-admin
  
#cp /tmp/server-server1.pub keydir/
  
#vim conf/gitolite.conf
  

  
###添加server-server1到gitolite-admin的仓库读写权限###
  
repo gitolite-admin
  
    RW+   =   admin server-server1
  

  
repo testing
  
    RW+   =   @all
  
###保存退出###
  

  
#git add . && git commit -m "update gitolite.conf,add server key" && git push
  创建server2目录,重复以上步骤
  在server1端执行以下命令出现 ‘hello server-server1, this is git@server2 running’消息则生效
#ssh server2 info  在client端修改server1、server2仓库的gitolite.conf文件,添加以下内容,并且提交
repo gitolite-admin  
    RW+   =   admin server-server1
  
    option mirror.master = server1
  
    option mirror.slaves = server2
  
    option mirror.redirectOK = all
  

  
repo testing
  
    RW+   =   @all
  
    option mirror.master = server1
  
    option mirror.slaves = server2
  
    option mirror.redirectOK = all
  

  

  
#git add . && git commit -m "update gitolite.conf" && git push
  在server1端修改git家目录下 .gitolite.rc文件(总共修改三个地方)
#vim .gitolite.rc  

  
###取消注释,更改hostname为server1###
  
HOSTNAME                  =>"server1",
  

  
###取消注释###
  
'mirror',
  
'Mirroring',
  在server2端修改git家目录下 .gitolite.rc文件(总共修改三个地方)
#vim .gitolite.rc  

  
###取消注释,更改hostname为server1###
  
HOSTNAME                  =>"server2",
  

  
###取消注释###
  
'mirror',
  
'Mirroring',
  此时镜像服务器就已经搭建完成了,我们来测试一下是否能同步
  在client端server1目录克隆一下主服务器的测试仓库,在里面创建文件提交以后看看是否会同步到镜像服务器。
#git clone git@server1.example.com:testing  
#cd testing/
  
#touch test.txt
  
#git add . && git commit -m "add file" && git push origin master
  在client端server2目录克隆镜像服务器的testing仓库
#git clone git@server2.example.com:testing  
#ls testing
  此时看到testing目录下有test.txt文件,说明我们的镜像服务器搭建成功了
  如果所有的仓库都做镜像只要添加以下内容就可以了
repo @all  
    option mirror.master = server1
  
    option mirror.slaves = server2
  
    option mirror.redirectOK = all


页: [1]
查看完整版本: 使用gitolite-3.6搭建git镜像服务器