配置gitosis(以CentOS为例)
出自Linux Wiki
Git是当下流行的版本控制软件,gitosis使管理Git服务器的流程大大简化。本文以CentOS为例介绍配置gitosis的流程,它也适用于多数发行版。
目录 |
安装软件
首先安装git和gitosis,多数发行版的仓库有这两个软件。CentOS则需要先添加EPEL软件仓库。[1]如果你的发行版里没有这两个软件,就直接去网站上安装吧。
根据不同发行版软件包的不同,安装后系统会做一定的配置。请查看/etc/passwd,看看是不是已经出现了新的跟git有关的用户,(比如CentOS中会出现名为gitosis的用户)。如果没有,则需要自己添加一个用户,所有跟git代码库有关的读写将通过这个用户完成,如
sudo adduser --system --shell /bin/sh --gecos 'git user' --group --disabled-password --home /home/gitosis gitosis
准备管理员密钥
这里需要说明,gitosis的配置文件是用Git管理的,用户的认证则是通过密钥。首次初始化gitosis时,需要提供一个管理员帐户,该帐户可处于任何电脑上,用其密钥做为身份标志。
所以要先准备一个管理员密钥,这可以在服务器上做,也可以在客户机上做:
ssh-keygen -t rsa
注意不要修改产生的文件的位置(默认在~/.ssh/中),密码可以不输(该密码只是用来保护密钥文件的)。这样将在~/.ssh中生成id_rsa和id_rsa.pub两个文件,前者是密钥(如同密码,注意保护),后者是公钥。如果是在客户机上操作的,需要把公钥传到服务器上。假设这个文件叫id_rsa.pub。
初始化gitosis
现在回到服务器上,id_rsa.pub已经准备好,当前用户是root。执行如下命令:
sudo -H -u gitosis gitosis-init < [path of your id_rsa.pub]
注意第一个gitosis是git帐户的用户名,如果你的发行版名字不同请做相应更改。-H选项很重要,因为代码库要放到gitosis的Home目录里, 不是root的。
至此,gitosis服务器已经配置完毕,接下来对用户、项目的控制要通过Git完成。
获取配置文件
在刚才生成密钥的电脑上,用git clone获取配置文件
git clone gitosis@example.com:gitosis-admin.git
注意将example.com改成服务器的域名。
我们将得到一个gitosis-admin文件夹,它里面有gitosis.conf文件和一个叫keydir/的子文件夹。[2]
首先,keydir/是存放用户公钥的一些.pub文件,用户名对应pub文件的文件名(不含.pub后缀),要添加用户时,让用户按前面的方法准备一个密钥,并对相应的.pub文件放在keydir里,命好名就行了。
用户权限的管理则是通过这个gitosis.conf文件,如以下代码段建一个名为test的组,有t1、t2两个成员,他们可以读写testProj项目:
[group test] writable = testProj members = t1 t2
更多的例子请参阅gitosis的文档[3]。
每次配置好后,按照Git的风格,需要commit、push到服务器端。修改是立即生效的。