雲主機搭建Git服務器

Git
Git是一個開源的分佈式版本控制系統,可以有效、高速地處理從很小到非常大的項目版本管理,是 Linus Torvalds 爲了幫助管理 Linux 內核開發而開發的一個開放源碼的版本控制軟件。由於其分佈式的特點,我們完全可以只在本地保存整個項目倉庫,但考慮多人協作的需求,一般情況是建立一個遠程倉庫,項目的所有開發者都圍繞這個遠程倉庫進行同步和提交。雖然Github已經免費提供了這樣的遠程倉庫給用戶,但這種倉庫一般是全網公開,即所有人都可以看到裏面的提交。如果我們自己有云主機(最好是Linux系統)的話,要搭建一個Git服務器創建遠程倉庫並不難,現在讓我們開始吧。

遠程倉庫
搭建Git服務器不需要什麼複雜的工具,因爲git這個工具已經包括所有的功能。

安裝git
一般Linux的發行版已經內置git,如果沒有的話安裝一下

sudo apt-get install git

sudo adduser git

該用戶是用來運行我們git服務器的,在雲主機上與我們的普通用戶區分。當我們的本地git客戶端與遠程倉庫交互時,雲主機上用來運行git程序的用戶就是我們剛添加的git了。對該用戶設置一下密碼:

sudo passwd git

禁用登陸git
由於用戶git主要作爲倉庫使用,一般人員不可以也不應該登陸和進入git,所以使用工具git-shell禁止用戶git登陸shell。

先在/etc/shells中加入/usr/bin/git-shell作爲可用shell;

sudo vim /etc/shells

然後改變用戶git的默認shell。

sudo chsh git -s git-shell

創建倉庫
由於用戶git已經禁止登陸了,我們直接使用root權限在/home/git目錄上創建所有遠程倉庫的目錄srv/

sudo mkdir /home/git/srv

此時可以在srv/上創建一個空的遠程倉庫,命令爲:

sudo cd /home/git/srv
sudo git init --bare elephant.git

其中--bare參數表示裸倉庫,一般會將遠程倉庫初始化爲裸倉庫。

現在最好設置好倉庫的權限,由用戶git來管理,其他用戶無管理權限。

sudo chown -R git /home/git/srv
sudo chmod -R 770 /home/git/srv

客戶端登陸
現在客戶端需要與遠程倉庫同步,可以用ssh進行登陸,而且git也支持ssh連接。

客戶端需要創建ssh-key,使用ssh-keygen創建公鑰私鑰

ssh-keygen -t rsa -C "[email protected]"

Windows一般把生成的公鑰私鑰放在

C:Usersxxxx.ssh\

把.sshid_rsa.pub(公鑰)的內容拷貝出來,放置到雲主機的git用戶的/home/git/.ssh/authorized_keys()中,表示已認證過的公鑰。

此時,在本地git客戶端則可以使用以下命令拉取到遠程倉庫了

git clone git@server:srv/elephant.git了

上面的倉庫地址中,git表示雲主機的用戶git,server表示主機地址,即雲主機的ip,加上後面的內容則表示雲主機上的/home/git/srv/elephant.git這個裸倉庫。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章