私有g(shù)it搭建-創(chuàng)新互聯(lián)

這里使用的操作系統(tǒng)是CentOS release 5.9 (Final),并且已經(jīng)安裝了Git和一些必要的開(kāi)發(fā)工具。

成都創(chuàng)新互聯(lián)公司:于2013年開(kāi)始為各行業(yè)開(kāi)拓出企業(yè)自己的“網(wǎng)站建設(shè)”服務(wù),為數(shù)千家公司企業(yè)提供了專(zhuān)業(yè)的網(wǎng)站建設(shè)、成都做網(wǎng)站、網(wǎng)頁(yè)設(shè)計(jì)和網(wǎng)站推廣服務(wù), 定制網(wǎng)站建設(shè)由設(shè)計(jì)師親自精心設(shè)計(jì),設(shè)計(jì)的效果完全按照客戶(hù)的要求,并適當(dāng)?shù)奶岢龊侠淼慕ㄗh,擁有的視覺(jué)效果,策劃師分析客戶(hù)的同行競(jìng)爭(zhēng)對(duì)手,根據(jù)客戶(hù)的實(shí)際情況給出合理的網(wǎng)站構(gòu)架,制作客戶(hù)同行業(yè)具有領(lǐng)先地位的。

在服務(wù)器上創(chuàng)建用戶(hù)和項(xiàng)目倉(cāng)庫(kù)(repository)

  1. useradd git #創(chuàng)建git用戶(hù)

  2. passwd git #設(shè)置密碼

  3. su git #切換到git用戶(hù)

  4. cd ~/ #切換到home目錄

  5. git init --bare cube #創(chuàng)建一個(gè)叫cube的項(xiàng)目倉(cāng)庫(kù)

clone項(xiàng)目并提交修改(本地)

git clone git@IP地址:cube ~/cube

需要說(shuō)明的是這里會(huì)要求輸入用戶(hù)git的密碼,我們稍后建立主機(jī)信任后就不需要輸入密碼了.
然后在cube下創(chuàng)建一個(gè)README.txt

  1. git add *

  2. git commit -m "create new file"

  3. git push origin master

建立主機(jī)信任關(guān)系

在本地執(zhí)行

  1. ssh-keygen -t rsa

  2. cat ~/.ssh/id_rsa.pub

拷貝文件公鑰內(nèi)容

在服務(wù)器執(zhí)行

  1. mkdir ~/.ssh

  2. chmod 755 ~/.ssh

  3. touch ~/.ssh/authorized_keys

  4. chmod 600 ~/.ssh/authorized_keys

  5. echo 拷貝的公鑰 >> ~/.ssh/authorized_keys

要注意文件權(quán)限的問(wèn)題.

使用gitosis來(lái)配置和管理git服務(wù)端

Gitosis是為托管的Git存儲(chǔ)庫(kù)提供訪問(wèn)控制和遠(yuǎn)程管理的工具。它允許通過(guò)SSH對(duì)讀寫(xiě)訪問(wèn)進(jìn)行細(xì)粒度管理,而不需要用戶(hù)在服務(wù)器上具有本地系統(tǒng)帳戶(hù)。為此,它設(shè)置一個(gè)單一的系統(tǒng)帳戶(hù)“ git”,然后用于所有Git訪問(wèn)。

從AUR安裝gitosis-git AUR包。這將創(chuàng)造三件事:

  • git用戶(hù)

  • git該用戶(hù)所屬的組

  • /srv/gitosis目錄將保存Gitosis的數(shù)據(jù)和存儲(chǔ)庫(kù)

要配置Gitosis,您不要直接在服務(wù)器上編輯文件。相反,Gitosis提供了一個(gè)包含配置的Git存儲(chǔ)庫(kù)。要更新此配置,您gitosis-admin可以像任何其他存儲(chǔ)庫(kù)一樣克隆,提交和推送。

