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


Git的基本工作流程

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

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

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

Git服務(wù)器搭建

環(huán)境部署

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

  • 軟件版本:
    服務(wù)器端:源碼編譯安裝,git-1.9.0.tar.gz
    客戶端:yum在線安裝機(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用戶運(yùn)行
  1. 查看版本號:
#git --version
git version 1.9.0
  1. 安裝gitosis:gitosis為Git用戶權(quán)限管理系統(tǒng),通過管理服務(wù)端的/home/git/.ssh/authorized_key文件來執(zhí)行對用戶權(quán)限的管理,是一個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即表示成功

客戶端安裝

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

配置

ssh設(shè)置

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

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

注意:這里會生成兩個文件,id_rsa與id_rsa.pub。打開id_rsa.pub 看一下,如果最后面的郵箱地址有數(shù)字,后面配置會報錯,所以這里如果有數(shù)字要重新生成。

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

  1. 添加用戶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ù)器端生成管理庫:
#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的用戶訪問權(quán)限管理庫,gitosis通過這個git庫來管理所有g(shù)it庫的訪問權(quán)限。
  2. 通過執(zhí)行初始化,該公鑰的擁有者就能修改用于配置gitosis的那個特殊Git倉庫了
  1. 修改上傳權(quán)限:
#chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update

客戶端配置

  1. 客戶端導(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. 如果報錯請嘗試 git clone git@192.168.0.130:repositories/gitosis-admin.git
  2. gitosis.conf文件用來設(shè)置用戶、倉庫和權(quán)限的控制文件
  3. keydir目錄則是保存所有具有訪問權(quán)限用戶公鑰的地方
  4. git-repo目錄為項目管理目錄
  1. 客戶端創(chuàng)建及設(shè)置管理項目
#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        #顯示用戶root@vm1.pub是初始化gitosis公鑰的擁有者,是唯一能管理gitosis-admin項目的人


[group jay_fans]          #組名稱
members = root@vm1        #密鑰用戶名
writable = git-test       #項目名稱

注解:

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

項目管理

項目創(chuàng)建

接下來我們在客戶端創(chuàng)建一個git-test的項目,然后推送到服務(wù)端倉庫。

  1. 在本地創(chuàng)建項目,并設(shè)為遠(yuǎn)程倉庫,然后推送至服務(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

注解:

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

  1. 客戶端給成員配置此項目的權(quán)限
修改gitosis.conf
[group jay_fans]     #  組名稱
members = jay        #  項目成員
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文件讀取信息的,通過以上操作,會將新的權(quán)限信息寫入到該文件中,如果搞錯了配置,導(dǎo)致失去了推送權(quán)限,可以通過修改該文件來重新設(shè)定,如果你手工編輯該文件的話,它會一直保持到下次向 gitosis-admin 推送新版本的配置內(nèi)容為止。

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

項目分配

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

后記

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

  1. 如果pub文件沒有和服務(wù)器中對應(yīng)起來,操作的時候會提示輸入git用戶的密碼,此時如果有密碼的話同樣可以使用管理功能。
  2. 將用戶的pub文件和上傳至服務(wù)器,其實(shí)是類似免密登錄的原理,利用本地的私鑰id_rsa和服務(wù)端的公鑰id_rsa.pub實(shí)現(xiàn)不需要密碼對項目進(jìn)行管理。
  3. 如果pub文件和服務(wù)器沒對應(yīng)起來,也就是操作還需要輸入git密碼的時候,在進(jìn)行g(shù)it操作時,倉庫的地址要加上repositories。例如:
原:
#git clone git@192.168.0.130:test.git
現(xiàn):
#git@192.168.0.130:repositories/test.git
  1. 如果不小心將有數(shù)字的pub傳入服務(wù)端倉庫,導(dǎo)致倉庫不能使用。可以登錄倉庫所在的服務(wù)器,git用戶下,編輯/home/git/.ssh/authorized_keys,刪除對應(yīng)的有數(shù)字的秘鑰所在行就可以恢復(fù)。



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

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

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

  • gitosis: 把所有用戶的公鑰保存在 authorized_keys 文件的做法,只能湊和一陣子,當(dāng)用戶數(shù)量達(dá)...
    曉蜻蜓閱讀 6,154評論 2 2
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,692評論 19 139
  • (一) 我曾經(jīng)是個誠實(shí)的女孩子,一說謊就會臉紅到耳根,甚至跟男孩子講話也會臉紅。 我理想中的愛情是“窈窕淑女,君子...
    小淑文閱讀 2,748評論 97 104
  • 我丟了聘任證的照片,所以需要補(bǔ)辦。但是放了學(xué)之后,我發(fā)現(xiàn),怎么都找不著了。。 明明記得抽屜有一張的,現(xiàn)在卻突然沒有...
    馬上做閱讀 468評論 0 0
  • 今天好忙碌的一天,上午約了美容,中午閨女回家 閨女寫作業(yè),我打客服調(diào)了一個線,下午繼續(xù)帶娃上課,跟進(jìn)了兩個潛...
    最愛的家閱讀 159評論 0 0

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