gitを使うならssh経由のほうが速いし、設定も簡単ですが、例えば22番ポートが使えないとか、色々な理由でhttp経由で使用したい時もあります。そんな時に以下のような感じでgit-http-backendを使用してちょいちょいっと設定すれば使えるようになります。ちなみにこれ以下のapacheの設定は全ての環境で同じなわけではないのと、セキュリティについては考慮していません。実際はBasic認証をかけるなりしてください。また、Gitoliteは使わない設定です。

 

<VirtualHost xxx.xxx.xxx.xxx:443>
DocumentRoot “/var/www/git”
ServerName git.xxx.jp
SetEnv GIT_PROJECT_ROOT /var/www/git
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias /git/ /usr/libexec/git-core/git-http-backend/
<VirtualHost>

ただ、これだとapacheユーザーで動いてしまいます。http経由のみで使うならいいのですが、sshでも使用していたりすると違うユーザーで同じリポジトリを扱うことになってしまったりしてどうも具合がよくありません。
そこで、suexecを使用してgitユーザーとして動かせば色々と都合がいいのですが、少しだけやらないといけないことがあります。

<VirtualHost xxx.xxx.xxx.xxx:443>
DocumentRoot “/var/www/git”
ServerName git.xxx.jp
SuexecUserGroup git git
ScriptAlias /git/ /var/www/git/git-http-backend/
<VirtualHost>

として、/var/www/git/git-httpd-backendを以下のように作成して、所有者をgit、実行権限をつけてください。

#!/bin/bash
export GIT_PROJECT_ROOT=/var/www/git
export GIT_HTTP_EXPORT_ALL=true
/usr/libexec/git-core/git-http-backend

当然、リポジトリの所有者はgitユーザーにしてください。以上で設定終了です。
あと、TortoiseGitは便利だけど遅いですね・・・・。

※作成から4年前(1676日経過)の記事です。内容が古い可能性があります。
東京都東日本橋の株式会社プレスマンPRESSMAN*Tech