使用gitolite搭建完美Git服務(wù)器以及Git鉤子的使用

上節(jié)講到如何使用在阿里云上申請一個9.9的服務(wù)器初始化配置磕秤,那么現(xiàn)在需要在這個服務(wù)器上搭建git服務(wù)器,下面來說一下我這一周多求學(xué)的知識臭笆。

一叙淌、使用gitolite搭建git服務(wù)器

1.首先使用ssh 用戶名@ip地址 遠(yuǎn)程連接到你的服務(wù)器;
2.然后輸入用戶的密碼去登錄愁铺;
3.現(xiàn)在進(jìn)去正題鹰霍,使用yum update更新所需要的數(shù)據(jù)包,系統(tǒng)會先提示你需要更新那些包茵乱,輸入y去執(zhí)行更新茂洒;


以上是一個更新完整的過程。

4.安裝git

yum install git

安裝的順序大概和上面的一樣瓶竭,先會告訴你有哪些需要更新督勺,然后輸入y,執(zhí)行更新在验。安裝成功之后可以輸入 git 查看其相關(guān)的命令玷氏。

5.安裝perl

yum install perl

注意:在安裝perl的同時,最好把 cpan 也同時安裝一下

yum install cpan

6.安裝openssh

yum install openssh

以上這些都是開發(fā)前的環(huán)境準(zhǔn)備腋舌,現(xiàn)在開始進(jìn)入正題盏触;

7.添加git、gitadmin用戶

useradd git 
//添加一個用戶名為 git 的用戶块饺,這個名字你可以隨便起
//比如赞辩,我想添加一個madman用戶,使用useradd madman
//以上解釋是害怕你們被誤導(dǎo)授艰,但是建議用戶名還是起的有意義比較好

8.相關(guān)命令

  • 添加用戶的ssh登錄密碼
passwd git  //為git用戶添加登錄的密碼
  • 查看所有的用戶
cat /etc/passwd   //這個命令用來查看所有的用戶

這里有人會問辨嗽,為什么會有這么多用戶呢?大多都是系統(tǒng)自帶的淮腾,而只有像root糟需、git這樣的以/bin/bash的屉佳,是可以使用ssh登錄的。

  • 查看所有用戶的詳細(xì)信息
cat  /etc/shadow


別問我用戶:后面那一長串東東是什么鬼洲押,我只能說我也不是很清楚武花,應(yīng)該有端口號,有用戶的id什么的吧杈帐,具體你們用到的時候可以上網(wǎng)搜一下体箕,那么第一個是用戶的密碼,當(dāng)然是經(jīng)過加密處理的挑童。
還有的是 ntp:!!:17357 是什么鬼累铅?這是說明這個用戶是被鎖定的,其實(shí)一開始添加 git 用戶的時候站叼,如果不給 git 用戶添加密碼娃兽,它的狀態(tài)也是被鎖定的。比如我現(xiàn)在添加一個 gitadmin 用戶來查看一下:

  • 刪除用戶
userdel -r gitadmin    //刪除gitadmin用戶以及關(guān)聯(lián)文件

9.在 gitadmin 用戶下生成公鑰私鑰

ssh-keygen  //中間敲三次回車
//第一次:默認(rèn)生成的路徑大年,回車
//第二次第三次 輸入密碼 確認(rèn)密碼换薄,建議回車

10.把私鑰移動到tmp目錄下

cp id_rsa.pub /tmp/gitadmin.pub
//ps:截圖中敲錯單詞了玉雾,不要在意這些細(xì)節(jié)翔试,最后我又改回來了

11.在 git 用戶下安裝 gitolite
首先,來到 git 用戶的home目錄下复旬,依次執(zhí)行

git clone https://github.com/sitaramc/gitolite
mkdir -p $HOME/bin
gitolite/install -to $HOME/bin

12.設(shè)置管理員的私鑰
在git用戶下的/bin目錄下垦缅,執(zhí)行

./gitolite setup -pk /tmp/gitadmin.pub

在git用戶下會多出兩個文件projects.list 、respositories:


respositories文件是所有的倉庫驹碍,這里在git用戶下只是做配置壁涎;
cd 到respositories目錄下,我們查看一下目錄下的東西:


13.切換到gitadmin用戶下志秃,clone git用戶下的gitolote-admin.git

git clone git@ip地址:gitolite-admin

我們看到gitadmin用戶下已經(jīng)存在了這個目錄怔球,然后查看一下這個目錄,下面有兩個文件浮还,這兩個文件一會兒再去操作:


