配置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到服務器端。修改是立即生效的。