W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
匿名的讀取權(quán)限該怎么實現(xiàn)呢?也許除了內(nèi)部私有的項目之外,你還需要托管一些開源項目?;蛘咭驗橐靡恍┳詣踊姆?wù)器來進(jìn)行編譯,或者有一些經(jīng)常變化的服務(wù)器群組,而又不想整天生成新的 SSH 密鑰 — 總之,你需要簡單的匿名讀取權(quán)限。
或許對小型的配置來說最簡單的辦法就是運(yùn)行一個靜態(tài) web 服務(wù),把它的根目錄設(shè)定為 Git 倉庫所在的位置,然后開啟本章第一節(jié)提到的 post-update 掛鉤。這里繼續(xù)使用之前的例子。假設(shè)倉庫處于 /opt/git
目錄,主機(jī)上運(yùn)行著 Apache 服務(wù)。重申一下,任何 web 服務(wù)程序都可以達(dá)到相同效果;作為范例,我們將用一些基本的 Apache 設(shè)定來展示大體需要的步驟。
首先,開啟掛鉤:
$ cd project.git
$ mv hooks/post-update.sample hooks/post-update
$ chmod a+x hooks/post-update
post-update 掛鉤是做什么的呢?其內(nèi)容大致如下:
$ cat .git/hooks/post-update
#!/bin/sh
#
# An example hook script to prepare a packed repository for use over
# dumb transports.
#
# To enable this hook, rename this file to "post-update".
#
exec git-update-server-info
意思是當(dāng)通過 SSH 向服務(wù)器推送時,Git 將運(yùn)行這個 git-update-server-info
命令來更新匿名 HTTP 訪問獲取數(shù)據(jù)時所需要的文件。
接下來,在 Apache 配置文件中添加一個 VirtualHost 條目,把文檔根目錄設(shè)為 Git 項目所在的根目錄。這里我們假定 DNS 服務(wù)已經(jīng)配置好,會把對 .gitserver
的請求發(fā)送到這臺主機(jī):
VirtualHost *:80>
ServerName git.gitserver
DocumentRoot /opt/git
<Directory /opt/git/>
Order allow, deny
allow from all
</Directory>
</VirtualHost>
另外,需要把 /opt/git
目錄的 Unix 用戶組設(shè)定為 www-data ,這樣 web 服務(wù)才可以讀取倉庫內(nèi)容,因為運(yùn)行 CGI 腳本的 Apache 實例進(jìn)程默認(rèn)就是以該用戶的身份起來的:
$ chgrp -R www-data /opt/git
重啟 Apache 之后,就可以通過項目的 URL 來克隆該目錄下的倉庫了。
$ git clone http://git.gitserver/project.git
這一招可以讓你在幾分鐘內(nèi)為相當(dāng)數(shù)量的用戶架設(shè)好基于 HTTP 的讀取權(quán)限。另一個提供非授權(quán)訪問的簡單方法是開啟一個 Git 守護(hù)進(jìn)程,不過這將要求該進(jìn)程作為后臺進(jìn)程常駐 — 接下來的這一節(jié)就要討論這方面的細(xì)節(jié)。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: