Ubuntu上搭建git服務(wù)器

最近看到git的介紹,剛好自己又想在公司電腦和家里電腦之間同步一些文件,于是便開始學(xué)習(xí)git了。

不過要想實現(xiàn)多臺電腦的同步就必須要有一個git服務(wù)器,雖然有g(shù)ithub,但那是開源的,自己有些東西還是不適合公開。私有的倉庫要需要收費,對于現(xiàn)階段的我來說還是沒有必要專門去租一個私有倉庫的。

剛好想到自己之前那臺聯(lián)想筆記本一直放在家里沒用,于是就想用其搭建一個git服務(wù)器。由于Windows對于git的兼容性并不好,所以首先將系統(tǒng)給換成了Ubuntu的,然后再在上面搭建git服務(wù)器。

在搭建的過程中遇到了好多坑,都是一個一個踩過來的,也幸虧網(wǎng)上有很多前輩記錄的文章自己才能搭好。所以,我也將我搭建的過程記錄下來,一方面,怕自己以后忘了;另一方面,如果能對后學(xué)者提供參考那就更好了。

一、安裝git服務(wù)器所需軟件

安裝git-core

git-core是git版本控制核心軟件,安裝命令如下:

sudo apt-get install git-core

若安裝提示失敗,可能是因為系統(tǒng)軟件庫的檢索文件太舊了,需要先更新一下,更新命令如下:

sudo apt-get update

安裝openssh-server和openssh-client

openssh-server和openssh-client用于git通過ssh協(xié)議來在服務(wù)器與客戶端之間傳輸文件,安裝命令如下:

sudo apt-get install openssh-server openssh-client

安裝python

由于安裝gitosis需要用到Python的一些工具,所以需要先安裝setup,安裝命令如下:

sudo apt-get install python-setuptools

初始化服務(wù)器的git用戶信息

安裝gitosis之前需要初始化服務(wù)器的git用戶信息,初始化命令如下:

git config --global user.name "penn"
git config --global nser.email "penn@example.com"

獲取gitosis版本文件

這個就類似于我們下載安裝包,命令如下:

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

安裝gitosis

進入文件目錄

cd gitosis/

安裝gitosis

這里需要使用python命令安裝目睹下的setup.py的python腳本進行安裝,命令如下:

sudo python setup.py install

到這里整個安裝步驟就完成了,下面是對git進行一些基本配置。

二、創(chuàng)建git管理員賬戶、配置git

創(chuàng)建管理員賬戶

創(chuàng)建一個賬戶(gitmanager)作為git服務(wù)器的管理員,可以管理其他用戶的項目權(quán)限。命令為:

sudo useradd -m gitmanager
sudo passwd gitmanager

創(chuàng)建倉庫存儲點

在/home目錄下創(chuàng)建一個項目倉庫存儲點,命令為:

sudo mkdir /home/gitrepository 

權(quán)限設(shè)置

設(shè)置只有g(shù)it用戶擁有所有權(quán)限,其他用戶沒有任何權(quán)限,命令為:

sudo chown gitmanager:gitmanager /home/gitrepository/  
sudo chmod 700 /home/gitrepository/

創(chuàng)建鏈接映射

由于gitosis默認(rèn)狀態(tài)下會將倉庫放在用戶的repositories目錄下,例如gitmanager用戶的倉庫地址默認(rèn)在
/home/gitmanager/repositories/目錄下,這里我們需要創(chuàng)建一個鏈接映射。讓他指向我們前面創(chuàng)建的專門用于存放項目的倉庫目錄/home/gitrepository。

命令如下:

sudo ln -s /home/gitrepository /home/gitmanager/repository

生成公鑰

在管理機器(你主要使用的電腦)上生成一個ssh的公鑰,命令如下:

ssh-keygen -t rsa

拷貝公鑰文件到服務(wù)器

將公鑰文件拷貝到服務(wù)器上,命令如下:

scp /home/penn/.ssh/id_rsa.pub gitmanager@192.168.0.23:/home/gitmanager/id_rse.pub

初始化gitosis

