Windows に Subversion 1.9 サーバーを構築する

今日は Windows に Subversion 1.9 サーバー環境を構築していきます。

必要なものをダウンロードする

必要になるのは、Apache 2.4、Subversion 1.9、VCランタイムです。 Apache 2.4、Subversion 1.9、VCランタイムいずれも Apache Haus Downloads からダウンロードすることができます。

Apache Haus Downloads では様々なバージョンのバイナリーが配布されています。

  • Apache 2.2 と Apache 2.4
  • VCランタイムバージョン VC9、VC11、VC14
  • 32ビット版(x86) と 64ビット版(x64)

これらの構成を組み合わせたものがあります。今回は、Apache 2.4VC11x64 という構成でセットアップしていきます。

Apache 2.4 をダウンロードする

Apache Haus Downloads を開いて、Apache 2.4VC11x64 に該当するダウンロードリンクを探してダウンロードします。 Apache のマイナーバージョンはそんなに気にする必要はありません。下記の画面キャプチャでは 2.4.25 となっていますが、その時点での最新版をダウンロードすれば大丈夫です。

Subversion 1.9 をダウンロードする

Subversion は Apache のモジュールとして配布されています。

Apache Haus Downloads の同じページを下へスクロールしていくと、 Modules for Apache 2.4.x VC11 と見出しの付いたところが出てきます。

似たようなファイルがたくさんありますが、ap24x64 と書かれているものを探してください。ファイル名には VC11 と書いていないので Modules for Apache 2.4.x VC11 と見出しの付いている段落かどうか十分に確認しましょう。

VCランタイム (Visual C++ 再頒布可能パッケージ) をダウンロードする

Apache Haus Downloads の同じページを一番下までスクロールさせると、 Visual Studio Redistributable Packages という見出しが出てきます。

Microsoft Visual C++ 2012 と書かれているところを探して、 Direct Download Link をクリックします。

リンクをクリックするとマイクロソフトのサイトが開きます。はじめは英語のページが開くので、Select Language: というところで Japanese を選択しましょう。ページが日本語に変わります。

Download をクリックすると、さらにファイルを選択する画面が表示されます。 vcredist_x64.exe と書かれている行にチェックを入れて、Next を押すとダウンロードがはじまります。

セットアップ開始

3つのファイルが揃ったら、セットアップをはじめます。

VCランタイム (Visual C++ 再頒布可能パッケージ) のインストール

vcredist_x64.exe を実行してインストールします。

ただし、コンピューターにすでにインストールされている場合は以下のような画面が表示されます。この場合は Close を押して構いません。

Apache 2.4 のインストール

Apache のインストールと言っても難しくはありません。ZIPファイルを適当なところに展開するだけです。 httpd-2.4.25-x64-vc11.zip を展開すると中に Apache24 というフォルダーが入っているので、これをまるごと適当なフォルダーにコピーします。以下、E:\Apache24 にコピーしたものとして説明していきます。

Subversion のインストール

Subversion モジュールのインストールも簡単です。 mod_svn-1.9.4-ap24-x64.zip を展開すると中に bindocmodulestools フォルダーがあります。これらのフォルダーを E:\Apache24 にコピーします。 E:\Apache24 の下にはすでに binmodules があるので、これらは上書きコピーすることになります。

リポジトリールートの作成

次に適当な場所に Subversion リポジトリーのルートフォルダーを作成します。ここでは E:\svn としました。

httpd.conf の作成

リポジトリールート(E:\svn)に httpd.conf を以下の内容で作成します。先頭の 2行は Apache24 フォルダーとリポジトリルートフォルダーを配置した場所に合わせて書き換えてください。

このファイルは以下のリンクからダウンロードすることもできます。

