W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
我們一般通過(guò) SSH 進(jìn)行授權(quán)訪問(wèn),通過(guò) git:// 進(jìn)行無(wú)授權(quán)訪問(wèn),但是還有一種協(xié)議可以同時(shí)實(shí)現(xiàn)以上兩種方式的訪問(wèn)。設(shè)置 Smart HTTP 一般只需要在服務(wù)器上啟用一個(gè) Git 自帶的名為 git-http-backend
的 CGI 腳本。該 CGI 腳本將會(huì)讀取由 git fetch
或 git push
命令向 HTTP URL 發(fā)送的請(qǐng)求路徑和頭部信息,來(lái)判斷該客戶端是否支持 HTTP 通信(不低于 1.6.6 版本的客戶端支持此特性)。如果 CGI 發(fā)現(xiàn)該客戶端支持智能(Smart)模式,它將會(huì)以智能模式與它進(jìn)行通信,否則它將會(huì)回落到?。―umb)模式下(因此它可以對(duì)某些老的客戶端實(shí)現(xiàn)向下兼容)。
在完成以上簡(jiǎn)單的安裝步驟后,我們將用 Apache 來(lái)作為 CGI 服務(wù)器。如果你沒(méi)有安裝 Apache,你可以在 Linux 環(huán)境下執(zhí)行如下或類似的命令來(lái)安裝:
$ sudo apt-get install apache2 apache2-utils
$ a2enmod cgi alias env
該操作將會(huì)啟用 mod_cgi
, mod_alias
, 和 mod_env
等 Apache 模塊, 這些模塊都是使該功能正常工作所必須的。
接下來(lái)我們要向 Apache 配置文件添加一些內(nèi)容,來(lái)讓 git-http-backend
作為 Web 服務(wù)器對(duì) /git
路徑請(qǐng)求的處理器。
SetEnv GIT_PROJECT_ROOT /opt/git
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias /git/ /usr/lib/git-core/git-http-backend/
如果留空 GIT_HTTP_EXPORT_ALL
這個(gè)環(huán)境變量,Git 將只對(duì)無(wú)授權(quán)客戶端提供帶 git-daemon-export-ok
文件的版本庫(kù),就像 Git 守護(hù)進(jìn)程一樣。
接著你需要讓 Apache 接受通過(guò)該路徑的請(qǐng)求,添加如下的內(nèi)容至 Apache 配置文件:
<Directory "/usr/lib/git-core*">
Options ExecCGI Indexes
Order allow,deny
Allow from all
Require all granted
</Directory>
最后,如果想實(shí)現(xiàn)寫(xiě)操作授權(quán)驗(yàn)證,使用如下的未授權(quán)屏蔽配置即可:
<LocationMatch "^/git/.*/git-receive-pack$">
AuthType Basic
AuthName "Git Access"
AuthUserFile /opt/git/.htpasswd
Require valid-user
</LocationMatch>
這需要你創(chuàng)建一個(gè)包含所有合法用戶密碼的 .htaccess
文件。以下是一個(gè)添加 “schacon” 用戶到此文件的例子:
$ htdigest -c /opt/git/.htpasswd "Git Access" schacon
你可以通過(guò)許多方式添加 Apache 授權(quán)用戶,選擇使用其中一種方式即可。以上僅僅只是我們可以找到的最簡(jiǎn)單的一個(gè)例子。如果愿意的話,你也可以通過(guò) SSL 運(yùn)行它,以保證所有數(shù)據(jù)是在加密狀態(tài)下進(jìn)行傳輸?shù)摹?/p>
我們不想深入去講解 Apache 配置文件,因?yàn)槟憧赡軙?huì)使用不同的 Web 服務(wù)器,或者可能有不同的授權(quán)需求。它的主要原理是使用一個(gè) Git 附帶的,名為 git-http-backend
的 CGI。它被引用來(lái)處理協(xié)商通過(guò) HTTP 發(fā)送和接收的數(shù)據(jù)。它本身并不包含任何授權(quán)功能,但是授權(quán)功能可以在 Web 服務(wù)器層引用它時(shí)被輕松實(shí)現(xiàn)。你可以在任何所有可以處理 CGI 的 Web 服務(wù)器上辦到這點(diǎn),所以隨便挑一個(gè)你最熟悉的 Web 服務(wù)器試手吧。
欲了解更多的有關(guān)配置 Apache 授權(quán)訪問(wèn)的信息,請(qǐng)通過(guò)以下鏈接瀏覽 Apache 文檔:
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: