1. 程式人生 > >騰訊雲 Ubuntu16.04 搭建Git 服務

騰訊雲 Ubuntu16.04 搭建Git 服務

 

一.安裝Git伺服器所需軟體

1.安裝git-core, openssh-server, openssh-client三個軟體。git-core是git的核心軟體; openssh-server、openssh-client是伺服器和客戶端傳輸檔案通過ssh協議。

輸入:sudo apt-get install git-core openssh-server openssh-client

 

 

2. 初始化git伺服器使用者資訊。

輸入:git config --global user.name ”Tyche***”

           git config --global user.email ”8057*****@qq.com”

 

 

3. 安裝python-setuptools軟體。

輸入:sudo apt-get install python-setuptools

 

 

4.安裝gitosis。Gitosis主要用於管理使用者對倉庫的操作許可權。

安裝:git clone https://github.com/res0nat0r/gitosis.git

進入gitosis目錄:  cd gitosis/

使用安裝目錄下的setup.py的指令碼安裝。輸入:sudo python setup.py install

 

 

二.配置Git伺服器

1.建立git管理員賬戶

增加使用者命令:sudo useradd  -m  git

修改git使用者密碼:sudo passwd git

 

 

 2. 初始化gitosis

在服務端生成SSH公鑰,輸入命令:ssh-keygen -t rsa

這裡會提示輸入密碼,直接回車即可。

 

 

用剛生成公鑰id_rsa.pub來對gitosis進行初始化。輸入命令:sudo -H -u git gitosis-init <  /root/.ssh/id_rsa.pub

 

 

 3. 新增git使用者對資料夾的許可權

輸入: sudo chown git:git /home/git/repositories

            sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update

            sudo chmod 755 /home/git/repositories

 

三.建立專案倉庫

使用git賬戶在伺服器上建立一個目錄(mytestproject.git)並初始化成git專案倉庫。

ubuntu:/home/git$ su git
~git$ cd /home/git/repositories
~git$ mkdir mytestproject.git

~git$ cd mytestproject.git/
~git$ git init --bare

 

四. gitosis管理使用者操作許可權

1. 首先需要一個管理員客戶端,使用前面生成ssh公鑰(用來初始化gitosis)的機器上將gitosis-admin.git的倉庫clone下來。在管理員客戶端機器上新建一個目錄用於存放gitosis-admin.git倉庫

 

 

clone時不能用絕對路徑,只能寫相對於git使用者home的相對路徑
錯誤:[email protected]:gitosis-admin.git
正確:[email protected]:/home/git/repositories/gitosis-admin.git

 輸入 :sudo clone [email protected]:/home/git/repositories/gitosis-admin.git

clone下來的gitosis-admin資料夾有一個gitosis.conf的配置檔案和一個keydir的目錄。keydir主要使用者存放ssh公鑰檔案(一般以“使用者名稱.pub”命名,gitosis.conf配置檔案中需使用相同使用者名稱),用於認證請求,gitosis.conf用於配置使用者的許可權。

 

 

1. 現在需要將授權的使用者在自己的機器上生成相應的ssh公鑰,  開啟git bush並輸入:ssh-keygen -t rsa -C “[email protected]com”

2. 將生成的公鑰檔案一般在  C:/使用者/自己的使用者名稱/.ssh 下的 id_rsa.pub

3. 管理員收集這些檔案,分別按使用者名稱命名好,複製到剛才的keydir目錄下。

4. 編輯gitosis.conf檔案管理使用者許可權

[gitosis]

[group gitosis-admin]      #管理員
members = [email protected] #管理員使用者名稱,需要在keydir目錄下找到相應的.pub檔案,多個管理員用空格隔開writable = gitosis-admin   #可寫的專案倉庫名,多個倉庫用空格隔開

 

[group testwrite]           #建一個組:可寫許可權
members = abc            #使用者
writable = mytestproject   #可寫的專案倉庫名

 

[group testread]           #建一個組:只讀許可權
members =def             #使用者
readonly= mytestproject   #只讀的專案倉庫名

 

本地修改完配置後,還需要推送到伺服器才能生效。

ubuntu:~/gitadmin/gitosis-admin$ git add .
ubuntu:~/gitadmin/gitosis-admin$ git commit -am "add users"
ubuntu:~/gitadmin/gitosis-admin$ git push origin master

 

還需要在服務端重新啟動一下sshd服務

ubuntu:~/gitadmin/gitosis-admin$ sudo /etc/init.d/ssh restart

服務端的git就已經安裝和配置完成了,接下來就需要有許可權的組成員在各自的機器上clone伺服器上的相應專案倉庫進行相應的工作了。

 

五.在客戶端測試

1. 在本地新建一個mytestproject資料夾

2. 將空專案clone下來,輸入 : git clone [email protected]***.***:mytestproject.git

 

 

3. 本地新增一個log.txt 檔案

 

4. 然後將新增的檔案提交,輸入:

git  add .

git  commit  –m  "add a log.txt"

git push origin master

 

 5. 檢查git歷史狀態

 

ok !