4.5 Git 守護(hù)進(jìn)程

2018-02-24 15:22 更新

Git 守護(hù)進(jìn)程

接下來我們將通過 “Git” 協(xié)議建立一個基于守護(hù)進(jìn)程的倉庫。對于快速且無需授權(quán)的 Git 數(shù)據(jù)訪問,這是一個理想之選。請注意,因為其不包含授權(quán)服務(wù),任何通過該協(xié)議管理的內(nèi)容將在其網(wǎng)絡(luò)上公開。

如果運行在防火墻之外的服務(wù)器上,它應(yīng)該只對那些公開的只讀項目服務(wù)。如果運行在防火墻之內(nèi)的服務(wù)器上,它可用于支撐大量參與人員或自動系統(tǒng)(用于持續(xù)集成或編譯的主機(jī))只讀訪問的項目,這樣可以省去逐一配置 SSH 公鑰的麻煩。

無論何時,該 Git 協(xié)議都是相對容易設(shè)定的。通常,你只需要以守護(hù)進(jìn)程的形式運行該命令:

git daemon --reuseaddr --base-path=/opt/git/ /opt/git/

--reuseaddr 允許服務(wù)器在無需等待舊連接超時的情況下重啟,--base-path 選項允許用戶在未完全指定路徑的條件下克隆項目,結(jié)尾的路徑將告訴 Git 守護(hù)進(jìn)程從何處尋找倉庫來導(dǎo)出。如果有防火墻正在運行,你需要開放端口 9418 的通信權(quán)限。

你可以通過許多方式將該進(jìn)程以守護(hù)進(jìn)程的方式運行,這主要取決于你所使用的操作系統(tǒng)。在一臺 Ubuntu 機(jī)器上,你可以使用一份 Upstart 腳本。因此,找到如下文件:

/etc/event.d/local-git-daemon

并添加下列腳本內(nèi)容:

start on startup
stop on shutdown
exec /usr/bin/git daemon \
    --user=git --group=git \
    --reuseaddr \
    --base-path=/opt/git/ \
    /opt/git/
respawn

出于安全考慮,強(qiáng)烈建議使用一個對倉庫擁有只讀權(quán)限的用戶身份來運行該守護(hù)進(jìn)程 - 你可以創(chuàng)建一個新用戶 git-ro 并且以該用戶身份來運行守護(hù)進(jìn)程。為簡便起見,我們將像 git-shell 一樣,同樣使用 git 用戶來運行它。

當(dāng)你重啟機(jī)器時,你的 Git 守護(hù)進(jìn)程將會自動啟動,并且如果進(jìn)程被意外結(jié)束它會自動重新運行。為了在不重啟的情況下直接運行,你可以運行以下命令:

initctl start local-git-daemon

在其他系統(tǒng)中,你可以使用 sysvinit 系統(tǒng)中的 xinetd 腳本,或者另外的方式來實現(xiàn) - 只要你能夠?qū)⑵涿钍刈o(hù)進(jìn)程化并實現(xiàn)監(jiān)控。

接下來,你需要告訴 Git 哪些倉庫允許基于服務(wù)器的無授權(quán)訪問。你可以在每個倉庫下創(chuàng)建一個名為 git-daemon-export-ok 的文件來實現(xiàn)。

$ cd /path/to/project.git
$ touch git-daemon-export-ok

該文件將允許 Git 提供無需授權(quán)的項目訪問服務(wù)。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號