httpd.conf
Define SRVROOT "E:/Apache24" Define SVNROOT "E:/svn" Listen 80 ServerName localhost:80 ServerAdmin admin@example.com ServerRoot "${SRVROOT}" #DocumentRoot "${SRVROOT}/htdocs" ################################################################################ LoadModule auth_basic_module modules/mod_auth_basic.so LoadModule authn_core_module modules/mod_authn_core.so LoadModule authn_file_module modules/mod_authn_file.so LoadModule authz_core_module modules/mod_authz_core.so LoadModule authz_host_module modules/mod_authz_host.so LoadModule authz_user_module modules/mod_authz_user.so LoadModule dav_module modules/mod_dav.so LoadModule dav_fs_module modules/mod_dav_fs.so LoadModule dav_lock_module modules/mod_dav_lock.so LoadModule deflate_module modules/mod_deflate.so LoadModule dir_module modules/mod_dir.so LoadModule filter_module modules/mod_filter.so LoadModule headers_module modules/mod_headers.so LoadModule log_config_module modules/mod_log_config.so LoadModule mime_module modules/mod_mime.so LoadModule setenvif_module modules/mod_setenvif.so LoadModule socache_dbm_module modules/mod_socache_dbm.so LoadModule ssl_module modules/mod_ssl.so LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so ################################################################################ KeepAlive On MaxKeepAliveRequests 1000 KeepAliveTimeout 60 Header unset Server Header unset X-Powered-By <IfModule mpm_winnt_module> AcceptFilter http none AcceptFilter https none EnableSendfile off EnableMMAP off </IfModule> ErrorLog "logs/error.log" LogLevel warn HostnameLookups off <IfModule log_config_module> BufferedLogs On LogFormat "%h %l %u %t \"%r\" %>s %b %T \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%h %l %u %t \"%r\" %>s %b" common CustomLog "logs/access.log" combined </IfModule> <IfModule mime_module> TypesConfig conf/mime.types </IfModule> <IfModule dir_module> DirectoryIndex index.html </IfModule> <Directory /> Require all denied Options None AllowOverride None </Directory> <Location /svn> AuthType Basic AuthName "Subversion" AuthUserFile "${SVNROOT}/passwd" Require valid-user DAV svn SVNParentPath "${SVNROOT}" SVNListParentPath on SVNAdvertiseV2Protocol off </Location>

管理用コンソールを起動するバッチファイルの作成

リポジトリールート(E:\svn)に SvnConsole.bat を以下の内容で作成します。 3行目は Apache24 フォルダーとリポジトリルートフォルダーを配置した場所に合わせて書き換えてください。

このファイルは以下のリンクからダウンロードすることもできます。

SvnConsole.bat
@ECHO OFF SET SRVROOT=E:\Apache24 SET WORKDIR=%~dp0 SET WORKDIR=%WORKDIR:~0,-1% SET PATH=%SRVROOT%\bin;%PATH% SET PATH=%WORKDIR%\bin;%PATH% FOR /F %%v IN ('svn --version --quiet') DO SET SVN_VERSION=%%v @echo Subversion %SVN_VERSION% @echo; @echo * How to run Apache. (Type Ctrl+C to stop the process.) @echo %WORKDIR%^>httpd -f %WORKDIR%\httpd.conf @echo; @echo * How to install Apache as a service. (Administrator privileges required.) @echo %WORKDIR%^>httpd -n Subversion -k install -f %WORKDIR%\httpd.conf @echo %WORKDIR%^>net start Subversion @echo; @echo * How to uninstall the service. (Administrator privileges required.) @echo %WORKDIR%^>net stop Subversion @echo %WORKDIR%^>httpd -n Subversion -k uninstall @echo; @echo * How to create a new repository. @echo %WORKDIR%^>svnadmin create NAME @echo; @echo * How to create a new user. @echo %WORKDIR%^>htpasswd passwd NAME %COMSPEC% /K "cd /d %WORKDIR%"

パスワードファイル (passwd) の作成

リポジトリールート(E:\svn)に空のファイル passwd を作成します。空のファイルはエクスプローラーの適当なところで右クリックして 新規作成テキスト ドキュメント を選択すると作成することができます。その後、ファイル名を passwd に変更します。

Subversion 管理用コンソールの起動

ここまでの作業を確認しておきましょう。リポジトリールート(E:\svn)には 3つのファイル httpd.confpasswdSvnConsole.bat が配置されています。

これで準備が整いました。SvnConsole.bat を実行します。 Subversion のバージョン表示と、使い方が英語で表示されれば OK です。

ユーザーアカウントの作成

