- 安装前需要普及一下基本原理哈git的仓库管理是通过gitolite这个开源项目工具来管理的,而他本身也是一个git仓库形式存在。另外,gitolite 采用的是 SSH 协议并且使用 SSH 公钥认证,所以基本上访问仓库就需要公钥的上传。
所有的仓库/用户管理都是通过gitolite-admin仓库项目下的/conf/gitolite.conf 文件来配置的,而用户的登录信息是通过往keydir目录下添加公钥实现的。
当管理员更改仓库内容并提交到服务器之后,服务器便有一个事件钩子来处理相关事情,比如建立仓库和用户等。
所以从上面的基本原理,可以大致知道需要做的事情就是安装git,ssh,gitolite,上传管理员的公钥。那么接下来就详细介绍!
- 一. 安装Git和建立git用户首先登录服务器,安装基本环境(最好用管理员安装就不用sudo了呵呵,我默认是root用户了哈)
1yum install perl openssh git
然后再添加专为git相关操作的用户git
1adduser --system --shell /bin/sh --create-home --home-dir /home/git git然后再添加我们的仓库文件夹,进入/home/git 建立文件夹,并授权给git用户(其实这一步骤,gitolite安装时会帮你搞定的)
1234cd /home/gitmkdir repositorieschown git:git ./repositorieschown 700 ./repositories
- 二. 安装gitolite在步骤一中我们建立了git用户了,那就切换过去吧
1su git
然后用git拉下gitolite的项目安装文件
1git clone git://github.com/sitaramc/gitolite拉下来后会在当前目录下看到gitolite文件夹吧,那就对了!然后开始安装。
在git用户目录下建立bin文件夹,并将gitolite安装到此目录下面
12mkdir -p $HOME/bingitolite/install -to $HOME/bin如果报错,那就是缺少模块,根据提示少啥就安装啥(请回到root用户来安装哈)。比如我安装时就出现了问题,就安装了以下perl的包。安装好了回到上面的步骤,直到安装成功。
反正我在centos6.2 下面是报错了的,大概意思就是perl的缺少模块了,那就安装了一下
1yum install perl-Time-HiRes安装完毕之后就回到上面继续安装gitolite吧。
那么至此就是安装算完毕,但是你肯定很纳闷,都还没配呢!对的你还有一部配置管理员等信息,我把安装最后一部单独拿出来讲了
- 三. 配置gitolite的管理员,仓库地址从最开始的原理都讲了的,gitolite是通过ssh协议的公钥管理来实现身份验证的。所以你可以把你本地电脑的公钥上传上去作为默认的管理员来管理所有的配置信息。那好,回到本地电脑生成公钥(当然你也可以直接在服务器上管理,那就在服务器上生成公钥就好了)!在本地电脑上先看看有没有~/.ssh文件夹,如果有说明已经生成过了,没有就执行下面的操作就好了
1ssh-keygen
你再去看看~/.ssh文件下面应该有id_rsa.pub 和 id_rsa两个文件了吧,其中id_rsa是你的私钥要好好保存的,id_rsa.pub是公钥可以给你要访问的服务器的。
说给就给,复制到服务器上面去吧
1scp ~/.ssh/id_rsa.pub serverUserName@serverHost:/tmp上面命令当中的serverUserName和serverHost分别是上面服务器对应的用户帐号和地址,这样就把本地的公钥上传到服务器的/tmp目录下面了。
那么我们回到服务器上面来操作了,开始配置gitolite啦,很简单的。
先转到/tmp目录下面把上传上来的id_rsa.pub重命名”你的管理员账号名.pub”。因为gitolite是根据这个文件名来设立帐号的,比如我会命名为admin
12cd /tmpmv id_rsa.pub admin.pub然后开始用这个公钥来配置gitolite了(这个时候应该还是在git用户下面操作的哈)
1$HOME/bin/gitolite setup -pk admin.pub就这样安装好了gitolite,你可以进入你的仓库文件~/repositories看看,应该增加了两个仓库了文件了gitolite-admin.git 和 test.git。其中前者是管理仓库的,后者是测试用的。
- 四. 开始配置管理因为管理员设为了本机的,那我们现在回到本机来管理试一下吧!首先在本地将管理gitolite-admin仓库拉下来
1#git clone git@serverHost:gitolite-admin
可以看到不用密码都能搞定了吧,呵呵这就是ssh协议作用。具体自己google一下吧。然后进入仓库可以看到conf和keydir两个文件夹。其中conf/gitolite.conf就是添加用户/仓库的配置文件,keydir目录下就是放置对应用户的公钥的地方。
例如我会修改配置文件为如下内容:
12345678910repo gitolite-adminRW+ = adminrepo testingRW+ = @all@mygroup=admin usr1 usr2repo myreposRW+ = @mygroup这样我就有了一个自己的用户组和仓库了,具体如何配置可以参考项目说明
修改好了直接push到服务器,服务器就会自动创建好对应的仓库和用户了,你就好好享受git之旅吧!