-
A1. 附錄 A: Git 在其他環境
- A1.1 圖形介面
- A1.2 Visual Studio 中的 Git
- A1.3 Visual Studio Code 中的 Git
- A1.4 IntelliJ / PyCharm / WebStorm / PhpStorm / RubyMine 中的 Git
- A1.5 Sublime Text 中的 Git
- A1.6 Bash 中的 Git
- A1.7 Zsh 中的 Git
- A1.8 PowerShell 中的 Git
- A1.9 小結
-
A2. 附錄 B: 在應用程式中嵌入 Git
-
A3. 附錄 C: Git 命令
4.5 伺服器上的 Git - Git 守護程序
Git 守護程序
接下來,我們將設定一個使用“Git”協議提供倉庫的守護程序。這是對 Git 資料進行快速、未經身份驗證訪問的常見選擇。請記住,由於這不是一個經過身份驗證的服務,因此透過此協議提供的任何內容在網路內都是公開的。
如果您在防火牆外的伺服器上執行此程式,它應該僅用於對全世界公開可見的專案。如果執行它的伺服器在您的防火牆內部,您可以將其用於大量人員或計算機(持續整合或構建伺服器)需要只讀訪問的專案,而無需為每個專案新增 SSH 金鑰。
無論如何,Git 協議都相對容易設定。基本上,您需要以守護程序的方式執行此命令。
$ git daemon --reuseaddr --base-path=/srv/git/ /srv/git/
--reuseaddr 選項允許伺服器在舊連線超時之前重新啟動,而 --base-path 選項允許使用者在不指定完整路徑的情況下克隆專案,末尾的路徑告訴 Git 守護程序在哪裡查詢要匯出的倉庫。如果您執行的是防火牆,您還需要在該設定的機器上開啟 9418 埠。
根據您執行的作業系統,您可以透過多種方式將此程序守護化。
由於 systemd 是現代 Linux 發行版中最常見的 init 系統,您可以為此目的使用它。只需將一個檔案放在 /etc/systemd/system/git-daemon.service 中,內容如下:
[Unit]
Description=Start Git Daemon
[Service]
ExecStart=/usr/bin/git daemon --reuseaddr --base-path=/srv/git/ /srv/git/
Restart=always
RestartSec=500ms
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=git-daemon
User=git
Group=git
[Install]
WantedBy=multi-user.target
您可能已經注意到,Git 守護程序在這裡以 git 作為組和使用者啟動。根據您的需求修改它,並確保提供的使用者在系統中存在。另外,請檢查 Git 二進位制檔案是否確實位於 /usr/bin/git,如果需要,請更改路徑。
最後,您將執行 systemctl enable git-daemon 以在啟動時自動啟動服務,並分別使用 systemctl start git-daemon 和 systemctl stop git-daemon 來啟動和停止服務。
在其他系統上,您可能需要使用 xinetd、sysvinit 系統中的指令碼,或其他方法 — 只要您能以某種方式守護化並監控該命令即可。
接下來,您需要告訴 Git 允許哪些倉庫透過未經身份驗證的伺服器進行 Git 訪問。您可以透過在每個倉庫中建立一個名為 git-daemon-export-ok 的檔案來實現此目的。
$ cd /path/to/project.git
$ touch git-daemon-export-ok
該檔案的存在告訴 Git 可以無需身份驗證地提供此專案。