windows+Apacheで認証付きgitサーバを立てるときのhttpd.confの内容





Gitでプログラムを管理したいときには、GitHubとかを使う方法やさくらインターネットのレンタルサーバやVPSを使う方法もあるんですが、色々デメリットもあるので自宅のサーバに立てることにしました。

Apacheをインストール

apachelounge

ApacheLoungeからダウンロードします。

インストール先は「C:\Apache24」にしました。インストール・設定の方法は色々他のサイトがあるので参考になると思います。

Git for Windowsをインストール

gitforwindows

Git for Windows からダウンロードします。

インストール方法は色々なサイトに情報があるから参考に。気を付けるべきポイントは改行周りの設定かなあ…

ベーシック認証のためにユーザー名とパスワードを作成

コマンドプロンプトでパスワードファイルを作ります。コマンド的にはインストール先が「C:\Apache24」の場合以下のような感じ。

C:\Apache24\bin\htpasswd.exe -cbB D:\gitrepo\.htpasswd username password

書式は、新規作成する場合「[パス+htpasswd.exe] -cbB [パスワードファイル名] [ユーザー名] [パスワード]」です。

ユーザーを追加するときには、スイッチ「-cbB」を「-bB」にします。

httpd.confに設定追加

「C:\Apache24\conf\httpd.conf」に次の行を追加します。

何をしているかというと、環境変数を指定して、「git-http-backend.exe」を「/git/」でCGIとして動作するようにしているのと、あと「/git」にベーシック認証をかけてます。

# ---------------------------------------------------------- #
# Gitの設定

SetEnv GIT_PROJECT_ROOT "D:/gitrepo"
SetEnv GIT_HTTP_EXPORT_ALL 1
ScriptAlias /git/ "C:/Program Files/Git/mingw64/libexec/git-core/git-http-backend.exe/"
<Directory "C:/Program Files/Git/mingw64/libexec/git-core/">
    Options +ExecCGI
    Allow From All
    Require all granted
</Directory>

<locationMatch "/git">
   AuthType Basic
   AuthName "Git"
   AuthUserFile D:/gitrepo/.htpasswd
   require valid-user
   Order allow,deny
   Allow from all
</locationMatch>

リポジトリを置くフォルダは「D:\gitrepo」で、先ほど作ったフパスワードファイルは「D:/gitrepo/.htpasswd」においてあります。

一部サイトでは情報が古いので、ファイル「git-http-backend.exe」へのパスが間違っているので注意。

テストリポジトリ作成

リポジトリを置くフォルダ(D:\gitrepo)に移動して右クリック→「Git GUI Here」でGitGUIを起動し、「test」というテストリポジトリを作ります。

動作確認

まず、ブラウザでhttp://127.0.0.1/git/」とかにアクセスして、ベーシック認証が動作するか確認します。

authBasic

認証が通れば「Not Found」と表示されるはずです。

次に、先ほど作った/test/フォルダにアクセスします。

invaridResponce

「http://127.0.0.1/git/test/」ですね。Chromeで見た時に「ERR_INVALID_RESPONSE」が帰ってきてれば成功です。

クライアント側をセットアップ

クライアント側には、windowsの場合、「Git for Windows」と「TortoiseGit」をインストールすると使いやすいと思います。

それ以外にも、Gitビュアーがたくさんあるので、こっちのページ(Git GUI Clients)で探すと作業が捗ると思います。


質問・コメントなどあると嬉しいです