騰訊雲 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 !