1. 程式人生 > >Ubuntu 16.x搭建Git伺服器

Ubuntu 16.x搭建Git伺服器

引言

最近專案準備遷移要git做版本管理,就先學了git的使用,在學會了git的一些基本知識以及搭建git倉庫的方法後,就想如果要讓其他開發的人員也能訪問到自己的倉庫,就需要將倉庫設定為遠端倉庫,那麼就要搭建伺服器來進行訪問。訪問git的伺服器一般是選用SSH連結方式。

於是我就先嚐試在windows上搭建伺服器,發現真是入了大坑呀,支援ssh訪問的伺服器搭建好了,可就是用git clone時怎麼也訪問不到遠端倉庫,整了好久都沒整明白,最後還是決定選擇在linux系統上搭建git伺服器

我選擇了使用ubuntu來搭建,系統裝在虛擬機器裡,最後終於能訪問到了,真是開心吶!就把我遇到的一些問題分享給大家供參考

具體搭建流程

搭建的方法在網上有很多,我這裡就不具體說了,只是把一些關鍵的地方提一下,並把我遇到的問題也總結一下

1. 我這裡參考了幾個搭建流程的教程

這裡對其中的一些步驟做一些解釋
1.1 訪問遠端倉庫的許可權管理
許可權管理是用到了gitosis這個庫,其實裡面存放管理許可權的目錄也是一個git倉庫,在ubuntu系統裡的自定義目錄下將這個倉庫clone下來,將允許訪問使用者的key,即用ssh生成的pub檔案放到裡面並配置好讀寫許可權,就可以了。

1.2 在ubuntu下使用ssh-keygen生成key時,按正常情況是生成到使用者目錄下的.ssh目錄中,但有可能存在一些問題,會直接生成到使用者目錄下,具體原因還不是很清楚。如果想讓其直接生成到.ssh目錄下,可以先用命令列刪除.ssh資料夾後,重新建立就可以了

1.3 關於教程中建立在/home/下,供自己使用的repo的目錄操作許可權問題

建立使用者使用的倉庫目錄

該目錄由於是在/home/下建立的,只有root使用者有操作許可權。如果用root使用者建立了git倉庫,那麼這個倉庫目錄的訪問許可權就變為了只有root可讀寫,那麼在clone遠端倉庫時,如果輸入的伺服器地址中的serverUsername不是root,就會出問題。
如果是使用新加的用於管理git專案的管理員使用者,在進行了對於上述/home/repo/的目錄對映後,在如下圖的/home/git/repositories目錄中建立git倉庫,那麼clone倉庫時username使用該git管理員使用者,就沒有問題了。
目錄對映的命令如下圖:
目錄對映

2. 伺服器配好後,需要將要訪問連結的使用者的ssh key放到許可權管理配置中

使用ssh為對應的使用者生成key之後,把pub檔案拷到教程中說的keyDir目錄下,之後就是在gitosis.conf中配置許可權訪問資訊,如下圖:
使用者許可權管理配置

3. clone遠端倉庫的地址問題

配置好git伺服器並且添加了使用者key之後,建立一個遠端倉庫,就可以嘗試能否clone出來了。
在clone時,一個重要的問題就是如何書寫伺服器地址呢,地址格式一般是[serverUsername]@[serverIp]:/[gitDir]/

3.1 serverUsername就是要登入的伺服器的使用者名稱,git的倉庫放在該使用者的目錄下,比如上面教程中建立的git使用者

3.2 這裡重點要說下serverIp的配置
如果要在作為伺服器的ubuntu下clone倉庫
由於是在本地clone,那麼直接寫localhost就可以

如果是在本機windows下clone倉庫
由於ubuntu是在虛擬機器上跑,並且如果設定其聯網的方式為與宿主機共享ip,這並不代表ubuntu下的ip就是和宿主機的一致。這時就要查ubuntu聯網的實際ip了,在系統中用命令ifconfig -a查詢,就能查到了,之後可以在宿主機windows上ping下查到的ip,能ping成功證明就能訪問到啦

3.3 gitDir就是你在這個伺服器使用者的哪個目錄下建立的git倉庫,這個就很好理解了

現在知道了如何書寫伺服器地址,就可以嘗試clone啦。應該能成功clone。

另外附上一個我參考的地址,其實和上面的過程基本一樣: