使用gitosis配置git server

参考:http://www.open-open.com/lib/view/open1349849744275.html
在配置gitosis之前,服务器需要先安装git server,见前一篇文章。
环境:server:CentOS 6
client:CentOS 6

[b]1、在服务器安装gitosis[/b]
#yum install python python-setuptools
#cd /usr/local/src
#git clone git://github.com/res0nat0r/gitosis.git
#cd gitosis
#python setup.py install
#显示Finished processing dependencies for gitosis==0.2即表示成功

[b]2、创建git用户,并设置密码[/b]
#adduser git
#passwd git

[b]3、创建git目录,并设置权限[/b]
#cd /home
#mkdir git
#chown git:git /home/git

[b]4、从客户端生成公钥,上传到服务器,并设置好访问权限[/b]
客户端:
#cd ~
#mkdir .ssh
#cd .ssh
#ssh-keygen
#scp ~/.ssh/id_rsa.pub root@192.168.52.133:/tmp

服务器端:
#cd /tmp
#chown git:git id_rsa.pub

[b]5、切换到git用户,并初始化git库[/b]
#su git
$gitosis-init < /tmp/id_rsa.pub
Initialized empty Git repository in /home/git/repositories/gitosis-admin.git/

修改上传权限:
$su -
#chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update


[b]6、在服务器端创建一个空库[/b]
(网上有的帖子说不需要再服务器端创建空库,客户端第一次提交的时候会自动创建,但我试了几次,如果服务器端不创建空库,客户端push会一直提示git库路径不对)

#su git
$cd /home/git/repositories
$git init --bare test-git
Initialized empty Git repository in /home/git/repositories/test-git/.git/

[b]7、在客户端配置管理用户[/b]

#mkdir -p /home/client_project
#cd /home/client_project
#git clone git@192.168.52.133:/home/git/repositories/gitosis-admin
#cd gitosis-admin
[quote]
gitosis-admin目录下keydir是存放客户端公钥的,gitosis.conf是记录各个仓库项目的管理用户。需要注意,keydir目录下的公钥的文件名,需要与公钥文件(.pub)中最后的名字一致。
[/quote]

为项目添加用户:
用户客户端的公钥文件放在keydir目录下,再修改gitosis.conf文件。假设给test-git-new项目添加mender用户:
#cp /tmp/mender.pub /home/client_project/gitosis-admin/keydir
#vi gitosis.conf
[quote]
[gitosis]

[group gitosis-admin]
writable = gitosis-admin
members = root@GitClient

[group test-git-new]
writable = test-git-new
members = root@GitClient [color=red]mender[/color]
[/quote]

#git add .
#git commit -am "add member mender"
#git push


[b]8、把客户端文件推到服务器[/b]
第6步已经在服务器端创建了空库,指定好远程库路径,把文件推上去:

客户端:
#cd /home/client_project/
#mkdir test-git-new
#cd test-git-new
#git init
#touch Readme
#git add Readme
#git commit -am 'first commit'
#git remote add origin git@192.168.52.133:/home/git/repositories/test-git
#git push origin master


这样客户端就可以push文件了


==========================================
用gitosis管理git用户,不需要执行cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys ,gitosis自动会给authorized_keys 追加公钥。但是用客户端执行的时候,有时会出现ERROR:gitosis.serve.main:Repository read access denied错误,网上说是keydir目录下的pub文件名与gitosis.conf配置里的members名字必须要对应,但即使对应可能还会出这个问题,还有个原因可能如下:
路径:没用gitosis管理git时,clone路径是绝对路径,例如:git clone git@192.168.52.133:/home/git/repositories/px_andriod,出错之后改成git clone git@192.168.52.133:px_andriod.git就好了。(创建空仓库的时候,mkdir px_andriod.git,gitosis.conf中写的还是px_andriod)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值