Ubuntu/Linux/QNX · 2013/01/30

Ubuntu server上安装Git server(with gitolite)

上次在Windows7上通过copssh配置了一个git server(参考这里)。头几天用的其实还算稳定,也就麻烦点,每次同步的时候都需要重新导入公钥。这两天却死活也无法同步,用git extensions, git bash都不行,后来用github内置的git却sync成功了,总之用Windows做git看来还是不太靠谱。

今天花了点时间在Ubuntu server上部署了git server,下面是我的步骤。综合多篇文章才搞定,谢谢这些好人先:

http://blog.csdn.net/xiqobai/article/details/8112068;

http://blog.csdn.net/markddi/article/details/8287978;

http://blog.csdn.net/sheismylife/article/details/7204345;

http://no001.blog.51cto.com/1142339/1084552;

一、 安装git server:

1. 安装ssh服务:也可修改默认端口

sudo apt-get install openssh-server

2. 创建一个新的用户(比如git),并加入到admin用户组。如果没有admin用户组,还需要创建admin用户组:

sudo groupadd –g 888 admin //创建用户组admin

sudo adduser git                   //创建用户

sudo gpasswd –a git admin        //将git加入到admin组

3. 创建ssh key对。创建出来的公钥用来创建git仓库,私钥可以用来生成新的公钥,比如可以用puttyGEN导入这个私钥生成ppk格式的私钥用于git extensions。

ssh-keygen -t rsa (这里不能sudo,生成的key对在home/用户 下面的.ssh目录下)

4.  拷贝公钥至git家目录并改名为git.pub,用来为以后生成git管理员仓库用;

sudo cp .ssh/id_rsa.pub /home/git/git.pub

5. 切换至git并切至git家目录:

su – git

cd ~

6. 安装git-core:

sudo apt-get install git-core

7. 下载gitolite源码,如果git://无法下载请换用https://或者http://重试:

git clone git://github.com/sitaramc/gitolite gitolite-source

8. 配备相关目录:

mkdir -p ~/bin ~/share/gitolite/conf ~/share/gitolite/hooks

9. 安装gitolite:

./gitolite-source/install

/home/git/gitolite-source/src/gitolite setup -pk git.pub

 

二、配置用户和repo:

这个时候其实git server已经基本创建成功了,下面开始我们在Windows上操作,因为我们的开发都是在Windows上嘛。

10. 打开Git Extensions,克隆管理员目录:中间需要用puttyGEN工具导入刚才生成的git私钥转换为putty格式的ppk。

地址: ssh://git@domain.com:port/gitolite-admin.git

11. 配置repo和用户权限:

非常简单,打开gitolite-admin文件夹,里面有一个conf,里面的文件gitolite.conf可以配置repo和对应的用户;而在keydir文件夹,可以存放用户的公钥文件。修改好后,push到服务器就生成了新的repo。

对于新的用户,只需要用刚才生成key对的方法生成或者用puttygen生成key对就行了,公钥放在server上,私钥发给用户。

【注意】有个地方很重要,就是gitolite是共享用户的,即每个用户都用相同的地址克隆,而不是用自己的用户名去去克隆。比如ssh://git@domain.com:port/gitolite-admin.git,你虽然新建了用户,但每次用的都是git这个用户。但是不同的用户权限是不一样的,当然公钥和你家在的ppk也不一样的。

查看用户是否加入成功: 用git用户登陆,然后看/home/git/.ssh/authorized_keys