14.現(xiàn)在我們要在本地生成公鑰私鑰竟坛,然后copy到gitadmin/gitolite-admin/keydir下,至于如何在本地生成公鑰私鑰钧舌,我之前有篇文章提到過担汤,可以去那里看一下,http://www.reibang.com/p/32690ccd101b,下面只執(zhí)行scp操作去操作本地的公鑰洼冻;

scp id_rsa.pub root@ip地址:/home/gitadmin/gitolite-admin/keydir/liding_mac.pub

來到服務(wù)器gitadmin用戶下崭歧,查看上傳的文件:

但是,我們還需要做git的一系列操作撞牢,我們先查看一下現(xiàn)在是什么狀態(tài):

我們按照提示去git add 到暫存區(qū)率碾,再去查看狀態(tài):

根據(jù)上面的提示叔营,我們再去執(zhí)行commit操作:

好吧,再根據(jù)提示告訴git你是誰所宰,再去執(zhí)行commit操作:


最后审编,我們終于可以執(zhí)行g(shù)it push操作了:


好了,最后可以看到緩存區(qū)已經(jīng)被清空了歧匈,那么通過以上操作垒酬,大概可以明白gitadmin/gitolite-admin/keydir這個文件是用來放置公鑰的;

15.下面來說一下conf這個文件件炉,我們先打開看一下這個是干什么的勘究。