Subversion リポジトリーを使用するユーザーアカウントを作成してみます。

* How to create a new user.
  E:\svn>htpasswd passwd NAME

このヘルプメッセージの NAME となっている部分にユーザー名を指定してコマンドを実行します。 taro というユーザーアカウントを作成する場合は次のようになります。

E:\svn>htpasswd passwd taro

設定するパスワードを 2回入力するとユーザーアカウントの作成が完了します。

Subversion リポジトリーの作成

Subversion リポジトリーを作成してみます。

リポジトリーを作る単位は人によって様々です。 Visual Studio ソリューションや Android Studio プロジェクトごとにリポジトリーを作成することもできますし、 1つのリポジトリーの中に複数の Visual Studio ソリューションや Android Studio プロジェクトを格納することもできます。

私はリポジトリーをあまり分けずに 1つのリポジトリーの中に複数のソリューションやプロジェクトを格納するのが好きです。ということで複数のソリューションやプロジェクトを格納するために repos という名前の汎用リポジトリーを作成してみます。

* How to create a new repository.
  E:\svn>svnadmin create NAME

このヘルプメッセージの NAME となっている部分にリポジトリー名を指定してコマンドを実行します。 repos というリポジトリーを作成する場合は次のようになります。

E:\svn>svnadmin create repos

特にエラーが表示されることもなくプロンプトが復帰すれば完了です。

Apache を起動する

ここまでに作成したユーザー taro で、リポジトリー repos にアクセスできるか試してみましょう。

最終的には Apache を Windows サービスとして登録して自動的に起動するように構成しますが、まずはコマンドプロンプトから通常プロセスとして起動して動作を確認してみます。

* How to run Apache. (Type Ctrl+C to stop the process.)
  E:\svn>httpd -f E:\svn\httpd.conf

このヘルプメッセージの通りにコマンドを入力して実行します。

Windows ファイアウォールが有効になっている場合は下記の警告が表示されることがあります。

アクセスを許可する を押すか、もしくは Windows ファイアウォールの設定で TCPポート 80 の通信を許可するように設定してください。

Apache 実行中はコマンドプロンプトのキャレットが点滅してプロンプトに復帰していない状態になります。

ブラウザーを起動して http://localhost/svn/ にアクセスすると認証ダイアログが表示されます。作成したユーザー名とパスワードを入力します。

ユーザー名とパスワードが正しければリポジトリーの一覧が表示されます。

Apache を起動したコマンドプロンプトで Ctrl + C を押すと、 Apache が終了してプロンプトが復帰します。

Apache を Windows サービスとして登録する

最後に Apache を Windows サービスとして登録して実行します。 Windows サービスとして登録するためには管理者権限が必要になります。 SvnConsole.bat をダブルクリックするのではなく、右クリックして 管理者として実行 を選択してコマンドプロンプトを起動してください。

* How to install Apache as a service. (Administrator privileges required.)
  E:\svn>httpd -n Subversion -k install -f E:\svn\httpd.conf
  E:\svn>net start Subversion

このヘルプメッセージに表示されている 1つ目のコマンドを入力して実行します。引数 -n ではサービスの名前を設定することができます。ここではサービスの名前を Subversion としていますが好きな名前に変更することもできます。

E:\svn>httpd -n Subversion -k install -f E:\svn\httpd.conf

「アクセスが拒否されました。」というメッセージが表示される場合はコマンドプロンプトが管理者権限で実行されているか確認してください。コマンドプロンプトを管理者権限で実行している場合にはタイトルバーに「管理者」と表示されます。

数行のメッセージが表示されて Windows サービスの登録が完了します。

続けて、サービスを起動してみます。サービスの名前を変更して登録した場合は Subversion という箇所を変更してください。

E:\svn>net start Subversion

サービスを停止するときには以下のコマンドを実行します。

E:\svn>net stop Subversion

また、コントロール パネル管理ツールサービス を開いて、 GUI操作で Subversion サービスの開始や停止をすることもできます。

Windows での Apache + Subversion 構築は以上です。

今後は、Visual Studio、Eclipse、Android Studio などの統合開発環境で Subversion を使う方法を紹介していきたいと思います。