CentOSにSubversionを入れてみる

VirtualBoxにCentOSをとりあえずインストール
の続き

CentOSSubversionを入れてみる。


とりあえずrootになる。

$ su -

Apacheのインストール

Apacheが入ってなければ、インストールしておく。

# yum -y install httpd
# service httpd start
# chkconfig httpd on

Subverisonのインストール

Subversionをインストールする。

# yum -y install subversion mod_dav_svn

SVNリポジトリ用のディレクトリを作成する。

# mkdir /var/www/svn

ApacheSVNリポジトリにアクセスするよう設定する。

# vi /etc/httpd/conf.d/subversion.conf
LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so

<Location /repos>
   DAV svn
   SVNParentPath /var/www/svn
</Location>
# service httpd restart

SVNリポジトリの作成

SVNリポジトリを作成する。
また、Apacheでアクセスできるようにしておく。。

# svnadmin create /var/www/svn/sample
# chown -R apache:apache /var/www/svn/sample

作成したSVNリポジトリにtrunk/branches/tagsのディレクトリを作成する。

# mkdir -p /tmp/svn/{trunk,branches,tags}
# svn import /tmp/svn file:///var/www/svn/sample -m "create trunk branches and tags." 


以上で、
http://サーバーのアドレス/repos/sample/
にアクセスすると、下記の画面が表示される。

Basic認証の設定

Basic認証を設定する場合は、
subversion.confを下記のように設定する。

# vi /etc/httpd/conf.d/subversion.conf
LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so

<Location /repos>
   DAV svn
   SVNParentPath /var/www/svn

   AuthType Basic
   AuthName "Authorization Realm"
   AuthUserFile /etc/httpd/.htpasswd
   Require valid-user
</Location>
# service httpd restart

後は、SVN用のユーザーを用意する。

# htpasswd -c /etc/httpd/.htpasswd SVN用ユーザー名
(SVN用ユーザーのパスワードを2回入力する)


以上で、
http://サーバーのアドレス/repos/sample/
にアクセスすると、Basic認証が表示される。

SSLの設定

上記のBasic認証だと、パスワードがそのまま通信されてしまうので、
SSLを設定する。

mod_sslをインストールする。

# yum -y install mod_ssl

subversion.confを下記のように設定する。

# vi /etc/httpd/conf.d/subversion.conf
LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so

<Location /repos>
   DAV svn
   SVNParentPath /var/www/svn

   SSLRequireSSL

   AuthType Basic
   AuthName "Authorization Realm"
   AuthUserFile /etc/httpd/.htpasswd
   Require valid-user
</Location>
# service httpd restart

以上で、
https://サーバーのアドレス/repos/sample/
にアクセスすると、下記の画面が表示され、
「このまま続行」をクリックすると、Basic認証が表示される。

【参考】
[CentOS] Apache + SSL + Subversion + Basic認証( Basic認証は危険) | J-Linuxer
http://jlinuxer.dip.jp/?p=958

(補足)参照は誰でも・更新のみBasic認証

更新のみBasic認証にして、参照は誰でも可能にする場合は、
subversion.confを下記のような感じで設定する。

# vi /etc/httpd/conf.d/subversion.conf
LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so

<Location /repos>
   DAV svn
   SVNParentPath /var/www/svn

   <LimitExcept GET PROPFIND OPTIONS REPORT>
      SSLRequireSSL

      AuthType Basic
      AuthName "Authorization Realm"
      AuthUserFile /etc/httpd/.htpasswd
      Require valid-user
   </LimitExcept>
</Location>