Linux Ubuntu搭建Git伺服器

NO IMAGE

之前介紹過如何在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使用者名稱.sshid_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伺服器