CentOS 下Git服務(wù)器搭建(gitosis)


Git的基本工作流程

  • 在工作目錄中修改某些文件。

  • 對(duì)修改后的文件進(jìn)行快照锦庸,然后保存到暫存區(qū)域蒲祈。

  • 提交更新萝嘁,將保存在暫存區(qū)域的文件快照永久轉(zhuǎn)儲(chǔ)到 Git 目錄中扬卷。

Git服務(wù)器搭建

環(huán)境部署

  • 系統(tǒng)環(huán)境:
    服務(wù)器端:CentOS 6.5 ,ip:192.168.0.130
    客戶(hù)端:CentOS 6.5 咱枉,ip:192.168.0.110

  • 軟件版本:
    服務(wù)器端:源碼編譯安裝徒恋,git-1.9.0.tar.gz
    客戶(hù)端:yum在線(xiàn)安裝機(jī)制

安裝

服務(wù)器端安裝

  1. 安裝git:
#yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel
#wget http://git-core.googlecode.com/files/git-1.9.0.tar.gz
#tar zxvf git-1.9.0.tar.gz
#cd git-1.9.0
#make prefix=/usr/local all
#make prefix=/usr/local install  #root用戶(hù)運(yùn)行
  1. 查看版本號(hào):
#git --version
git version 1.9.0
  1. 安裝gitosis:gitosis為Git用戶(hù)權(quán)限管理系統(tǒng),通過(guò)管理服務(wù)端的/home/git/.ssh/authorized_key文件來(lái)執(zhí)行對(duì)用戶(hù)權(quán)限的管理入挣,是一個(gè)python模塊包
#yum install python python-setuptools
#git clone git://github.com/res0nat0r/gitosis.git
#cd gitosis/
#python setup.py install
  1. 顯示Finished processing dependencies for gitosis==0.2即表示成功

客戶(hù)端安裝

#yum install git
#git --version
git version 1.7.1

配置

ssh設(shè)置

客戶(hù)端操作:生產(chǎn)密鑰并上傳到服務(wù)器端

#ssh-keygen -t rsa -C "你的郵箱(不能有數(shù)字,可以隨便編)"
#scp ~/.ssh/id_rsa.pub root@192.168.0.130:~/

注意:這里會(huì)生成兩個(gè)文件葛假,id_rsa與id_rsa.pub滋恬。打開(kāi)id_rsa.pub 看一下,如果最后面的郵箱地址有數(shù)字带斑,后面配置會(huì)報(bào)錯(cuò),所以這里如果有數(shù)字要重新生成遏暴。

服務(wù)器生成git用戶(hù)

  1. 添加用戶(hù)git:
#useradd -r -s /bin/sh -c 'git version control' -d /home/git git
  1. 設(shè)置權(quán)限:
#mkdir -p /home/git
#chown git:git /home/git
  1. 在服務(wù)器端生成管理庫(kù):
#sudo -H -u git gitosis-init < ~/id_rsa.pub
Initialized empty Git repository in /home/git//repositories/gitosis-admin.git/ Reinitialized existing Git repository in /home/git/repositories/gitosis-admin.git/ 

注解:

  1. 生成的gitosis-admin為Git的用戶(hù)訪(fǎng)問(wèn)權(quán)限管理庫(kù)朋凉,gitosis通過(guò)這個(gè)git庫(kù)來(lái)管理所有g(shù)it庫(kù)的訪(fǎng)問(wèn)權(quán)限醋安。
  2. 通過(guò)執(zhí)行初始化,該公鑰的擁有者就能修改用于配置gitosis的那個(gè)特殊Git倉(cāng)庫(kù)了
  1. 修改上傳權(quán)限:
#chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update

客戶(hù)端配置

  1. 客戶(hù)端導(dǎo)出管理:
#mkdir -p /git-repo/
#cd /git-repo/
#git clone git@192.168.0.130:gitosis-admin.git
#cd gitosis-admin
#find .
./gitosis.conf
./keydir
./keydir/oot@vm1.pub

注解:

  1. 如果報(bào)錯(cuò)請(qǐng)嘗試 git clone git@192.168.0.130:repositories/gitosis-admin.git
  2. gitosis.conf文件用來(lái)設(shè)置用戶(hù)亲怠、倉(cāng)庫(kù)和權(quán)限的控制文件
  3. keydir目錄則是保存所有具有訪(fǎng)問(wèn)權(quán)限用戶(hù)公鑰的地方
  4. git-repo目錄為項(xiàng)目管理目錄
  1. 客戶(hù)端創(chuàng)建及設(shè)置管理項(xiàng)目
