Ubuntu上搭建git服務器

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

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

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

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

一硕糊、安裝git服務器所需軟件

安裝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é)議來在服務器與客戶端之間傳輸文件,安裝命令如下:

sudo apt-get install openssh-server openssh-client

安裝python

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

sudo apt-get install python-setuptools

初始化服務器的git用戶信息

安裝gitosis之前需要初始化服務器的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服務器的管理員碟刺,可以管理其他用戶的項目權限锁保。命令為:

sudo useradd -m gitmanager
sudo passwd gitmanager

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

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

sudo mkdir /home/gitrepository 

權限設置

設置只有git用戶擁有所有權限半沽,其他用戶沒有任何權限爽柒,命令為:

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

創(chuàng)建鏈接映射

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

命令如下:

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

生成公鑰

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

ssh-keygen -t rsa

拷貝公鑰文件到服務器

將公鑰文件拷貝到服務器上心墅,命令如下:

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(傳到服務器的地址)

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

創(chuàng)建倉庫

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

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

SSh驗證

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

ssh gitmanager@192.168.0.23

克隆Gitosis的控制倉庫到本地

命令為:

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

gitosis-admin目錄結構

  • gitosis.conf

用來設置用戶、倉庫和權限的控制文件

  • keydir

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

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

將他們每個人的公鑰文件添加到keydir文件夾然后push到服務端蜜暑。文件的命名將決定在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具有讀寫權限:

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

權限控制

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

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

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

四谦屑、常見問題

運行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

五悍手、參考資料

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市袍患,隨后出現(xiàn)的幾起案子恕齐,更是在濱河造成了極大的恐慌,老刑警劉巖馆匿,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件忙菠,死亡現(xiàn)場離奇詭異,居然都是意外死亡肆良,警方通過查閱死者的電腦和手機筛璧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進店門逸绎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人夭谤,你說我怎么就攤上這事棺牧。” “怎么了朗儒?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵颊乘,是天一觀的道長。 經(jīng)常有香客問我醉锄,道長乏悄,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任榆鼠,我火速辦了婚禮纲爸,結果婚禮上,老公的妹妹穿的比我還像新娘妆够。我一直安慰自己识啦,他們只是感情好,可當我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布神妹。 她就那樣靜靜地躺著颓哮,像睡著了一般。 火紅的嫁衣襯著肌膚如雪鸵荠。 梳的紋絲不亂的頭發(fā)上冕茅,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天,我揣著相機與錄音蛹找,去河邊找鬼姨伤。 笑死,一個胖子當著我的面吹牛庸疾,可吹牛的內容都是我干的乍楚。 我是一名探鬼主播,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼届慈,長吁一口氣:“原來是場噩夢啊……” “哼徒溪!你這毒婦竟也來了?” 一聲冷哼從身側響起金顿,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤臊泌,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后揍拆,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體渠概,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年礁凡,在試婚紗的時候發(fā)現(xiàn)自己被綠了高氮。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片慧妄。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡顷牌,死狀恐怖剪芍,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情窟蓝,我是刑警寧澤罪裹,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站运挫,受9級特大地震影響状共,放射性物質發(fā)生泄漏。R本人自食惡果不足惜谁帕,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一峡继、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧匈挖,春花似錦碾牌、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至择膝,卻和暖如春誓琼,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背肴捉。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工腹侣, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人齿穗。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓傲隶,卻偏偏與公主長得像,于是被迫代替她去往敵國和親缤灵。 傳聞我的和親對象是個殘疾皇子伦籍,可洞房花燭夜當晚...
    茶點故事閱讀 45,033評論 2 355

推薦閱讀更多精彩內容

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