チャプター ▾ 第2版

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 でサービスを開始および停止できます。

他のシステムでは、xinetdsysvinit システムのスクリプト、またはその他の何かを使用したいと思うかもしれません。 — とにかく、そのコマンドをデーモン化して監視できる限り。

次に、どのリポジトリに認証不要の Git サーバーベースのアクセスを許可するかを Git に伝える必要があります。これは、git-daemon-export-ok という名前のファイルを作成することで、各リポジトリで実行できます。

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

そのファイルの存在は、認証なしでこのプロジェクトを提供しても問題ないことを Git に伝えます。

scroll-to-top