#cd /git-repo/gitosis-admin
查看已經(jīng)上傳密鑰
#ls keydir/
root@vm1.pub
  1. 權(quán)限及權(quán)限控制
#vim gitosis.conf
[gitosis]


[group gitosis-admin]
writable = gitosis-admin
members = root@vm1        #顯示用戶(hù)root@vm1.pub是初始化gitosis公鑰的擁有者团秽,是唯一能管理gitosis-admin項(xiàng)目的人


[group jay_fans]          #組名稱(chēng)
members = root@vm1        #密鑰用戶(hù)名
writable = git-test       #項(xiàng)目名稱(chēng)

注解:

  1. members可以填多個(gè)用戶(hù),用戶(hù)之間空格分隔
  2. writable為可寫(xiě)踪栋,只讀為readonly,設(shè)置為只讀則只能pull不能push

項(xiàng)目管理

項(xiàng)目創(chuàng)建

接下來(lái)我們?cè)诳蛻?hù)端創(chuàng)建一個(gè)git-test的項(xiàng)目夷都,然后推送到服務(wù)端倉(cāng)庫(kù)予颤。

  1. 在本地創(chuàng)建項(xiàng)目,并設(shè)為遠(yuǎn)程倉(cāng)庫(kù)党饮,然后推送至服務(wù)端
#cd /git-repo
#mkdir git-test
#cd git-test
#git init
#touch README
#git add .
#git commit -a -m "init git-test"
#git remote add origin git@192.168.0.130:git-test.git
#git push origin master

注解:

在新項(xiàng)目git-test里首次推送數(shù)據(jù)到服務(wù)器前笆焰,需先設(shè)定該服務(wù)器地址為遠(yuǎn)程倉(cāng)庫(kù),但你不用事先到服務(wù)器上手工創(chuàng)建該項(xiàng)目的裸倉(cāng)庫(kù)— Gitosis 會(huì)在第一次遇到推送時(shí)自動(dòng)創(chuàng)建。

  1. 客戶(hù)端給成員配置此項(xiàng)目的權(quán)限
修改gitosis.conf
[group jay_fans]     #  組名稱(chēng)
members = jay        #  項(xiàng)目成員
writable = git-test
  1. 權(quán)限配置推送至服務(wù)端
#git commit -a -m "granted jay commit rights to git-test"
#git push

注解:

gitosis實(shí)際上是從服務(wù)器端的/home/git/.gitosis.conf文件讀取信息的荞驴,通過(guò)以上操作,會(huì)將新的權(quán)限信息寫(xiě)入到該文件中霹娄,如果搞錯(cuò)了配置鲫骗,導(dǎo)致失去了推送權(quán)限,可以通過(guò)修改該文件來(lái)重新設(shè)定枕磁,如果你手工編輯該文件的話(huà),它會(huì)一直保持到下次向 gitosis-admin 推送新版本的配置內(nèi)容為止计济。

  1. 成員jay拉取代碼
#git clone git@192.168.56.1:git-test.git

項(xiàng)目分配

  1. gitosis.conf 配置文件說(shuō)明
