qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問(wèn) http://qaseven.github.io/

          Centos下使用gitosis配置管理git服務(wù)端

          說(shuō)明:由于條件有限,我這里使用的是同一臺(tái)centos的,但教程內(nèi)容基本上通用。
            1.編譯安裝git git安裝教程
            2.安裝gitosis
            $ yum install python python-setuptools
            $ git clone git://github.com/res0nat0r/gitosis.git
            $ cd gitosis
            $ python setup.py install
            2.在開發(fā)機(jī)器上生成公共密鑰(用來(lái)初始化gitosis)
            $ ssh-keygen -t rsa #不需要密碼,一路回車就行(在本地操作)
            $ scp ~/.ssh/id_rsa.pub root@xxx:/tmp/ # 上傳你的ssh public key到服務(wù)器
            3.初始化gitosis[服務(wù)器端]
            $ adduser git # 新增一個(gè)git用戶(先添加用戶組 groupadd git)
            $ su git # 切換倒git用戶下
            $ gitosis-init < /tmp/id_rsa.pub # id_rsa.pub是剛剛傳過(guò)來(lái)的,注意放在/tmp目錄主要是因?yàn)榇四夸洐?quán)限所有人都有定權(quán)限的
            $ rm /tmp/id_rsa.pub # id_rsa.pub已經(jīng)無(wú)用,可刪除.
            4.獲取并配置gitosis-admin [客戶端]
            $  git clone git@xxx:gitosis-admin.git  # 切換到root用戶并在本地執(zhí)行,獲取gitosis管理項(xiàng)目,將會(huì)產(chǎn)生一個(gè)gitosis-admin的目錄,里面有配置文件gitosis.conf和一個(gè) keydir 的目錄,keydir目錄主要存放git用戶名
            $  vi gitosis-admin/gitosis.conf  # 編輯gitosis-admin配置文件
            如果無(wú)法git clone的話,可以使用git clone git@xxx:/home/git/repositories/gitosis-admin.git
            # 在gitosis.conf底部增加
            [group 組名]
            writable = 項(xiàng)目名
            members = 用戶  # 這里的用戶名字 要和 keydir下的文件名字相一致
            # VI下按ZZ(大寫)兩次會(huì)執(zhí)行自動(dòng)保存并退出,完成后執(zhí)行
            $ cd gitosis-admin
            $ git add .
            $ git commit -a -m “xxx xx” # 要記住的是,如果每次添加新文件必須執(zhí)行g(shù)it add .,或者git add filename,如果沒(méi)有新加文件,只是進(jìn)行修改的話就可以執(zhí)行此句。
            # 修改了文件以后一定要PUSH到服務(wù)器,否則不會(huì)生效。
            $ git push
            如果在git push的時(shí)候,遇到錯(cuò)誤“ddress 192.168.0.77 maps to bogon, but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT!”,解決為修改/etc/hosts文件,將ip地址與主機(jī)名對(duì)應(yīng)關(guān)系寫進(jìn)去就可以了。
            注意:這里我們并沒(méi)有進(jìn)行任何的修改的,現(xiàn)在只有一個(gè)管理git的項(xiàng)目。下面的為新添加項(xiàng)目的配置,大家經(jīng)常用到的也就是下面的操作的。
            新建項(xiàng)目
            到此步就算完成gitosis的初始化了。接下來(lái)的是新建一個(gè)新項(xiàng)目到服務(wù)器的操作,如第5步中配置gitosis.conf文件添加的是
            [group project1] # 組名稱
            writable = project1 # 項(xiàng)目名稱
            members = xxx      # 用戶名xxx一定要與客戶端使用的用戶名完全一樣,否則無(wú)權(quán)限操作
            提交修改并更新到git server服務(wù)端
            $ git commit -a -m “添加新項(xiàng)目project1,新項(xiàng)目的目錄是project1,該項(xiàng)目的成員是xxx“ # “”里的內(nèi)容自定
            $ git push
          將新創(chuàng)建的項(xiàng)目提交到git server 上進(jìn)行登記。以便客戶可以操作新項(xiàng)目.
            # 在客戶端創(chuàng)建項(xiàng)目目錄(客戶端,當(dāng)前用戶為 XXX )
            現(xiàn)在回到開發(fā)者客戶端,上面創(chuàng)建了一個(gè)新項(xiàng)目project1并提交到了git server 。我們這里就創(chuàng)建此項(xiàng)目的信息.注意 項(xiàng)目名稱 project1要與gitosis.conf文件配置一致,
            $ mkdir /home/用戶/project1
            $ cd /home/用戶/project1
            $ git init
            $ git add . # 新增文件 留意后面有一個(gè)點(diǎn)
            $ git commit -a -m “初始化項(xiàng)目project1″
            # 然后就到把這個(gè)項(xiàng)目放到git server服務(wù)器上去.
            $ git remote add origin git@xxx:project1.git # xxx為服務(wù)器地址
            $ git push origin master
            # 也可以把上面的兩步合成一步
            $ git push git@xxx:project1.git master
            說(shuō)明:如果在執(zhí)行 git push origin master 的時(shí)候,提示以下錯(cuò)誤: error: src refspec master does not match any. error: failed to push some refs to 'git@192.168.0.77:pro2.git' 這是由于項(xiàng)目為空的原因,我們?cè)陧?xiàng)目目錄里新創(chuàng)建一個(gè)文件。經(jīng)過(guò)->add -> commit -> push 就可以解決了
            $ touch a.txt
            $ git add a.txt
            $ git commit -a -m 'add a.txt'
            $ git push
            ------------------------------------------------------------------------------------------------ 如果在git clone的時(shí)候遇到“
            error: cannot run ssh: No such file or directory - cygwin git
            ”錯(cuò)誤,則表示本機(jī)沒(méi)有安裝ssh命令。安裝方法請(qǐng)參考:http://blog.haohtml.com/archives/13313 有時(shí)候我們要更換電腦來(lái)重新開發(fā)項(xiàng)目。這個(gè)時(shí)候,只需要將id_rsa私鑰放在home目錄里的.ssh目錄里就可以了。(有時(shí)候一個(gè)人開發(fā)多個(gè)項(xiàng)目,這時(shí)候可能會(huì)提示id_rsa文件已經(jīng)存在。不太清楚這里如何解決???) 續(xù)篇:git下添加新項(xiàng)目及用戶
            ====================================================
            三、常見問(wèn)題
            首先確定 /home/git/repositories/gitosis-admin.git/hooks/post-update 為可執(zhí)行即屬性為 0755
            1. git操作需要輸入密碼
            原因
            公密未找到
            解決
            上傳id_rsa.pub到keydir并改為'gitosis帳號(hào).pub'形式,如miao.pub。擴(kuò)展名.pub不可省略
            2. 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

          posted on 2014-11-10 10:12 順其自然EVO 閱讀(1828) 評(píng)論(0)  編輯  收藏 所屬分類: 測(cè)試學(xué)習(xí)專欄 、linux

          <2014年11月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          30123456

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 惠州市| 社旗县| 彝良县| 小金县| 城口县| 安顺市| 开化县| 图木舒克市| 民丰县| 宜兴市| 永康市| 平远县| 关岭| 德州市| 南江县| 南投县| 徐水县| 阜平县| 内黄县| 赞皇县| 横山县| 通许县| 延寿县| 武强县| 工布江达县| 泽普县| 淄博市| 容城县| 随州市| 车致| 平南县| 富蕴县| 汝南县| 金塔县| 石城县| 长泰县| 惠安县| 德庆县| 眉山市| 富源县| 百色市|