github终于被墙了,虽然我使用git一直是翻墙的。但是翻墙上上github.com时总有一种不爽快的感觉。
于是考虑在自己的机器上搭建一个git服务器,于是马上就想到树莓派那货,买了好久了,一直没时间玩,不如就先做个git服务器吧。
git服务器使用的是gitolite,网址为:https://github.com/sitaramc/gitolite,stackoverflow上面推荐的。用了一下觉得挺方便的,还不错。
简单记录下自己的安装过程:
准备工作:
一个linux系统
sh
git 1.6.6+
perl 58.8+
openssh 5.0+
一个以git为用户名的账户( sudo adduser --system --shell /bin/bash --group git)
确保你的服务器上$HOME/.ssh/authorized_keys为空或者不存在
然后把你的公钥(客户端上生成的ssh密钥对, 使用ssh-keygen命令生成,直接一路按enter即可)放到服务器上的$HOME目录下:并且以Username.pub命名,这里我们是git.pub
安装:
执行下列命令就可以了:
git clone git://github.com/sitaramc/gitolitemkdir -p $HOME/bin (记得把bin目录加到PATH环境变量哦)gitolite/install -to $HOME/bingitolite setup -pk YourName.pub (这里我们是git.pub稍后你就会知道这个公钥是用来干嘛的)
添加用户和仓库:
在你的客户端把这个clone下来:
git clone [email protected]:gitolite-admin
gitolite是通过对着仓库的push来实现添加用户和仓库等,所以要配置git server时只需修改这个仓库中的配置文件然后push即可
注意这里如果出现了需要密码的情况说明发生了错误,这也是为什么要在HOME目录下放一个git.pub的公钥,就是用来ssh公钥登录的。
添加新用户只需把每个新用户的公钥上传到keydir目录下并以username.pub的形式命名
如alice.pub, bob.pub, and carol.pub
下面的配置编辑了conf/gitolite.conf添加了一个名为foo的仓库,每个人的权限如下: repo foo RW+ = alice RW = bob R = carol
做了改变之后提交修改: git add conf git add keydir git commit -m 'added foo, gave access to alice, bob, carol' git push When the push completes, gitolite will add the new users to ~/.ssh/authorized_keys on the server, as well as create a new, empty, repo called 'foo'.
然后就可以直接在客户端git clone [email protected](ip or domain):repo_name就可以了。
参考:http://liwenqiu.me/blog/2011/08/14/gitolite-install-handbook/
http://www.ossxp.com/doc/git/gitolite.html#gitolite