上次在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