由于Gitosis使用SSH密鑰對(duì)用戶(hù)進(jìn)行身份驗(yàn)證,因此您將需要生成一個(gè)用于管理存儲(chǔ)庫(kù)的密鑰對(duì)。如果沒(méi)有,可以使用ssh-keygen例如:

$ ssh-keygen -t rsa

您現(xiàn)在可以初始化管理存儲(chǔ)庫(kù)。

$ sudo -H -u git gitosis-init </path/to/public_key.pub
初始化的空Git倉(cāng)庫(kù)在/srv/gitosis/repositories/gitosis-admin.git/
在/srv/gitosis/repositories/gitosis-admin.git/中重新初始化現(xiàn)有的Git倉(cāng)庫(kù)

注意:在某些情況下,這可能會(huì)導(dǎo)致此類(lèi)錯(cuò)誤:

OSError:[Errno 13] Permission denied:'// gitosis'

原因可能是git主目錄沒(méi)有正確設(shè)置。通過(guò)手動(dòng)設(shè)置來(lái)修復(fù)它:

#usermod -d / srv / gitosis git

此外,此命令創(chuàng)建/srv/gitosis/repositories將存儲(chǔ)實(shí)際托管存儲(chǔ)庫(kù)的目錄。

在管理存儲(chǔ)庫(kù)初始化完成后,禁用用戶(hù)git的基于密碼的ssh登錄可能是合理的。

要實(shí)現(xiàn)這一點(diǎn),添加

匹配用戶(hù)git
密碼驗(yàn)證號(hào)

在......的最后 /etc/ssh/sshd_config

組態(tài)

如上所述,通過(guò)將提交推送到gitosis-admin存儲(chǔ)庫(kù)來(lái)配置Gitosis 。要克隆此存儲(chǔ)庫(kù)(使用Gitosis?。?,請(qǐng)運(yùn)行:

$ git clone git@your.git.server:gitosis-admin.git

gitosis-admin存儲(chǔ)庫(kù)中,您將看到兩件事:

  • gitosis.conf - Gitosis和存儲(chǔ)庫(kù)權(quán)限的配置文件

  • keydir - 包含每個(gè)用戶(hù)公用密鑰的目錄

要修改存儲(chǔ)庫(kù)或用戶(hù),或配置Gitosis,只需提交克隆中的更改并將其推回到服務(wù)器。

存儲(chǔ)庫(kù)和權(quán)限

您可以在/ usr / share / doc / gitosis中找到一些示例配置文件。

[Gitosis的]
gitweb = yes

[repo foobar]
description = foobar的Git倉(cāng)庫(kù)
owner = user

[組開(kāi)發(fā)者]
members = user1 user2

[組管理員]
members = user1

[組gitosis-admin]
writable = gitosis-admin
members = @admins

[組foobar]
可寫(xiě)= foobar
members = @devs

[組myteam]
writable = free_monkey
會(huì)員= jdoe

[組部署者]
writable = free_monkey
readonly = monkey_deployer

這定義了一個(gè)名為“free_monkey”的新組,它是一個(gè)任意字符串?!癹doe”是myteam的成員,可以訪問(wèn)“gitosis”存儲(chǔ)庫(kù)?!癿onkey_deployer”鍵將只能訪問(wèn)“free_monkey”。

將此添加到gitosis.conf中,提交并推送它:

$ git commit -a -m“允許jdoe寫(xiě)入訪問(wèn)free_monkey”
$ git push

現(xiàn)在,用戶(hù)“jdoe”可以訪問(wèn)名為“free_monkey”的存儲(chǔ)庫(kù),但是我們還沒(méi)有創(chuàng)建一個(gè)存儲(chǔ)庫(kù)。我們將做的是在本地創(chuàng)建一個(gè)新的存儲(chǔ)庫(kù),在Git服務(wù)器上進(jìn)行初始化,然后推送它:

$ mkdir free_monkey
$ cd free_monkey
$ git init
$ git remote add origin git @ YOUR_SERVER_HOSTNAME:free_monkey.git

做一些工作,git添加和提交文件

$ git push origin master:refs / heads / master

當(dāng)使用SSH時(shí),最后一個(gè)命令將失敗,并顯示錯(cuò)誤消息“不顯示為Git存儲(chǔ)庫(kù)”這可以通過(guò)在服務(wù)器上手動(dòng)初始化存儲(chǔ)庫(kù)來(lái)修復(fù)

$ git init --bare /srv/gitosis/repositories/free_monkey.git

并重試最后一個(gè)命令

隨著最后的推動(dòng),你將會(huì)參加比賽。存儲(chǔ)庫(kù)“free_monkey”已在服務(wù)器上創(chuàng)建(在/ srv / gitosis / repositories中),您可以像任何ol'Git存儲(chǔ)庫(kù)一樣開(kāi)始使用它。

Git病毒庫(kù)也可以用于gitweb; 只需將gitweb配置中包含存儲(chǔ)庫(kù)的目錄指向。

添加用戶(hù)

下一個(gè)自然的事情是讓幸運(yùn)的幾個(gè)提交訪問(wèn)FreeMonkey項(xiàng)目。這是一個(gè)簡(jiǎn)單的兩步過(guò)程。

首先,收集他們的公共SSH密鑰,我將其稱(chēng)為“alice.pub”和“bob.pub”,并將其放入當(dāng)?shù)豨itosis-admin存儲(chǔ)庫(kù)的keydir /。其次,編輯gitosis.conf并將其添加到“成員”列表中。

