#author("2023-05-30T11:50:18+00:00","default:mogamin","mogamin")
* Apache 2.2 (x64) on WindowsにSubversionを導入した [#red1c268]
|この記事を書いた日は 2014/05/19 です|

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

- サーバ: Apache 2.2 (x64) on Windows Home Server 2011
- Subversion: SVN 1.8.8 + mod_dav_svn

** 物資調達 [#pb4ae21f]
:Apache 2.2 x64 | [[Anindya's Blog:http://www.anindya.com/]]((記事移植時点でリンク切れ。とっくに EOL すぎたバージョンだから、どこかで最新のバイナリとそれに合う Subversion 探したほうがいいよ。)) から「apache_2.2.24-x64-no-ssl.msi」をダウンロード。
ウィザードに従ってインストールします。
インストール先は `C:\usr\apache` とします。
:SVN 1.8.8 x64 | サーバが64bitなのでModulesも64bitのブツが必要です。
[[Apache Haus:http://www.apachehaus.com/cgi-bin/download.plx#MODULES22VC09]] から「Mod Subversion 1.8.8 for Apache 2.2.x x64」をダウンロード。

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

次に、ApacheとSubversionそれぞれのbinディレクトリにPATHを通します。環境変数のPATHに `C:\usr\apache\bin;C:\usr\svn\bin;` を追加。((ApacheのbinにPATHが通っていないと、svnやsvnadminが起動できません。また、SVNのbinにPATHが通っていないと、mod_dav_svn.soの読み込みに失敗します。))

** httpd.confの編集 [#x736ccbb]
モジュールを読み込ませます。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さんの記事:http://blog.sus-happy.net/201102/apache-2-mod_dav_svn/]] を参考に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を再起動。

** 動作確認 [#fda6f483]
テスト用リポジトリを作ります。コマンドラインから以下を実行。

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

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

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS