搭建Git伺服器
在遠端倉庫一節中,我們講了遠端倉庫實際上和本地倉庫沒啥不同,純粹為了7x24小時開機並交換大家的修改。
GitHub就是一個免費託管開原始碼的遠端倉庫。但是對於某些視原始碼如生命的商業公司來說,既不想公開原始碼,又捨不得給GitHub交保護費,那就只能自己搭建一臺Git伺服器作為私有倉庫使用。
搭建Git伺服器需要準備一臺執行Linux的機器,強烈推薦用Ubuntu或Debian,這樣,通過幾條簡單的apt
命令就可以完成安裝。
假設你已經有sudo
許可權的使用者賬號,下面,正式開始安裝。
第一步,安裝git
:
$ sudo apt-get install git
第二步,建立一個git
使用者,用來執行git
服務:
$ sudo adduser git
第三步,建立證書登入:
收集所有需要登入的使用者的公鑰,就是他們自己的id_rsa.pub
檔案,把所有公鑰匯入到/home/git/.ssh/authorized_keys
檔案裡,一行一個。
第四步,初始化Git倉庫:
先選定一個目錄作為Git倉庫,假定是/srv/sample.git
,在/srv
目錄下輸入命令:
$ sudo git init --bare sample.git
Git就會建立一個裸倉庫,裸倉庫沒有工作區,因為伺服器上的Git倉庫純粹是為了共享,所以不讓使用者直接登入到伺服器上去改工作區,並且伺服器上的Git倉庫通常都以.git
結尾。然後,把owner改為git
:
$ sudo chown -R git:git sample.git
第五步,禁用shell登入:
出於安全考慮,第二步建立的git使用者不允許登入shell,這可以通過編輯/etc/passwd
檔案完成。找到類似下面的一行:
git:x:1001:1001:,,,:/home/git:/bin/bash
改為:
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
這樣,git
使用者可以正常通過ssh使用git,但無法登入shell,因為我們為git
使用者指定的git-shell
每次一登入就自動退出。
第六步,克隆遠端倉庫:
現在,可以通過git clone
命令克隆遠端倉庫了,在各自的電腦上執行:
$ git clone git@server:/srv/sample.git
Cloning into 'sample'...
warning: You appear to have cloned an empty repository.
剩下的推送就簡單了。
管理公鑰
如果團隊很小,把每個人的公鑰收集起來放到伺服器的/home/git/.ssh/authorized_keys
檔案裡就是可行的。如果團隊有幾百號人,就沒法這麼玩了,這時,可以用Gitosis來管理公鑰。
這裡我們不介紹怎麼玩Gitosis了,幾百號人的團隊基本都在500強了,相信找個高水平的Linux管理員問題不大。
管理許可權
有很多不但視原始碼如生命,而且視員工為竊賊的公司,會在版本控制系統裡設定一套完善的許可權控制,每個人是否有讀寫許可權會精確到每個分支甚至每個目錄下。因為Git是為Linux原始碼託管而開發的,所以Git也繼承了開源社群的精神,不支援許可權控制。不過,因為Git支援鉤子(hook),所以,可以在伺服器端編寫一系列指令碼來控制提交等操作,達到許可權控制的目的。Gitolite就是這個工具。
這裡我們也不介紹Gitolite了,不要把有限的生命浪費到許可權鬥爭中。
小結
相關文章
- Git 伺服器搭建Git伺服器
- Centos搭建git伺服器CentOSGit伺服器
- 搭建自己的 Git 伺服器Git伺服器
- 使用 Gitolite 搭建 Git 伺服器Git伺服器
- 搭建git遠端伺服器Git伺服器
- CentOS 6.5 GIT 伺服器搭建CentOSGit伺服器
- 在CentOS上搭建git伺服器CentOSGit伺服器
- Windows下的git伺服器搭建WindowsGit伺服器
- CentOS7 搭建Git伺服器CentOSGit伺服器
- Ubuntu 搭建簡單 Git 伺服器UbuntuGit伺服器
- Git伺服器搭建全過程Git伺服器
- 教你玩轉Git-伺服器搭建Git伺服器
- Windows下使用GitStack搭建Git伺服器WindowsGit伺服器
- 【第十二篇】- Git 伺服器搭建Git伺服器
- 教你搭建你自己的Git伺服器Git伺服器
- 在CentOS 7中搭建Git伺服器CentOSGit伺服器
- git 乾貨系列:(六)公司內部搭建 git 伺服器Git伺服器
- Git開發筆記——搭建Git簡易高效伺服器Git筆記伺服器
- 在伺服器上使用 smart http 搭建 Git 伺服器伺服器HTTPGit
- 搭建私有git伺服器進行版本控制Git伺服器
- 如何搭建你自己的 Git 伺服器呢?Git伺服器
- git伺服器gitlab之搭建和使用伺服器Gitlab
- 如何在區域網搭建git伺服器Git伺服器
- 使用 docker 搭建一個 gitea 的 Git 伺服器DockerGit伺服器
- mac中使用Sourcetree配置自己搭建的git伺服器MacGit伺服器
- Linux 學習筆記(二):搭建個人Git伺服器Linux筆記Git伺服器
- 如何在伺服器上搭建Git版本倉庫(乾貨)伺服器Git
- Linux 伺服器即 LNMP 環境搭建(Git倉庫上篇)Linux伺服器LNMPGit
- 在centos上搭建git伺服器並自動同步程式碼CentOSGit伺服器
- 樹莓派搭建git伺服器 | 樹莓派小無相系列樹莓派Git伺服器
- 使用 Git 來管理 Git 伺服器Git伺服器
- git 入門教程之 git 私服搭建教程Git
- 樹莓派搭建git伺服器並實現公網訪問(二)共2篇—安裝git樹莓派Git伺服器
- git windows 環境搭建GitWindows
- Linux 環境下 Git 伺服器的搭建與基本使用(CentOS 7 版本)LinuxGit伺服器CentOS
- 搭建安卓原始碼伺服器,repo+gerrit+git環境,程式碼稽核安卓原始碼伺服器Git
- [Git專題] 環境搭建Git
- docker搭建私人git倉庫DockerGit