2013年2月19日火曜日

複数リポジトリの管理

運用していると複数のリポジトリを使いたい場合があると思います。

その際に、/etc/httpd/conf.d/subversion.confに1つのリポジトリに対して、
1つの設定を書いていくのは大変です!!:(;゙゚'ω゚'):

たとえば、リポジトリ「sample1」とリポジトリ「sample2」を定義したい場合には次のようになります。
<VirtualHost *:443>
  #SSLの定義
  SSLEngine on
  SSLProtocol all -SSLv2
  SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
  SSLCertificateFile /etc/pki/tls/certs/server.crt
  SSLCertificateKeyFile /etc/pki/tls/private/server.key
  #sample1の定義
  <Location /repos/sample2>
     DAV svn
     SVNPath /var/www/svn/sample1
  </Location>
  #sample2の定義
  <Location /repos/sample2>
     DAV svn
     SVNPath /var/www/svn/sample2
  </Location>
</VirtualHost>
ここで、役に立つのが「SVNParentPath」になります!
これを設定することによって、
定義は1つで、複数リポジトリの管理が可能になります。
<VirtualHost *:443>
  #SSLの定義
  SSLEngine on
  SSLProtocol all -SSLv2
  SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
  SSLCertificateFile /etc/pki/tls/certs/server.crt
  SSLCertificateKeyFile /etc/pki/tls/private/server.key
  #リポジトリの定義
  <Location /repos>
     DAV svn
     #リポジトリを生成するディレクトリを指定する
     SVNParentPath /var/www/svn
  </Location>
</VirtualHost>
上記の設定で「SVNParentPath」に/var/www/svnを指定しているので、
各リポジトリは/var/www/svnの直下に作る必要があります。

たとえば、sample2というリポジトリを作る場合には、次のようになります。
#sampleのリポジトリを追加
svnadmin create /var/www/svn/sample

#sample2のリポジトリを追加
svnadmin create /var/www/svn/sample2
また、この設定を利用した場合には、
リポジトリの追加時にApacheを再起動する必要がありません(; ・`д・´) ナ、ナンダッテー!! (`・д´・ ;)

リポジトリにアクセスする際には、(SSL利用してる場合)次のようになります。
/reposは固定でつけて、後ろにリポジトリ名をつける。
※SSL利用時。利用していない場合にはhttpでアクセスしてください

・リポジトリ「sample」にアクセスする
https://サーバーIPアドレス/repos/sample/

管理する上ではこっちのが楽だけど、
リポジトリ個別に何か設定する場合には使えないかもです。

以上(`・ω・´)ゞビシッ!!

今回利用した/etc/httpd/conf.d/subversion.confはこちらになります。
LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so

#
# Example configuration to enable HTTP access for a directory
# containing Subversion repositories, "/var/www/svn".  Each repository
# must be both:
#
#   a) readable and writable by the 'apache' user, and
#
#   b) labelled with the 'httpd_sys_content_t' context if using
#   SELinux
#

#
# To create a new repository "http://localhost/repos/stuff" using
# this configuration, run as root:
#
#   # cd /var/www/svn
#   # svnadmin create stuff
#   # chown -R apache.apache stuff
#   # chcon -R -t httpd_sys_content_t stuff
#

#<Location /repos>
#   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 /path/to/passwdfile
#      Require valid-user
#   </LimitExcept>

#</Location>

<VirtualHost *:443>

  #SSLの設定
  SSLProtocol all -SSLv2
  SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
  SSLCertificateFile /etc/pki/tls/certs/server.crt
  SSLCertificateKeyFile /etc/pki/tls/private/server.key

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

</VirtualHost>

参考URL

0 件のコメント:

コメントを投稿