$ cd gitosis-admin
$ cp/ alice.pub keydir /
$ cp/ bob.pub keydir /
$ git add keydir / alice.pub keydir / bob.pub

請(qǐng)注意,密鑰文件名必須有“.pub”擴(kuò)展名。

gitosis.conf更改:

[組myteam]
member = jdoe alice bob
writable = free_monkey

提交和推送:

$ git commit -a -m“授予Alice和Bob授予FreeMonkey的權(quán)限”
$ git push

而已。Alice和Bob現(xiàn)在可以像這樣克隆free_monkey存儲(chǔ)庫(kù):

$ git clone git @ YOUR_SERVER_HOSTNAME:free_monkey.git

愛(ài)麗絲和鮑勃也將有承諾的權(quán)利。

公共訪問(wèn)

如果您正在運(yùn)行一個(gè)公共項(xiàng)目,您的用戶(hù)將擁有提交權(quán)限,然后您將擁有其他所有人。我們?nèi)绾巫寗e人只讀訪問(wèn),而不用SSH密鑰?

我們只是使用git-daemon。這是獨(dú)立于Gitosis,它與Git本身一起。

$ sudo -u git git-daemon --base-path = / srv / gitosis / repositories / --export-all

這將使您使用Gitosis管理的所有存儲(chǔ)庫(kù)對(duì)于公眾來(lái)說(shuō)是只讀的。有人可以像這樣克隆FreeMonkey:

$ git clone git://YOUR_SERVER_HOSTNAME/free_monkey.git

要僅導(dǎo)出一些存儲(chǔ)庫(kù)而不是其他存儲(chǔ)庫(kù),您需要在要公開(kāi)的每個(gè)存儲(chǔ)庫(kù)的根目錄(例如/srv/gitosis/repositories/free_monkey.git)內(nèi)觸摸git-daemon-export-ok。然后從上面的git-daemon命令中刪除“--export-all”。

更多的技巧

gitosis.conf可以設(shè)置做一些其他的巧妙的技巧。在Gitosis源目錄中打開(kāi)example.conf(您最初在頂部克隆Gitosis方式),以查看所有選項(xiàng)的摘要。您可以將一些存儲(chǔ)庫(kù)指定為只讀(與可寫(xiě))相反,但尚未公開(kāi))。組成員列表可以包括另一個(gè)組。還有一些其他的技巧,我會(huì)留給讀者發(fā)現(xiàn)。

注意事項(xiàng)

