隨筆-179  評(píng)論-666  文章-29  trackbacks-0

          一、安裝git服務(wù)器所需軟件

          打開(kāi)終端輸入以下命令:

          ubuntu:~$ sudo apt-get install git-core openssh-server openssh-client
          git-core是git版本控制核心軟件

          安裝openssh-server和openssh-client是由于git需要通過(guò)ssh協(xié)議來(lái)在服務(wù)器與客戶端之間傳輸文件

          然后中間有個(gè)確認(rèn)操作,輸入Y后等待系統(tǒng)自動(dòng)從鏡像服務(wù)器中下載軟件安裝,安裝完后會(huì)回到用戶當(dāng)前目錄。如果

          安裝提示失敗,可能是因?yàn)橄到y(tǒng)軟件庫(kù)的索引文件太舊了,先更新一下就可以了,更新命令如下:

          ubuntu:~$ sudo apt-get update 

          更新完軟件庫(kù)索引后繼續(xù)執(zhí)行上面的安裝命令即可。

          安裝python的setuptools和gitosis,由于gitosis的安裝需要依賴于python的一些工具,所以我們需要先安裝python

          的setuptools。

          執(zhí)行下面的命令:

          ubuntu:~$ sudo apt-get install python-setuptools
          這個(gè)工具比較小,安裝也比較快,接下來(lái)準(zhǔn)備安裝gitosis,安裝gitosis之前需要初始化一下服務(wù)器的git用戶信息,這個(gè)隨便填。

          ubuntu:~$ git config --global user.name "myname"
          ubuntu:~$ git config --global user.email "******@gmail.com"

          初始化服務(wù)器用戶信息后,就可以安裝gitosis了,gitosis主要是用于給用戶授權(quán),設(shè)置權(quán)限也算是很方便的。

          可以通過(guò)以下命令獲取gitosis版本文件

          ubuntu:~$ git clone https://github.com/res0nat0r/gitosis.git
          注意:中間有兩個(gè)是數(shù)字零

          獲取gitosis文件后,進(jìn)入到文件目錄下面

          ubuntu:/tmp$ cd gitosis/

          接著使用python命令安裝目錄下的setup.py的python腳本進(jìn)行安裝

          ubuntu:/tmp/gitosis$ sudo python setup.py install

          到這里,整個(gè)安裝步驟就完成了,下面就開(kāi)始對(duì)git進(jìn)行一些基本的配置。

          二、創(chuàng)建git管理員賬戶、配置git

          創(chuàng)建一個(gè)賬戶(git)作為git服務(wù)器的管理員,可以管理其他用戶的項(xiàng)目權(quán)限。

          ubuntu:/tmp/gitosis$ sudo useradd -m git
          ubuntu:/tmp/gitosis$ sudo passwd git

          然后再/home目錄下創(chuàng)建一個(gè)項(xiàng)目倉(cāng)庫(kù)存儲(chǔ)點(diǎn),并設(shè)置只有g(shù)it用戶擁有所有權(quán)限,其他用戶沒(méi)有任何權(quán)限。

          ubuntu:/tmp/gitosis$ sudo mkdir /home/gitrepository
          ubuntu:/tmp/gitosis$ sudo chown git:git /home/gitrepository/
          ubuntu:/tmp/gitosis$ sudo chmod 700 /home/gitrepository/

          由于gitosis默認(rèn)狀態(tài)下會(huì)將倉(cāng)庫(kù)放在用戶的repositories目錄下,例如git用戶的倉(cāng)庫(kù)地址默認(rèn)在/home/git/repositories/目錄下,這里我們需要?jiǎng)?chuàng)建一個(gè)鏈接映射。讓他指向我們前面創(chuàng)建的專門(mén)用于存放項(xiàng)目的倉(cāng)庫(kù)目錄/home/gitrepository。

          ubuntu:/tmp/gitosis$ sudo ln -s /home/gitrepository /home/git/repositories

          這里我將在服務(wù)器端生成ssh公鑰,如果想在其他機(jī)器上管理也可以在其他機(jī)器上生成一個(gè)ssh的公鑰。

          ubuntu:/home/git$ ssh-keygen -t rsa

          這里會(huì)提示輸入密碼,我們不輸入直接回車即可。

          然后用剛生成公鑰id_rsa.pub來(lái)對(duì)gitosis進(jìn)行初始化。

          向gitosis添加公鑰并初始化:

          $ cp ~/.ssh/id_rsa.pub /tmp

          $ sudo -H -u gitadmin gitosis-init < /tmp/id_rsa.pub

          Ubuntu完美搭建Git服務(wù)器

          出現(xiàn)如上信息說(shuō)明gitosis已經(jīng)初始化成功。

          gitosis主要是通過(guò)gitosis-admin.git倉(cāng)庫(kù)來(lái)管理一些配置文件的,如用戶權(quán)限的管理。這里我們需要對(duì)其中的一個(gè)post-update文件添加可執(zhí)行的權(quán)限。

          ubuntu:/home/git$ sudo chmod 755 /home/gitrepository/gitosis-admin.git/hooks/post-update

          三、服務(wù)器上創(chuàng)建項(xiàng)目倉(cāng)庫(kù)

          使用git賬戶在服務(wù)器上創(chuàng)建一個(gè)目錄(mytestproject.git)并初始化成git項(xiàng)目倉(cāng)庫(kù)。

          ubuntu:/home/git$ su git
          $ cd /home/gitrepository
          $ mkdir mytestproject.git
          $ git init --bare mytestproject.git
          $ exit

          如果出現(xiàn)以下信息就說(shuō)明已經(jīng)成功創(chuàng)建了一個(gè)名為mytestproject.git的項(xiàng)目倉(cāng)庫(kù)了,新建的這個(gè)倉(cāng)庫(kù)暫時(shí)還是空的,不能被客戶端clone,還需要對(duì)gitosis進(jìn)行一些配置操作。

          四、使用gitosis管理用戶操作項(xiàng)目的權(quán)限

          首先需要在前面生成ssh公鑰(用來(lái)初始化gitosis)的機(jī)器上將gitosis-admin.git的倉(cāng)庫(kù)clone下來(lái)。

          在客戶端機(jī)器上新建一個(gè)目錄用于存放gitosis-admin.git倉(cāng)庫(kù)

          ubuntu:~$ mkdir gitadmin
          ubuntu:~$ cd gitadmin/
          ubuntu:~/gitadmin$ git clone git@192.168.1.106:gitosis-admin.git

          clone正確會(huì)顯示以下信息

          Ubuntu完美搭建Git服務(wù)器

          clone下來(lái)會(huì)有一個(gè)gitosis.conf的配置文件和一個(gè)keydir的目錄。gitosis.conf用于配置用戶的權(quán)限信息,keydir主要用戶存放ssh公鑰文件(一般以“用戶名.pub”命名,gitosis.conf配置文件中需使用相同用戶名),用于認(rèn)證請(qǐng)求的客戶端機(jī)器。

          現(xiàn)在讓需要授權(quán)的用戶使用前面的方式各自在其自己的機(jī)器上生成相應(yīng)的ssh公鑰文件,管理員把他們分別按用戶名命名好,復(fù)制到keydir目錄下。

          ubuntu:~$ cp /home/aaaaa/Desktop/zhangsan.pub /home/aaaaa/gitadmin/gitosis-admin/keydir/

          ubuntu:~$ cp /home/aaaaa/Desktop/lisi.pub /home/aaaaa/gitadmin/gitosis-admin/keydir/

          繼續(xù)編輯gitosis.conf文件

          [gitosis]

          [group gitosis-admin] 
          ####管理員組
          members = charn@ubuntu 
          ####管理員用戶名,需要在keydir目錄下找到相應(yīng)的.pub文件,多個(gè)可用空格隔開(kāi)(下同)
          writable = gitosis-admin####可寫(xiě)的項(xiàng)目倉(cāng)庫(kù)名,多個(gè)可用空格隔開(kāi)(下同)

          [group testwrite] 
          ####可寫(xiě)權(quán)限組
          members = zhangsan####組用戶
          writable = mytestproject####可寫(xiě)的項(xiàng)目倉(cāng)庫(kù)名

          [group
           testread] ####只讀權(quán)限組
          members =lisi####組用戶
          readonly= mytestproject####只讀項(xiàng)目倉(cāng)庫(kù)名

          因?yàn)檫@些配置的修改只是在本地修改的,還需要推送到服務(wù)器中才能生效。

          ubuntu:~/gitadmin/gitosis-admin$ git add .
          ubuntu:~/gitadmin/gitosis-admin$ git commit -am "add a user permission"
          ubuntu:~/gitadmin/gitosis-admin$ git push origin master

          推送成功會(huì)顯示下面提示信息

          Ubuntu完美搭建Git服務(wù)器

          又是后新增的用戶不能立即生效,這時(shí)候需要重新啟動(dòng)一下sshd服務(wù)

          ubuntu:~/gitadmin/gitosis-admin$ sudo /etc/init.d/ssh restart

          現(xiàn)在,服務(wù)端的git就已經(jīng)安裝和配置完成了,接下來(lái)就需要有權(quán)限的組成員在各自的機(jī)器上clone服務(wù)器上的相應(yīng)

          項(xiàng)目倉(cāng)庫(kù)進(jìn)行相應(yīng)的工作了。

          五、客戶端(windows)使用git

          下載安裝windows版本的git客戶端軟件,下載地址:http://msysgit.github.io/

          安裝完成后右鍵菜單會(huì)出現(xiàn)幾個(gè)git相關(guān)的菜單選項(xiàng),我們主要使用其中的git
           bash通過(guò)命令行來(lái)進(jìn)行操作。

          在本地新建一個(gè)目錄,使用git初始化這個(gè)目錄,然后再里面新建一個(gè)文本文件用于測(cè)試,最后關(guān)聯(lián)到git服務(wù)器倉(cāng)庫(kù)

          中的相關(guān)項(xiàng)目,最后上傳本地版本到服務(wù)器。

          $ mkdir testgit
          $ cd testgit
          $ git init
          $ echo "this is a test text file,will push to server" > hello.txt
          $ git add .
          $ git commit -am "init a base version,add a first file for push to server"
          $ git remote add origin git@serverip:mytestproject.git
          $ git push origin master

          這樣服務(wù)端就創(chuàng)建好了一個(gè)mytestproject.git的倉(cāng)庫(kù)的基礎(chǔ)版本了,現(xiàn)在其他組員只要從服務(wù)端進(jìn)行clone就可以了。

          window下面進(jìn)入到需要克隆的本地目錄下面右鍵選擇git bash選項(xiàng),輸入

          $ git clone git@serverip:mytestproject.git

          就可以把項(xiàng)目clone到本地倉(cāng)庫(kù)了。

          下面進(jìn)行簡(jiǎn)單的修改和提交操作

          $ cd mytestproject
          $ echo "this is another text file created by other" >another.txt
          $ git add .
          $ git commit -am "add a another file by other"
          $ git push origin master

          最后推送到服務(wù)器成功會(huì)顯示如下信息

          Ubuntu完美搭建Git服務(wù)器


          gitolite搭建git倉(cāng)庫(kù)(服務(wù)端+客戶端)

          http://blog.csdn.net/ChiChengIT/article/details/49863383

          posted on 2018-03-13 15:35 Alpha 閱讀(1213) 評(píng)論(0)  編輯  收藏

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 凤台县| 乌恰县| 长岛县| 芦山县| 涟水县| 湟源县| 徐汇区| 读书| 青岛市| 东丽区| 望江县| 汉川市| 湖口县| 饶平县| 永善县| 伽师县| 昌宁县| 开江县| 邵阳县| 阳东县| 仪征市| 闻喜县| 汉沽区| 灵山县| 醴陵市| 云霄县| 丰原市| 济宁市| 清丰县| 甘南县| 金塔县| 四平市| 独山县| 鹿泉市| 鄂州市| 贞丰县| 申扎县| 鄂温| 客服| 汪清县| 开化县|