Windows上にApache+Subversion+TortoiseSVN環境を構築するという,どう考えても簡単なはずのタスクにはまって抜け出せなくなったっていう話.
構築手順はおそらく以下の通りでシンプルそのものなのだが,各ソフトウェアのバージョンをちゃんと横並びにしてあげないといけないところがポイントで,プロジェクトのファイルサーバに転がってる適当なバージョンを使ったり,とにかく全てのソフトウェアの最新版を掻き集めてみたりして,ことごとく失敗した.
Windows で Apache + Subversion を連携させる - 腹八分目。
ちなみにbinフォルダに上書きするdllは以下の7種類で良さそう.
- libapr-1.dll
- libapriconv-1.dll
- libaprutil-1.dll
- libdb44.dll
- ssleay32.dll
- intl3_svn.dll
- libeay32.dll
最終的に落ち着いた環境
最終的にこんなバージョンの環境で落ち着いた.別にこれが現時点でのベストの環境ではないし,他のバージョンの環境も全然あり得るので構築例の1つとして見てもらえれば十分.Apache+Subversionの組み合わせはAlagazam.net: Subversion Windows Installerに載ってる"Subversion X.X.X for Apache httpd X.X.X"を参考にすれば問題なさそう.ちなみにApacheをダウンロードする際にApache本家だとApache 2.2 以上のWin32バイナリモジュールが公開されてなかったのでApacheLoungeから取得することにした.
追記:
Apache 2.2.23でロックが取得できない事象が発覚して,Apache 2.2.22で解決.
詳細は以下のエントリー参照.
"svn lock"で"400 Bad Request"が返ってくる - kakku blog
Apache 2.2.23httpd-2.2.23-win32.zip
- Apache 2.2.22
- Subversion 1.7.8
- Setup-Subversion-1.7.8.msi (Subversion 1.7.8 for Apache httpd 2.2.x)
- TortoiseSVN 1.7.11
- TortoiseSVN-1.7.11.23600-win32-svn-1.7.8.msi
- TortoiseSVN-1.7.11.23600-x64-svn-1.7.8.msi
その他に起きた問題
MSVCR100.DLL
Windows Server上に構築する前の検証としてWindows XP上に構築した際に、Apacheを起動すると「MSVCR100.DLL が見つからなかったため」とか言われたので,Microsoft Visual C++ 2010 再頒布可能パッケージ (x86)を追加で導入して解決.
「Apache」でWebサーバを構築 2「起動編」 | でじまみ - 楽天ブログ
『MSVCR100.DLL が見つからなかったため、アプリケーションを開始できませんでした。』解決メモ - やすはるラボ+嫁(*・ω・)
Port:80でApache起動せず
Apacheを起動しようとすると以下のエラーが出て,問題判別のためPort:8080で起動したら正常に起動したので,何やらPort:80が既に使われてるようだった.
(OS 10048)通常、各ソケット アドレスに対してプロトコル、ネットワーク アドレス、またはポートのどれか 1 つのみを使用できます。 : make_sock: could not bind to address 0.0.0.0:80
"netstat -ano"でPID:1360がPort:80を使ってることがわかって,"tasklist /svc /fi "PID eq 1360""でinetinfo.exeが原因だとわかったので,「IIS Admin」サービスを停止したところ,正常にPort:80でも起動するようになった.
Windows XP で、どのプログラムがポートを占有しているか調べる方法 :: 42.Windows :: Pocketstudio'z log
他のプログラムに80番ポートが専有されてApacheが起動できない場合の対処方法 - 昼メシ物語
Windows XP SP2
TortoiseSVN 1.7以上をインストールする場合は,Windows XP SP3以上が前提になるらしい.プロジェクトルームにはまだWindows XP SP2の端末も少なからず転がってるわけで,TortoiseSVNをインストールできない端末もあった.
さてと!とりあえずこの環境で検証を進めてみよう:-D