如果您的服務(wù)器上的/srv/gitosis/.gitosis.conf似乎沒(méi)有更新,以匹配您的本地副本(他們應(yīng)該匹配),即使您正在進(jìn)行更改和推送,可能是您的更新后掛接不可執(zhí)行。較舊版本的setuptools可能導(dǎo)致這種情況。一定要解決這個(gè)問(wèn)題:

#chmod 755 /srv/gitosis/repositories/gitosis-admin.git/hooks/post-update

如果您的Python好東西處于非標(biāo)準(zhǔn)位置,則必須另外編輯更新后,并在頂部放置“export PYTHONPATH = ...”行。第一次嘗試在gitosis-admin中推送更改時(shí),不這樣做會(huì)給您一個(gè)Python堆棧跟蹤。

如果您想在非標(biāo)準(zhǔn)位置安裝Gitosis,我不推薦它。這是一個(gè)邊緣的情況,作者沒(méi)有反抗,直到我發(fā)現(xiàn)他幫助我讓它工作。

對(duì)于勇氣,您需要編輯系統(tǒng)上的任何文件來(lái)控制非登錄,非交互式shell的默認(rèn)PATH。在Ubuntu上,這是/ etc / environment。將Gitosis的路徑添加到PATH行。還為PYTHONPATH插入一行,并將其設(shè)置為非標(biāo)準(zhǔn)的Python site-packages目錄。例如,這是我的/ etc / environment:

$ PATH =“/ home / $(whoami)/ sys / bin:/ usr / local / sbin:/ usr / local / bin:/ usr / sbin:/ usr / bin:/ sbin:/ bin:/ usr / bin / X11:在/ usr /游戲”
$ PYTHONPATH = / home / $(whoami)/sys/lib/python2.4/site-packages

進(jìn)行這些更改后,請(qǐng)務(wù)必注銷(xiāo)并重新登錄。

不要使用我上面提到的gitosis-init行進(jìn)行標(biāo)準(zhǔn)安裝,而是使用這個(gè)略微修改的代碼:

$ sudo -H -u git env PATH = $ PATH gitosis-init </tmp/id_rsa.pub

確保在上述更新后的鉤子中設(shè)置PYTHONPATH。

那個(gè)*應(yīng)該這樣做 我有目的地簡(jiǎn)化了這個(gè)非標(biāo)準(zhǔn)的設(shè)置,因?yàn)槲艺J(rèn)為沒(méi)有很多人會(huì)使用它。如果您需要更多信息(我的nick是up_the_irons),請(qǐng)?jiān)贔reeNode上的#git中打開(kāi)我。

非標(biāo)準(zhǔn)SSH端口

如果您在服務(wù)器上的非標(biāo)準(zhǔn)端口上運(yùn)行SSH,則有兩種方法可以指定Git將嘗試連接哪個(gè)端口。一個(gè)是明確聲明您正在使用SSH協(xié)議,因?yàn)檫@可以讓您在該URL中輸入端口號(hào):

git clone ssh://git@myserver.com:1234 / repo.git

或者你可以把它放在你的/ .ssh / config文件中:

$ Host myserver.com
$ Port 1234
  • [repo]塊用于定義與gitweb一起使用的一些必要區(qū)域。

  • [組]塊用于兩者:

    • 定義用戶(hù)組

    • 定義存儲(chǔ)庫(kù)權(quán)限

  • @用于定義用戶(hù)組。

您應(yīng)該提交并推送您在此文件中所做的任何更改。

keydir

keydir只是一個(gè)包含用戶(hù)公鑰的目錄。一些鍵可以是user @ machine的形式,這些鍵必須用gitosis.conf中的那個(gè)格式定義。最好創(chuàng)建用戶(hù)組并將其用作存儲(chǔ)庫(kù)的成員。一旦添加新的密鑰來(lái)啟用一些新用戶(hù),您應(yīng)該將文件添加到Git存儲(chǔ)庫(kù)并提交并推送它們。新用戶(hù)將使用上述格式的Git命令,就像您用來(lái)克隆gitosis-admin存儲(chǔ)庫(kù)一樣。