[group gitosis-admin]   # 項(xiàng)目組 隨意起名字即可 可以和項(xiàng)目同名
members = lfz@lfz root110 fengzhen # 此項(xiàng)目組成員 多個(gè)成員用空格分隔
writable = gitosis-admin    # writable是可讀寫(xiě) readonly是只讀 等號(hào)后面是項(xiàng)目名 在倉(cāng)庫(kù)中對(duì)應(yīng) gitosis-admin.git
  1. 添加用戶(hù)步驟
    • 用戶(hù)在自己電腦的默認(rèn)目錄(mac中為~/.ssh/)下生成或者拿到id_rsa.pub文件沦寂,然后傳給管理員。(注意:id_rsa.pub最后的郵箱部分不能用數(shù)字
    • 管理員將文件改名传藏,例如改為abc.pub,此時(shí)abc就是此用戶(hù)的用戶(hù)名哭靖。然后放入gitosis-admin/keydir/目錄下叫惊。
    • 管理員編輯gitosis.conf文件,以abc為用戶(hù)名霍狰,添加到對(duì)應(yīng)項(xiàng)目組內(nèi)。
    • 管理員將更改推送到服務(wù)器倉(cāng)庫(kù)康震。
    • 此時(shí)宾濒,用戶(hù)即獲得項(xiàng)目權(quán)限,可以從遠(yuǎn)程倉(cāng)庫(kù)拉取項(xiàng)目橘忱。

后記

有幾個(gè)使用當(dāng)中需要注意的點(diǎn):

  1. 如果pub文件沒(méi)有和服務(wù)器中對(duì)應(yīng)起來(lái)卸奉,操作的時(shí)候會(huì)提示輸入git用戶(hù)的密碼,此時(shí)如果有密碼的話(huà)同樣可以使用管理功能榄棵。
  2. 將用戶(hù)的pub文件和上傳至服務(wù)器,其實(shí)是類(lèi)似免密登錄的原理拧略,利用本地的私鑰id_rsa和服務(wù)端的公鑰id_rsa.pub實(shí)現(xiàn)不需要密碼對(duì)項(xiàng)目進(jìn)行管理瘪弓。
  3. 如果pub文件和服務(wù)器沒(méi)對(duì)應(yīng)起來(lái),也就是操作還需要輸入git密碼的時(shí)候杠茬,在進(jìn)行g(shù)it操作時(shí),倉(cāng)庫(kù)的地址要加上repositories宁赤。例如:
原:
#git clone git@192.168.0.130:test.git
現(xiàn):
#git@192.168.0.130:repositories/test.git
  1. 如果不小心將有數(shù)字的pub傳入服務(wù)端倉(cāng)庫(kù)栓票,導(dǎo)致倉(cāng)庫(kù)不能使用愕够》鹈停可以登錄倉(cāng)庫(kù)所在的服務(wù)器,git用戶(hù)下继找,編輯/home/git/.ssh/authorized_keys遂跟,刪除對(duì)應(yīng)的有數(shù)字的秘鑰所在行就可以恢復(fù)。



參考: http://blog.chinaunix.net/uid-26729093-id-4652536.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末婴渡,一起剝皮案震驚了整個(gè)濱河市幻锁,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌边臼,老刑警劉巖哄尔,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異柠并,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)臼予,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)粘拾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人半哟,你說(shuō)我怎么就攤上這事寓涨÷乳埽” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵糯崎,是天一觀(guān)的道長(zhǎng)河泳。 經(jīng)常有香客問(wèn)我,道長(zhǎng)拆挥,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮否副,結(jié)果婚禮上崎坊,老公的妹妹穿的比我還像新娘。我一直安慰自己奈揍,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布队腐。 她就那樣靜靜地躺著奏篙,像睡著了一般。 火紅的嫁衣襯著肌膚如雪秘通。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,111評(píng)論 1 285
  • 那天第股,我揣著相機(jī)與錄音,去河邊找鬼夕吻。 笑死繁仁,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的黄虱。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼晤揣,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼朱灿!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起母剥,我...
    開(kāi)封第一講書(shū)人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎习霹,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體淋叶,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年处嫌,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了斟湃。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡注暗,死狀恐怖墓猎,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情毙沾,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布寇仓,位于F島的核電站,受9級(jí)特大地震影響焚刺,放射性物質(zhì)發(fā)生泄漏门烂。R本人自食惡果不足惜兄淫,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望慨丐。 院中可真熱鬧,春花似錦房揭、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)泻骤。三九已至,卻和暖如春狱掂,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背趋惨。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工惦蚊, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人养筒。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像挤悉,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子装悲,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

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

  • gitosis: 把所有用戶(hù)的公鑰保存在 authorized_keys 文件的做法诀诊,只能湊和一陣子,當(dāng)用戶(hù)數(shù)量達(dá)...
    曉蜻蜓閱讀 5,725評(píng)論 2 2
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理属瓣,服務(wù)發(fā)現(xiàn),斷路器抡蛙,智...
    卡卡羅2017閱讀 134,600評(píng)論 18 139
  • (一) 我曾經(jīng)是個(gè)誠(chéng)實(shí)的女孩子魂迄,一說(shuō)謊就會(huì)臉紅到耳根,甚至跟男孩子講話(huà)也會(huì)臉紅捣炬。 我理想中的愛(ài)情是“窈窕淑女绽榛,君子...
    小淑文閱讀 2,601評(píng)論 97 104
  • 我丟了聘任證的照片冲粤,所以需要補(bǔ)辦。但是放了學(xué)之后,我發(fā)現(xiàn)索昂,怎么都找不著了傀顾。短曾。 明明記得抽屜有一張的赐劣,現(xiàn)在卻突然沒(méi)有...
    馬上做閱讀 416評(píng)論 0 0
  • 今天好忙碌的一天,上午約了美容,中午閨女回家 閨女寫(xiě)作業(yè)婉徘,我打客服調(diào)了一個(gè)線(xiàn),下午繼續(xù)帶娃上課盖呼,跟進(jìn)了兩個(gè)潛...
    最?lèi)?ài)的家閱讀 123評(píng)論 0 0