注意:初始化之前需要切換至gitmanager用戶

su gitmanager
gitosis-init < home/gitmanager/id_rsa.pub(傳到服務(wù)器的地址)

三、在服務(wù)器上創(chuàng)建項目倉庫

創(chuàng)建倉庫

使用gitmanager賬戶在服務(wù)器上創(chuàng)建一個目錄(mytestproject.git)并初始化成git項目倉庫。命令如下:

su gitmanager 
cd /home/gitrepository  
mkdir mytestproject.git  
git init --bare   
exit 

SSh驗證

使用初始化 Gitosis 公鑰的擁有者身份 SSH 進服務(wù)器,命令如下:

ssh gitmanager@192.168.0.23

克隆Gitosis的控制倉庫到本地

命令為:

git clone gitmanager@192.168.0.23:/home/gitmanager/repositories/gitosis-admin.git

gitosis-admin目錄結(jié)構(gòu)

  • gitosis.conf

用來設(shè)置用戶、倉庫和權(quán)限的控制文件

  • keydir

保存所有具有訪問權(quán)限用戶公鑰的地方每人一個

多人協(xié)助開發(fā)同一個版本

將他們每個人的公鑰文件添加到keydir文件夾然后push到服務(wù)端。文件的命名將決定在gitosis.conf配置文件中的稱呼。

添加協(xié)同成員示例

1.為 John,Josie 和 Jessica 添加公鑰:

$ cp /tmp/id_rsa.john.pub keydir/john.pub
$ cp /tmp/id_rsa.josie.pub keydir/josie.pub
$ cp /tmp/id_rsa.jessica.pub keydir/jessica.pub

2.把他們都加進 ‘mobile’ 團隊,讓他們對iphone_project具有讀寫權(quán)限:

[group mobile]
writable = iphone_project
members = scott john josie jessica

權(quán)限控制

Gitosis 也具有簡單的訪問控制功能。如果想讓 John 只有讀權(quán)限,可以這樣做:

[group mobile]
writable = iphone_project
members = scott josie jessica
[group mobile_ro]
readonly = iphone_project
members = john

現(xiàn)在 John 可以克隆和獲取更新,但 Gitosis 不會允許他向項目推送任何內(nèi)容。

四、常見問題

運行ssh git@192.168.0.23出錯

重啟電腦

ERROR:gitosis.serve.main:Repository read access denied

原因

gitosis.conf中的members與keydir中的用戶名不一致,如gitosis中的members = foo@bar,但keydir中的公密名卻叫foo.pub

解決方法

使keydir的名稱與gitosis中members所指的名稱一致。 改為members = foo 或 公密名稱改為foo@bar.pub

lone時報does not appear to be a git repository

原因

clone時不能用絕對路徑,只能寫相對于gitmanager用戶home的相對路徑。

我用的路徑是:git clone gitmanager@192.168.0.6:gitosis-admin.git

解決方案

將路徑改為:相對gitmanager用戶的路徑:

git clone gitmanager@192.168.0.23:/home/gitmanager/repositories/gitosis-admin.git

五、參考資料

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • gitosis: 把所有用戶的公鑰保存在 authorized_keys 文件的做法,只能湊和一陣子,當(dāng)用戶數(shù)量達...
    曉蜻蜓閱讀 6,156評論 2 2
  • 本文為 Git教程的學(xué)習(xí)筆記,教程源自廖雪峰的博客。這是一個由淺入深,學(xué)完后能立刻上手的Git教程。另,附上另一本...
    七弦桐語閱讀 6,499評論 5 47
  • 產(chǎn)品介紹: 從不同的APP中匯集最新內(nèi)容,將散落在不同應(yīng)用內(nèi)的文章、圖片和視頻串聯(lián)起來,在同一個頁面當(dāng)中摘錄成冊。...
    2c5994723157閱讀 1,140評論 0 1
  • Text 7月|8月 Video 7月|8月 Rio 2016 8/1 | 8/2 | 8/3 | ...
    帝都搬運工閱讀 480評論 0 0

友情鏈接更多精彩內(nèi)容