apacheとsubversionの連携

apacheに必要なモジュールの確認とインストール

apache -M

を実行し

so_module (static)
auth_basic_module (shared)
dav_module (shared)
dav_fs_module (shared)
ssl_module (shared)
dav_svn_module (shared)
authz_svn_module (shared)

が入っているかを確認する。
入っていない場合は以下のrpmをインストールする

./configure --enable-so=yes #=> so_module
./congigure --enable-auth-basic=yes #=> auth_basic_module
./configure --enable-dav=yes #=> dav_module, dav_fs_module
mod_ssl-2.2.3-39.el5.i386.rpm => ssl_module
mod_dav_svn-1.4.2-4.el5_3.1.i386.rpm => dav_svn_module, authz_svn_module

証明書の作成と配置

#証明書作成場所に移動

cd /etc/pki/tls/certs

#秘密鍵を作成

openssl genrsa -des3 1024 > cert.key

#パスワードを解除

openssl rsa -in cert.key -out cert.key

#署名要求を作成(-utf8は locale -c LC_CTYPE -kでcharmap="UTF-8"がある場合に指定)

openssl req -utf8 -new -key cert.key -out cert.csr

#Common Nameのところでサーバのドメイン名を入力する

#自己署名してサーバ証明書作成(-days 3650で10年間有効)

openssl x509 -in cert.csr -out cert.pem -req -signkey cert.key -days 3650

#クライアントインポート用証明書作成

openssl x509 -inform pem -in cert.pem -outform der -out cert.der

#IEでcert.derをルート証明機関にインポートすれば警告なしでアクセスできるようになる

#ssl.confの設定

#サーバ証明書
SSLCertificateFile /etc/pki/tls/certs/cert.pem
#秘密鍵
SSLCertificateKeyFile /etc/pki/tls/certs/cert.key

subversionのインストール

rpm -ivh subversion-1.4.2-4.el5_3.1.i386.rpm subversion-devel-1.4.2-4.el5_3.1.i386.rpm

リポジトリの作成

mkdir /var/www/svn
mkdir /var/www/svn/project_name
svnadmin create /var/www/svn/project_name
chown -R apache.apache /var/www/svn/project_name

httpd.conf(または subversion.conf)の修正

#LimitExceptは書き込みのみ制限したい場合などに有効にする

LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so

<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 /etc/httpd/.htpasswd
      Require valid-user
   #</LimitExcept>
</Location>

認証ユーザを作成

htpasswd -c /etc/httpd/.htpasswd user_name

#必要なユーザ分繰り返す

apache再起動

apachectl graceful

動作確認

svn list https://localhost/svn/project_name

プロジェクトのリポジトリを増やしたい場合は

mkdir /var/www/svn/new_project_name
svnadmin create /var/www/svn/new_project_name
chown -R apache.apache /var/www/svn/new_project_name

とする