1. 程式人生 > >Linux Ubuntu搭建Git服務器

Linux Ubuntu搭建Git服務器

only mesi 相關 現在 strong -m shell 常用 authorize

之前介紹過如何在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服務器