ネット上でも情報が錯綜してわけわかめな状態になっているのでCentOS 6でHTTPなGitサーバーを自前で立てるための情報をここにまとめるものである。

とりあえずBASIC認証なユーザーがベアリポジトリを読み書きできるようになるまで。
まず、CentOS 6を入れる。まぁタイトル通りですわ。で、最新の6.5まで上げたらhttpdとmod_ssl(HTTPSを使う場合)とgitをyumで標準リポジトリから取ってくる。

# yum install httpd mod_ssl git

次にリポジトリ用の場所を作る。/var/gitとする。ついでに一つサンプルのベアリポジトリsample.gitを作る。

# cd /var
# mkdir git
# chown apache.apache git
# sudo -u apache git init --bare sample.git

ちなみにgit initで–sharedをつけていないが、これはsample.git内の各ファイルのアクセス権をグループに対してもつけるものなので、CentOS6のhttpdを実行しているユーザapacheだけ読み書きできればいいのでこの場合はつけなくていい。
ssl.confに以下のような内容を追加。
BASIC認証用のパスワードファイルは各人好みの場所に作成されたい。

SetEnv GIT_PROJECT_ROOT /var/git
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias /git /usr/libexec/git-core/git-http-backend
<Directory /var/git>
    Order deny,allow
    Allow from All
</Directory>
<Location /git>
    AuthType Basic
    AuthName "Basic Auth for Git Service"
    AuthUserFile /path/to/.htpasswd
    Require valid-user
</Location>

なぜDirectoryディレクティブとLocationディレクティブを分けているかというと、特に意味は無い。わしの好み。一応ディレクトリそのもののアクセス権とBASIC認証を分ける事ができるというメリットはある。
ポイントはSetEnv GIT_PROJECT_ROOT /var/gitしてScriptAliasを/usr/libexec/git-core/git-http-backendに対してかけてやることだ。これでSubversionにおけるDAV svnとSVNParentPath /var/svnのような振る舞いをしてくれる。
これでBASIC認証でvalidなuserはとりあえずサーバーからsample.gitをローカルにクローンしてコミットしてプッシュできるようになる。