最近课题小组需要搭建一台Git服务器,来进行代码共享与合作。从各种大牛的博客中了解到版本控制经历了CVS->SVN->GIT,果断选择用GIT。但GIT是开发在linux下的软件,搬到windows下用也是可以的。但为了学习学习,还是决定用linux做服务器操作系统,然后在windows下进行管理。但是如何搭建GIT呢?用到什么软件呢?经过几寻google,得知有gitosis和gitolite,而且现在的gitolite要更好,果断选择最好的。Git服务的提供是通过ssh,对于SSH的简单用法请参见Git服务器搭建之SSH基本用法(一),因此需要在服务器上安装SSH服务。下面就如何搭建基础Git服务器做详细描述:

 

服务器操作系统为ubuntu Linux server 12.04.1,假定服务器管理员为cglab,主机名为labserver。

1.系统配置及服务安装

 

(1)Git服务需要SSH,首先确定是否已安装SSH,Ubuntu 电脑上需要安装 openssh-server :

       $sudo apt-get install openssh-server

(2)在服务器上创建专用账号gitadmin,并将此账号加到gitolite用户组,用来提供git身份验证:

$sudoaddgroup gitolite

$sudoadduser --ingroup gitolite gitadmin

2.SSH的公钥认证

该操作是在客户端,对于SSH的公钥认证请自行google。由于不能用同一个公钥用作shell访问和gitolite访问,我们需要建两个公私钥对,一个给shell,一个给gitolite用。you cannot use the same key for both shell access and for gitoliteaccess

$ssh-keygen

该命令会在用户主目录下创建 .ssh 目录,并在其中创建两个文件:

(1)id_rsa, 私钥文件。是基于RSA 算法创建。该私钥文件要妥善保管,不要泄漏。

(2)id_rsa.pub, 公钥文件。和id_rsa 文件是一对儿,该文件作为公钥文件,可以公开。

创建了自己的公钥/私钥对后,就可以使用下面的命令,实现无口令登录远程服务器,即用公钥认证取代口令认证。

$ssh-keygen –f ~/.ssh/gitadmin  //该命令创建一个指定名字为gitadmin的公私钥文件对。

$scp ~/.ssh/gitadmin.pub cglab@labserver:/tmp///上传到服务器用作gitolite访问,见gitolite安装

$ scp ~/.ssh/id_rsa.pubcglab@labserver:/tmp/   //用作shell访问

$ssh cglab@labserver    //以cglab账号登陆服务器

cglab@labserver:~$sudo ssh-copy-id –i /tmp/id_rsa.pubgitadmin@labserver  //加入到SSH登陆身份gitamdin,用作shell访问

 

回到客户端,在~/.ssh/下创建SSH主机别名,以方便登陆服务器访问gitolite用。

$vi ~/.ssh/config

其内容为:

host gitadmin

 user gitadmin

 hostname labserver

 port 22

 identityfile ~/.ssh/gitadmin

$ssh gitadmin  //将以服务器账号gitadmin身份登陆服务器,注意不能登陆shell,但可访问gitolite

 

$ssh gitadmin@labserver //将用默认的id_rsa来认证,可以登陆shell

 

3. 安装git和gitolite

$sudo apt-get install git-coregitolite  //对服务器操作

(1)如果是默认安装目录,请用此步,过程中不需要设置任何东东,其repositories目录默认在/home/usrname/下

$sudo su – gitadmin      //切换账号到gitadmin

$gl-setup /tmp/gitadmin.pub  //为gitadmin配置git,其中/tmp/gitadmin.pub为第二步上传的公钥

(2)如果是指定安装目录,需要创建目录并设置相关权限才可以,比如想把repositories目录安装在/srv下则:

$sudo mkdir /srv/repositories

$sudo chown gitadmin/srv/repositories  //改变目录的拥有者

$sudo su – gitadmin

$gl-setup /tmp/gitadmin.pub  //在此步,设置$REPO_BASE=”/srv/repositories”

 

回到客户端:

$git clone gitadmin:gitolite-admin  //使用gitadmin的专用公钥,克隆gitolite-admin 库

 

 

到此,git服务器的安装与配置已完成,下篇将介绍其管理。

 

 

辉辉                                

(FightingBull Studio)                

 

 

 

 

 

Logo

更多推荐