使用Gitolite搭建Git服务器
需要用到的软件
其实Gitolite的搭建过程中,Gitweb、Apache不是必须的,Gitweb、Apache跟Gitolite一起使用,看到的效果就像这个一样 http://git.chromium.org/gitweb/
环境
假设Server用的是Ubuntu 12.04
Client能通过SSH连接至Ubuntu Server
Server、Client都安装好Git,怎么安装?Google一下吧!
如何搭建?
Server:
添加一个计算机用户,并设置密码,如git:
# -s指令用于指定用户的默认shell,不指定的话,默认是/bin/sh,这个shell在ssh下支持有问题
sudo useradd -m git -s /bin/bash
sudo passwd git
Client:
设置你本机的git用户信息(非必须):
git config --global user.name “xxx”
git config --global user.email xxx@email.com
创建一个SSH公钥/私钥对:
ssh-keygen -t rsa
上传公钥到服务器:
scp ~/.ssh/id_rsa.pub git@server(ip):/home/git/admin.pub
SSH连接到Server:
ssh user@server
Server:
server取得root,安装gitolite:
sudo -sH
apt-get install gitolite
切换至git用户,运行gitolite安装脚本:
su - git
gl-setup /home/git/admin.pub
客户端获取gitolite管理库:
git clone git@server:gitolite-admin.git
cd gitolite-admin
编辑gitolite配置文件,进行项目、用户添加等操作:
sudo vim conf/gitolite.conf
怎么对库进行管理、用户添加、授权等操作,gitolite的文档里都有详细介绍的。
配置好以后,push到Server上即可!
Gitweb的安装、配置(都是在Server上)
首先安装一下Apache:
sudo apt-get install apache2
安装Gitweb:
sudo apt-get install gitweb
安装完成后,修改下gitweb.conf:
sudo vim /etc/gitweb.conf
$projectroot = "/home/git/repositories"
重启下Apache
sudo service apache2 restart
若 "/home/git/repositories" 可被访问,即可通过 http://server/gitweb 访问你的git库了!
补充: 修改git相关文件与目录的权限,以支持gitweb的访问。
vi ~/.gitolite.rc
# 将 $REPO_UMASK = 0077; 改为 $REPO_UMASK = 0027; 以支持gitweb的权限。
# 在每次push后,gitolite会修改相关的repo的权限。
chmod g+r /home/gitolite/projects.list
chmod -R g+rx /home/gitolite/repositories
下面还有更简单的方法
安装gitolite以及git,只需要指定gitolite就可以,gitolite依赖git,apt-get会自动的寻找到依赖包,并安装。
sudo apt-get install gitolite
创建git用户,并切换到git用户下, 用户名最好为git,这样用ssh方式迁出的格式为:git@server:repo
,如果是其他用户名的话,那么@前就为相应的用户信息。
sudo useradd -m git -s /bin/bash
passwd git
su - git
准备gitolite管理员的公钥文件,win下可以用putty生成,只要注意把Key comment
的内容设置为空,再把公钥拷贝出来后黏贴到相关的文件就好了。
# 用vi创建相关的文件,并在其中贴入公钥信息
vi ~/admin.pub
执行gitolite的安装,命令后跟的是管理员的公钥文件。
gl-setup ~/admin.pub
根据需要修改配置文件,完成安装。