gitweb

開(kāi)啟gitweb支持

gitweb是一個(gè)簡(jiǎn)單的可視化網(wǎng)頁(yè)界面,可以使用任何兼容CGI的網(wǎng)頁(yè)服務(wù)來(lái)運(yùn)行,這里選用的Apache

  1. git clone git://git.kernel.org/pub/scm/git/git.git

  2. cd git/

  3. make GITWEB_PROJECTROOT="/home/git/repositories"\

  4.     GITWEB_JS="gitweb/static/gitweb.js" \

  5.     GITWEB_CSS="gitweb/static/gitweb.css" \

  6.     GITWEB_LOGO="gitweb/static/git-logo.png" \

  7.     GITWEB_FAVICON="gitweb/static/git-favicon.png" \

  8.     bindir=/usr/local/bin \

  9.     gitweb

  10. make gitwebdir=/var/www/cgi-bin/gitweb install-gitweb

需要注意的是GITWEB_PROJECTROOT應(yīng)該修改成你的倉(cāng)庫(kù)的路徑,并且其權(quán)限(包括子目錄)應(yīng)是705。

然后修改/etc/gitweb.conf,改成下面的樣子

[plain] view plain copy

  1. $projectroot = "/home/git/repositories"; #倉(cāng)庫(kù)路徑

  2. $GIT = "/usr/local/bin/git"; #git可執(zhí)行文件路徑

修改apache配置文件

在/etc/httpd/conf/httpd.conf中加入以下內(nèi)容:

  1. <VirtualHost *:80>

  2.     ServerName gitserver

  3.     DocumentRoot /var/www/cgi-bin/gitweb

  4.     <Directory /var/www/cgi-bin/gitweb>

  5.         Options ExecCGI +FollowSymLinks +SymLinksIfOwnerMatch

  6.         AllowOverride All

  7.         order allow,deny

  8.         Allow from all

  9.         AddHandler cgi-script cgi

  10.         DirectoryIndex gitweb.cgi

  11.     </Directory>

  12. </VirtualHost>

這就弄好了!

可能遇到的問(wèn)題

用戶(hù)認(rèn)證不通過(guò)的問(wèn)題:

git clone git@IP:gitosis-admin.git
Initialized empty Git repository in /home/yang/gitosis-admin/.git/
Agent admitted failure to sign using the key.
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

// 解決方法,在管理員PC上
# ssh-add  ~/.ssh/id_rsa 

gitweb找不到工程的問(wèn)題

如果遇到gieweb的頁(yè)面顯示找不到工程,多半是權(quán)限設(shè)置錯(cuò)誤。

簡(jiǎn)單的說(shuō)就是Apache用戶(hù)組不具備訪問(wèn)你倉(cāng)庫(kù)目錄的權(quán)限,例如我的倉(cāng)庫(kù)是放在/home/git/repositories下的,所以應(yīng)將/home/git和/home/git/repositories以及你倉(cāng)庫(kù)中的所有項(xiàng)目的權(quán)限都設(shè)置成705,之前在網(wǎng)上發(fā)現(xiàn)有人說(shuō)設(shè)置成775的,如果你設(shè)置成775的話雖然也能用,但會(huì)導(dǎo)致無(wú)法使用命令訪問(wèn)代碼倉(cāng)庫(kù),原因我還不清楚。

svn 遷移到git

http://blog.csdn.net/huaishu/article/details/41083951

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿(mǎn)足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。

網(wǎng)站標(biāo)題:私有g(shù)it搭建-創(chuàng)新互聯(lián)
地址分享:http://bm7419.com/article14/ijide.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、網(wǎng)站導(dǎo)航響應(yīng)式網(wǎng)站、網(wǎng)站制作、面包屑導(dǎo)航、網(wǎng)站改版

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司