Apache 2.2 (x64) on WindowsにSubversionを導入した

この記事を書いた日は 2014/05/19 です

自宅のサーバに個人プログラムで使う用のSubversionを導入したときのメモ。

物資調達

Apache 2.2 x64
Anindya's Blog*1 から「apache_2.2.24-x64-no-ssl.msi」をダウンロード。
ウィザードに従ってインストールします。
インストール先は `C:\usr\apache` とします。
SVN 1.8.8 x64
サーバが64bitなのでModulesも64bitのブツが必要です。
Apache Haus から「Mod Subversion 1.8.8 for Apache 2.2.x x64」をダウンロード。

Subversionのインストール

適当なディレクトリ (ここでは `C:\usr\svn` とします) に先程ダウンロードしたSubversionのzipを解凍。

次に、ApacheとSubversionそれぞれのbinディレクトリにPATHを通します。環境変数のPATHに `C:\usr\apache\bin;C:\usr\svn\bin;` を追加。*2

httpd.confの編集

モジュールを読み込ませます。mod_davとmod_dav_fsが必要なのでコメントアウトを解除。

LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so

mod_dav_svnとmod_authz_svnを追加。

LoadModule dav_svn_module /usr/svn/modules/mod_dav_svn.so
LoadModule authz_svn_module /usr/svn/modules/mod_authz_svn.so

今回はサブドメインで運用するので SUSH-i LOGさんの記事 を参考にVirtualHostディレクティブ内に設定を記述しました。各リポジトリは `[DocumentRoot]/repos/` 配下に置くことにします。

<VirtualHost *:80>
    ServerName svn.example.com
    DocumentRoot "D:/www/svn"
    ErrorLog "logs/error_dav_svn.log"
    CustomLog "logs/access_dav_svn.log" combined

    <Location /repos>
        DAV svn

        SVNListParentPath on
        SVNParentPath "D:/www/svn/repos"

        <LimitExcept GET PROPFIND OPTIONS REPORT>
            AuthType Digest
            AuthName "svn"
            AuthUserFile "D:/www/svn/.htdigest"
            Require valid-user
        </LimitExcept>
    </Location>
</VirtualHost>

`DocumentRoot` と `DAV svn`が入っている `Location` のパスを同じにすると、CommitやCheckout時に500エラーが出てしまうようです。

Test Configurationして問題なければApacheを再起動。

動作確認

テスト用リポジトリを作ります。コマンドラインから以下を実行。

svnadmin create D:/www/svn/repos/test

適当なSVNクライアントで `http://svn.example.com/repos/test` をチェックアウトできればOK。


*1 記事移植時点でリンク切れ。とっくに EOL すぎたバージョンだから、どこかで最新のバイナリとそれに合う Subversion 探したほうがいいよ。
*2 ApacheのbinにPATHが通っていないと、svnやsvnadminが起動できません。また、SVNのbinにPATHが通っていないと、mod_dav_svn.soの読み込みに失敗します。

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-05-30 (火) 20:50:18