今日は Windows に Subversion 1.9 サーバー環境を構築していきます。
- Subversion 1.12 に対応した新しい記事があります。
👉 Windows に Subversion 1.12 サーバーを構築する
必要なものをダウンロードする
必要になるのは、 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.4
、 VC11
、 x64
という構成でセットアップしていきます。
Apache 2.4 をダウンロードする
Apache Haus Downloads を開いて、 Apache 2.4
、 VC11
、 x64
に該当するダウンロードリンクを探してダウンロードします。Apache のマイナーバージョンはそんなに気にする必要はありません。下記の画面キャプチャでは 2.4.25 となっていますが、 その時点での最新版をダウンロードすれば大丈夫です。
Subversion 1.9をダウンロードする
Subversion は Apache のモジュールとして配布されています。
Apache Haus Downloads の同じページを下へスクロールしていくと、 Modules for Apache 2.4.x VC11 と見出しの付いたところが出てきます。
似たようなファイルがたくさんありますが、 ap24
、 x64
と書かれているものを探してください。ファイル名には 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 を選択しましょう。ページが日本語に変わります。
ダウンロード をクリックすると、 さらにファイルを選択する画面が表示されます。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
を展開すると中に bin
、 doc
、 modules
、 tools
フォルダーがあります。これらのフォルダーを E:\Apache24
にコピーします。E:\Apache24
の下にはすでに bin
と modules
があるので、 これらは上書きコピーすることになります。
リポジトリールートの作成
次に適当な場所に Subversion リポジトリーのルートフォルダーを作成します。リポジトリーはソースコードと履歴が格納される大切な場所です。ここでは E:\svn
としました。
httpd.confの作成
リポジトリールート (E:\svn
) に httpd.conf
を以下の内容で作成します。先頭の 2 行は Apache24 フォルダーとリポジトリルートフォルダーを配置した場所に合わせて書き換えてください。
このファイルは以下のリンクからダウンロードすることもできます。
httpd.confDefine 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
<div class="vspace" data-length="0" style="margin-block-start:-1px;height:1px"></div>
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.conf
、 passwd
、 SvnConsole.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 を使う方法を紹介していきたいと思います。