http経由でSubversion

自分だけで使うにはsvn+sshでのアクセスで十分ですが、不特定多数の人がリポジトリにアクセスできるようにする場合などはhttp経由でアクセスするのが便利だと思います。

http経由でSubversionにアクセスする場合にはmod_dav_svnというapacheのモジュールを使います。私の使っているマシ ンはFedoraですが、既にインストールされていました。インストールされていない場合でもyum install mod_dav_svnで簡単にインストールできます。

設定方法ですが、/etc/httpd/conf.d/subversion.confにmod_dav_svnの設定ファイルがあります。 Apacheの設定ですので別にこのファイルで行う必要はありませんが、Fedoraではこういう運用になっているようです。設定例がコメントに書いてあ りますので、そのコメントを外せば簡単に動かすことが可能です。

<Location /svn>
   DAV svn
   SVNParentPath /var/www/svn
   # Limit write permission to list of valid users.
   <LimitExcept GET PROPFIND OPTIONS REPORT>
      # Require SSL connection for password protection.
      # SSLRequireSSL
      AuthType Basic
      AuthName "Authorization Realm"
      AuthUserFile /var/www/data/svnpasswd
      Require valid-user
   </LimitExcept>
</Location>

一番最初のLocationのところでURLを指定します。SVNParentPathでリポジトリを作成するディレクトリを指定します。この場合 /var/www/svnの下にリポジトリを作ることになります。例えばtestというリポジトリを作る場合は以下のようになります。

$ svnadmin create /var/www/svn/test

そしてAuthUserFileにパスワードファイルをしています。この設定ではチェックアウトは誰でも出来ますがコミットはパスワードが必要になります。パスワードの部分はSubversionとは関係なくBasic認証の設定でhtpasswdを使って行います。

$ htpasswd -c /var/www/data/svnpasswd ユーザ名

実行するとこのユーザ名に対するパスワードの入力を求められるので、パスワードを2回入力します。

以上で作成完了です。思ったよりも簡単でした。WindowsのSubversionクライアントTortoiseSVNを使ってこのリポジトリに 試しにインポートしてみましたが、svn+sshの場合と同様の操作で、アドレスのところをhttp://サーバのアドレス/svn/testとすること でちゃんと動作しました。インポートするときには上で設定したユーザ名とパスワードの入力が必要です。

また、そのインポートした内容はブラウザからアクセスして確認できました。こちらはパスワードは必要ありません。