Linux Ubuntu搭建Git服務器
之前介紹過如何在Windows上搭建Git倉庫服務器,不過服務器用的比較多的還是Linux,因為便宜(同一個VPS商一般來說Linux比Windows便宜),沒有圖形界面,低配置VPS的也可以跑動Linux,開源免費,我感覺比較靈活,下載源也方便,手機都可以ssh遠程。今天就介紹一下如何用Linux搭建Git服務器以及使用Gitosis來管理用戶以及用戶權限。
系統環境
DigitalOcean Ubuntu 16.04,全程root權限。
如果你是學生,想弄一個遠程的git服務器管理一下自己的代碼,也可以選擇DO,現在GitHub有學生領取50美元的優惠碼的活動。
在Ubuntu上搭建Git服務器
安裝Git服務器必備的軟件
這裏主要包括git核心軟件、ssh協議軟件和python的setuptools:
apt-get update && apt-get -y install git-core openssh-server openssh-client python-setuptools lrzsz
安裝Gitosis管理用戶與項目
Gitosis是一套用來管理authorized_keys文件和實現簡單連接限制的腳本,對項目、用戶以及項目的讀寫權限進行管理,安裝命令如下:
git clone https://github.com/res0nat0r/gitosis.git && cd gitosis && python setup.py install
Gitosis默認使用的Git根目錄是/home/git/repositories,其中git是即將新建的用戶。如果你想把倉庫放在別的地方,就用軟連接將它與/home/git/repositories連接起來。
創建Git管理員賬戶
新建一個用戶作為Git服務器的管理員:
useradd -m git
passwd git
用管理員公鑰初始化Gitosis
這個管理員公鑰的意思是你本機的公鑰,是用來管理這個Gitosis的(默認會有gitosis-admin的讀寫權限),你可以將你本機(常用機器)的ssh key拷貝到服務器上來,從而實現管理的目的。
1.在本機生成公鑰
ssh-keygen -t rsa
生成好後,Windows默認的存放路徑在C:\Users\用戶名.ssh\id_rsa.pub。
2.上傳公鑰至服務器並激活Gitosis
將公鑰拷貝到git用戶下,因此先切換至git用戶:
su git
之後用rz命令直接拷貝值服務即可。(Windows利用lrzsz拷貝文件至Linux)
3.初始化Gitosis
依然在git用戶下,利用剛才上傳的公鑰初始化Gitosis:
gitosis-init < /home/git/id_rsa.pub
在Git服務器新建一個項目
完成上一步之後,你Git服務器已經裝好了。相關信息總結如下:
- 默認的倉庫地址是在/home/git/repositories
- Git管理用戶是剛才創建的git
- Gitosis管理用戶權限是通過一個git項目實現的,那個項目地址在/home/git/repositories/gitosis-admin.git,默認是你剛才上傳公鑰的電腦可以clone此倉庫
新建一個項目就是在默認的倉庫地址下面新建一個空的git項目:
cd /home/git/repositories
mkdir test.git
cd test.git
git init --bare
如此,便新建了一個test的項目。
在本機clone項目
首先,需要用上傳公鑰的電腦克隆Gitosis用來管理用戶權限的項目:
git clone [email protected]: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服務器
Linux Ubuntu搭建Git服務器