以前介紹過如何在Windows上搭建Git倉庫服務器,不過服務器用的比較多的仍是Linux,由於便宜(同一個VPS商通常來講Linux比Windows便宜),沒有圖形界面,低配置VPS的也能夠跑動Linux,開源免費,我感受比較靈活,下載源也方便,手機均可以ssh遠程。今天就介紹一下如何用Linux搭建Git服務器以及使用Gitosis來管理用戶以及用戶權限。python
年付19.99美圓的搬瓦工服務器,系統爲kvm,這裏參考搬瓦工優惠網買一個就行。linux
這裏主要包括git核心軟件、ssh協議軟件和python的setuptools:git
apt-get update && apt-get -y install git-core openssh-server openssh-client python-setuptools lrzsz
Gitosis是一套用來管理authorized_keys文件和實現簡單鏈接限制的腳本,對項目、用戶以及項目的讀寫權限進行管理,安裝命令以下:github
git clone https://github.com/res0nat0r/gitosis.git && cd gitosis && python setup.py install
Gitosis默認使用的Git根目錄是/home/git/repositories,其中git是即將新建的用戶。若是你想把倉庫放在別的地方,就用軟鏈接將它與/home/git/repositories鏈接起來。shell
新建一個用戶做爲Git服務器的管理員:ubuntu
useradd -m git passwd git
這個管理員公鑰的意思是你本機的公鑰,是用來管理這個Gitosis的(默認會有gitosis-admin的讀寫權限),你能夠將你本機(經常使用機器)的ssh key拷貝到服務器上來,從而實現管理的目的。windows
1.在本機生成公鑰服務器
ssh-keygen -t rsa
生成好後,Windows默認的存放路徑在C:Users用戶名.sshid_rsa.pub。dom
2.上傳公鑰至服務器並激活Gitosis
將公鑰拷貝到git用戶下,所以先切換至git用戶:ssh
su git
以後用rz命令直接拷貝值服務便可。(Windows利用lrzsz拷貝文件至Linux)
3.初始化Gitosis
依然在git用戶下,利用剛纔上傳的公鑰初始化Gitosis:
gitosis-init < /home/git/id_rsa.pub
完成上一步以後,你Git服務器已經裝好了。相關信息總結以下:
新建一個項目就是在默認的倉庫地址下面新建一個空的git項目:
cd /home/git/repositories mkdir test.git cd test.git git init --bare
如此,便新建了一個test的項目。
首先,須要用上傳公鑰的電腦克隆Gitosis用來管理用戶權限的項目:
git clone git@206.189.160.168:gitosis-admin.git
其中,git是你剛纔新建的Git管理員,後面跟着的是你的ip(若是你想用你的域名代替,Namesilo域名購買與優惠碼,買完域名後,直接添加一個DNS解析到這個IP便可)。
gitosis-admin的中包括一個keydir文件夾和一個gitosis.conf文件,前者是用來存放用戶的ssh key的,後者是用來管理用戶權限的,舉個例子,我如今要給張三和李四的電腦讀寫test的權限:
1.將張三電腦和李四電腦的ssh key拷貝至keydir文件夾下
例如將張三的公鑰文件保存爲zhangsan.pub放在keydir下(這個文件名字與下面配置文件要一致)、李四的公鑰文件保存爲lisi.pub放在keydir下。
2.在gitosis.conf中添加相關配置
[group test] members = zhangsan lisi writable = test
如此,我便新建了一個test的group,其中用戶有zhangsan和lisi,他們擁有讀寫權限。
此時,若是你想讓王五隻有讀的權限,那麼就將配置文件改爲:
[group test] members = zhangsan lisi writable = test [group test_read] members = wangwu readonly = test
如此,wangwu只能clone或者pull,卻不能push。
3.將修改推送至服務器
此時只是完成了本地的修改,要將修改推送到服務器才能生效(add、commit、push),以後test那個倉庫的權限就會像剛纔在配置文件設置的那樣。
至此,你就完成了在Ubuntu上搭建Git服務器的所有任務,接下來就是根據Git經常使用命令進行協同開發便可~
原文連接: Linux Ubuntu搭建Git服務器