可以看到里面有一個文件gitolite.conf文件,打開這個文件是上圖的代碼斟冕;那么這個文件是干什么的口糕?其實(shí)這個就是所謂的倉庫,這里面每一個repo都是一個倉庫磕蛇,一般一個項目可以關(guān)聯(lián)一個倉庫景描,我們可以使用vim打開新增或刪除這個倉庫,再和上面同樣的操作就可以了秀撇,最后使用```git clone git@ip地址:倉庫名``把空倉庫pull下來超棺,可以往里面添加?xùn)|西。

好了呵燕,以上就是整個git服務(wù)器的搭建過程棠绘,接下來就是git中鉤子的使用了。

至于什么是鉤子再扭,這里就不再做詳細(xì)解釋氧苍,從以上的搭建中,只要把用戶的本地公鑰添加到gitadmin下的keydir文件中泛范,就可以把項目pull下來直接使用让虐,也可以進(jìn)行g(shù)it的相關(guān)操作,而最終完整的項目存在于git用戶下的repositories目錄中罢荡。但是我們不可能把這個項目直接copy下來放到服務(wù)器的一個目錄下赡突,然后域名指向這個目錄中的索引文件。當(dāng)然你這樣開發(fā)完成之后再去這樣操作也是可行的柠傍,但是維護(hù)呢麸俘?總不能維護(hù)的時候再去copy一份吧,這顯然也不是一個很好的開發(fā)體驗惧笛。那么這里就需要用到git鉤子了从媚,我們每次做git操作的時候都會觸發(fā)這個鉤子執(zhí)行一系列的操作,去更新服務(wù)器中的文件患整,想想就比較完美拜效。那么喷众,接下來我會一步一步操作去演示到千。

二般眉、使用git鉤子完善完美的git服務(wù)器

1.首先柿汛,我們切換到gitadmin 用戶项玛,來到gitolite-admin/conf/目錄下稍计,在gitolite.conf中添加一個新的倉庫剥哑,比如下圖中的ipaiban-admin:


然后執(zhí)行g(shù)it status,根據(jù)相關(guān)提示進(jìn)行一系列的git操作,以上都有,這里不再重復(fù)了姜骡。
那么,現(xiàn)在我們就可以從本地正常git clone下來這個倉庫了,但是這是一個空倉庫,先不要管他。

2.切換到git用戶下稽煤,可以看到在repositories中已經(jīng)有了ipaiban-admin.git目錄


我們查看一下ipaiban-admin.git目錄里都有什么:


別的目錄都不要管匾二,可以看到有個hooks目錄,繼續(xù)查看


好了睹限,這里就是我們要找的目錄了,我們需要在這個目錄下創(chuàng)建鉤子文件:
使用vi 創(chuàng)建一個新文件

vi post-receive

在這個文件中寫shell腳本并保存:

#!/bin/sh

unset GIT_DIR

MYDIR=ipaiban-admin

cd mnt/work/$MYDIR
git pull
git checkout dev

sudo cp -rfu ./* /mnt/w3c/$MYDIR

cd /mnt/w3c/
sudo chown -R www.www $MYDIR

3.來到掛載的硬盤mnt下,創(chuàng)建兩個目錄:work 以及 w3c

mkdir work
mkdir w3c
sudo chown -R www.www w3c
sudo chown -R git.git work

然后分別在w3c下和work下創(chuàng)建ipaiban-admin目錄诚亚;
需要注意的是work一定要分給git 用戶,并且需要生成git用戶的公鑰敏释,并放到gitadmin下的keydir文件里面并執(zhí)行g(shù)it一系列提交操作义屏;

結(jié)束語:(重要)

OK,到這里基本已經(jīng)結(jié)束了蜂大,最后要做的是把域名指向w3c下的ipaiban-admin就可以了闽铐,這里只適合測試服務(wù)器,而正式服務(wù)器的操作最好不要用鉤子直接關(guān)聯(lián)奶浦,而是把正式服務(wù)器生成密鑰加到測試服務(wù)器的keydir文件里兄墅,需要更新到正式服務(wù)器的時候,手動執(zhí)行一下上面的腳本澳叉,有人會發(fā)現(xiàn)隙咸,我在shell腳本里都切換到了dev分支,為什么呢成洗?因為一般master分支是用來搭建主體架構(gòu)的五督,不建議直接進(jìn)行開發(fā),需要建一個分支去開發(fā)泌枪,這里我建立了一個dev分支概荷,而實(shí)際開發(fā)中還需要real分支,就是正式分支碌燕,在dev分支上開發(fā)測試完成之后,合并到real分支去继薛。

Happy Hacking~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末修壕,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子遏考,更是在濱河造成了極大的恐慌慈鸠,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件灌具,死亡現(xiàn)場離奇詭異青团,居然都是意外死亡譬巫,警方通過查閱死者的電腦和手機(jī)督笆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進(jìn)店門芦昔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人娃肿,你說我怎么就攤上這事咕缎。” “怎么了料扰?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵凭豪,是天一觀的道長。 經(jīng)常有香客問我晒杈,道長嫂伞,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任拯钻,我火速辦了婚禮帖努,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘说庭。我一直安慰自己然磷,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布刊驴。 她就那樣靜靜地躺著姿搜,像睡著了一般。 火紅的嫁衣襯著肌膚如雪捆憎。 梳的紋絲不亂的頭發(fā)上舅柜,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天,我揣著相機(jī)與錄音躲惰,去河邊找鬼致份。 笑死,一個胖子當(dāng)著我的面吹牛础拨,可吹牛的內(nèi)容都是我干的氮块。 我是一名探鬼主播,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼诡宗,長吁一口氣:“原來是場噩夢啊……” “哼滔蝉!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起塔沃,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤蝠引,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體螃概,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡矫夯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了吊洼。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片训貌。...
    茶點(diǎn)故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖融蹂,靈堂內(nèi)的尸體忽然破棺而出旺订,到底是詐尸還是另有隱情,我是刑警寧澤超燃,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布区拳,位于F島的核電站,受9級特大地震影響意乓,放射性物質(zhì)發(fā)生泄漏樱调。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一届良、第九天 我趴在偏房一處隱蔽的房頂上張望笆凌。 院中可真熱鬧,春花似錦士葫、人聲如沸乞而。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽爪模。三九已至,卻和暖如春荚藻,著一層夾襖步出監(jiān)牢的瞬間屋灌,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工应狱, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留共郭,地道東北人。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓疾呻,卻偏偏與公主長得像除嘹,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子岸蜗,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評論 2 348

推薦閱讀更多精彩內(nèi)容

  • gitosis: 把所有用戶的公鑰保存在 authorized_keys 文件的做法憾赁,只能湊和一陣子,當(dāng)用戶數(shù)量達(dá)...
    曉蜻蜓閱讀 5,745評論 2 2
  • 1.git的安裝 1.1 在Windows上安裝Git msysgit是Windows版的Git散吵,從https:/...
    落魂灬閱讀 12,652評論 4 54
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器矾睦,智...
    卡卡羅2017閱讀 134,628評論 18 139
  • 1. 安裝 Github 查看是否安裝git: $ git config --global user.name "...
    Albert_Sun閱讀 13,644評論 9 163
  • git作為時下最流行的代碼管理工具晦款,Git權(quán)威指南總結(jié)了十條喜歡Git的理由: 異地協(xié)同工作枚冗; 現(xiàn)場版本控制缓溅; 重...
    古斟布衣閱讀 1,819評論 0 12