CentOS安装Gitoite双机
运行环境
操作系统:CentOS 7.4 64bit
git:1.8.3.1
gitolite:3.6.10
需求说明
git原生不支持权限管理,gitolite可实现git的权限管理
Control access to many git repositories:
read access controlled at the repo level,
and write access controlled at the branch/tag/file/directory level, including who can rewind, create, and delete branches/tags.
办公室有两台服务器,安装git服务,用于研发产物的版本管理,为保证数据安全,安装gitolite,配置双机镜像。
配置过程
安装gitolite
在服务器上新建 git 用户,在两台服务器上安装 gitolite。
git clone git://github.com/sitaramc/gitolite |
安装过程中出现异常信息:
Can't locate Data/Dumper.pm in @INC (@INC contains: /work/git/gitolite/src/lib /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /work/git/gitolite/src/lib/Gitolite/Common.pm line 67. |
安装 perl 包后,再次执行 gitolite/install -to $HOME/bin
yum install 'perl(Data::Dumper)' |
为管理员授权
~/bin/gitolite setup -pk admin.pub |
admin.pub为gitolite管理员计算机的公钥
在gitolite管理员计算机上执行
git clone git@host:gitolite-admin |
check 出来 gitolite-admin 库,在 conf 配置库访问权限,keydir 保存使用者公钥,commit 并 push 到服务端即可生效。
镜像配置
设置服务器别名
服务器 server1,别名为 git1,修改 ~/.gitolite.rc 文件
# the Mirroring feature needs this |
服务器 server2,别名为 git2,修改 ~/.gitolite.rc 文件
# the Mirroring feature needs this |
生成密钥对
服务器 server1
ssh-keygen |
服务器 server2ssh-keygen
cd .ssh/
cp id_rsa.pub server-git2.pub
将 server-git1.pub 和 server-git2.pub 推送到两个 gitolite-admin 中。
配置 ssh 连接
在服务器上,为访问其他服务器,设置 ssh 连接
服务器 server1
新建文件 ~/.ssh/config
host git2 |
服务器 server2
新建文件 ~/.ssh/config
host git1 |
将文件的权限设置为 644
chmod 644 ~/.ssh/config |
否则会有错误信息:
Bad owner or permissions on /work/git/.ssh/config |
在服务器 server1 上 访问服务器 server2
ssh git2 info |
第一次访问后,需要手动输入 yes 确认
结果返回如下信息,才算正常,再执行后面的步骤
hello server-git2, ... |
在服务器 server2 上 访问服务器 server1,同理
同步配置
修改两台服务器的 ~/.gitolite.rc 文件
................ |
修改两台服务器的 gitolite 配置文件,增加下列配置:
repo @all |
上述配置,对于所有库,均配置为 git1 为源,git2 为镜像。
配置后,git2 服务器不再接受 git push,而所有推送到 git1 的请求,将会自动同步至 git2 服务器。