本人也是小菜鸟一个,这几天折腾一下Gitolite的镜像服务器,上网找了一些资料,参考了几个前辈的文章,最后总算是搭成了,记录一下以备忘。不一定全正确
1、登陆本地管理账号,我们这里用root,用ssh-keygen生成一个管理公钥
2、在主备服务器上安装gitolite之前装好相关的软件
apt-get install git-core openssh-server
同时新建git用户
adduser --system --shell /bin/bash--group git
到root用户下,将生成的公钥文件拷贝到主备服务器上并命名为,安装时用该公钥做为管理员公钥,中间会要求输入一次git用户的密码
scp .ssh/id_rsa.pub git@gitserver:~/admin.pub
scp .ssh/id_rsa.pub git@gitmirror:~/admin.pub
到主备服务器登陆git用户,同样的用ssh-keygen命令生成各自的公钥文件,然后在.ssh目录下新建一个config的配置文件,将文件的内容指向对方服务器
3、下载并安装Gitolite
下载Gitolite: git clone git://github.com/sitaramc/gitolite
在git家目录下新建一个bin目录,并把bin目录加入系统变量
开始安装Gitolite,要使用之前传过来的admin.pub公钥
镜像服务器上也进行一样的安装操作
4、回到管理员帐户root用户下(我这里用的是root用户直接管理,也可能建其它用户作为权限管理用户),分别下载主备服务器上的管理仓库gitolite-admin并命名为gitserver和gitmirror
分别将之前主服务器上git用户生成的公钥复制到gitserver和gitmirror目录下的keydir目录中并将公钥命名为以server-开头的公钥,该公钥用来主备服务器同步使用
修改gitserver和gitmirror目录下conf/gitolite.conf配置文件,将server-gitserver加入gitolite-admin仓库的写权限中
修改完成后用将修改提交到服务器中
提交后到主服务器用git用户登陆后可以验证公钥是否生效
ssh gitmirror info
看到以hello server-xxxxx开头的信息则生效了
5、配置主备服务器的镜像
到管理员root处修改gitserver和gitmirror目录下conf/gitolite.conf配置文件在gitolite-admin仓库下添加下面的内容
optionmirror.master = gitserver
option mirror.slaves = gitmirror
option mirror.redirectOK = all
修改完成后,提交
分别到主备服务器用git用户登陆,在git家目录下打开.gitolite.rc文件,打开镜像配置,一共要修改三个地方(我用的是gitolite3.5.3.1的版本,早期的版本修改的地方会有不同)
=>
=>
=>
修改完成后保存退出这样子gitolite-admin仓库的镜像配置就基本完成了,测试一下吧
在gitserver目录下修改gitolite.conf文件的内容,然后提交到服务器
到gitmirror目录下git pull看看有没有更新
提示有冲突了,说明主服务器上的更新己到镜像服务器了,但是和你之前下载的有冲突了,重新clone一次镜像服务器上的gitolite-admin目录,这时再看看
更新成功了。
这样子你只要将要同步的仓库下设置镜像配置,对就应的仓库每次提交后都会自动同步到镜像服务器中,当然你也可以对所有的仓库都同步,只要这样子配置一下就可以了
提交吧,这样子就不对针对每个仓库都设置了
注意,以后要新建仓库只要在配置文件中设置好仓库名称及相应的权限,在提交后系统就会自动根据配置文件来创建仓库,这样子后面的同步才会生效,否则如果你手动建仓库的话则要把gitolite重新装一次。如: