使用gitosis配置git server

参考:http://www.open-open.com/lib/view/open1349849744275.html

在配置gitosis之前,服务器需要先安装gitserver,见前一篇文章。

环境:server:CentOS6

client:CentOS6

1、在服务器安装gitosis

#yuminstallpythonpython-setuptools

#cd/usr/local/src

#gitclonegit://github.com/res0nat0r/gitosis.git

#cdgitosis

#pythonsetup.pyinstall

#显示Finishedprocessingdependenciesforgitosis==0.2即表示成功

2、创建git用户,并设置密码

#addusergit

#passwdgit

3、创建git目录,并设置权限

#cd/home

#mkdirgit

#chowngit:git/home/git

4、从客户端生成公钥,上传到服务器,并设置好访问权限

客户端:

#cd~

#mkdir.ssh

#cd.ssh

#ssh-keygen

#scp~/.ssh/id_rsa.pubroot@192.168.52.133:/tmp

服务器端:

#cd/tmp

#chowngit:gitid_rsa.pub

5、切换到git用户,并初始化git库

#sugit

$gitosis-init</tmp/id_rsa.pub

InitializedemptyGitrepositoryin/home/git/repositories/gitosis-admin.git/

修改上传权限:

$su-

#chmod755/home/git/repositories/gitosis-admin.git/hooks/post-update

6、在服务器端创建一个空库

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

#sugit

$cd/home/git/repositories

$gitinit--baretest-git

InitializedemptyGitrepositoryin/home/git/repositories/test-git/.git/

7、在客户端配置管理用户

#mkdir-p/home/client_project

#cd/home/client_project

#gitclonegit@192.168.52.133:/home/git/repositories/gitosis-admin

#cdgitosis-admin

引用

gitosis-admin目录下keydir是存放客户端公钥的,gitosis.conf是记录各个仓库项目的管理用户。需要注意,keydir目录下的公钥的文件名,需要与公钥文件(.pub)中最后的名字一致。

为项目添加用户:

用户客户端的公钥文件放在keydir目录下,再修改gitosis.conf文件。假设给test-git-new项目添加mender用户:

#cp/tmp/mender.pub/home/client_project/gitosis-admin/keydir

#vigitosis.conf

引用

[gitosis]

[groupgitosis-admin]

writable=gitosis-admin

members=root@GitClient

[grouptest-git-new]

writable=test-git-new

members=root@GitClientmender

#gitadd.

#gitcommit-am"addmembermender"

#gitpush

8、把客户端文件推到服务器

第6步已经在服务器端创建了空库,指定好远程库路径,把文件推上去:

客户端:

#cd/home/client_project/

#mkdirtest-git-new

#cdtest-git-new

#gitinit

#touchReadme

#gitaddReadme

#gitcommit-am'firstcommit'

#gitremoteaddorigingit@192.168.52.133:/home/git/repositories/test-git

#gitpushoriginmaster

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

==========================================

用gitosis管理git用户,不需要执行cat/tmp/id_rsa.pub>>~/.ssh/authorized_keys,gitosis自动会给authorized_keys追加公钥。但是用客户端执行的时候,有时会出现ERROR:gitosis.serve.main:Repositoryreadaccessdenied错误,网上说是keydir目录下的pub文件名与gitosis.conf配置里的members名字必须要对应,但即使对应可能还会出这个问题,还有个原因可能如下:

路径:没用gitosis管理git时,clone路径是绝对路径,例如:gitclonegit@192.168.52.133:/home/git/repositories/px_andriod,出错之后改成gitclonegit@192.168.52.133:px_andriod.git就好了。(创建空仓库的时候,mkdirpx_andriod.git,gitosis.conf中写的还是px_andriod)

git

相关推荐