« PreviousNext »

Entry

Subversionのインストールと設定

社内のソースコードの管理に使おうかということになり、サーバにインストールしてみることになりました。とりあえずお勉強になったので、備忘録をまとめてみました。

最初はソースコードからコンパイルしてインストールすることを考えていたのですが、これがまた思ったよりめんどくさい感じだったので、やっぱりyumをインストールしてから作業することに...。

作業にあたり下記URLが大変参考になりました。
http://blog.fkoji.com/2010/04081036.html

基本的にそのまんま作業です。CentOSのバージョンが同じだったもんで、問題なくyumインストール完了。インストール後、yumのアップデートを行ないました。ネットは便利ですね。知りたいことが大抵見つかります。情報を公開していただいた方に感謝!

◆◆◆まずはyumのインストール◆◆◆

→OSのバージョン調査
cat /etc/redhat-release
CentOS release 5.4 (Final)

→unameでシステム情報を参照
uname -a
Linux xxxxxx.xx 2.6.18-028stab068.5 #1 SMP Fri Mar 12 13:55:49 MSK 2010 i686 i686 i386 GNU/Linux

i386とあるので http://mirror.centos.org/centos-5/5.4/os/i386/CentOS/ からyumのrpmを取得。

cd /usr/local/src
wget http://mirror.centos.org/centos-5/5.4/os/i386/CentOS/yum-3.2.22-20.el5.centos.noarch.rpm

→ダウンロード後、インストール。
rpm -ivh yum-3.2.22-20.el5.centos.noarch.rpm
warning: yum-3.2.22-20.el5.centos.noarch.rpm: Header V3 DSA signature: NOKEY, key ID e8562897
error: Failed dependencies:
python-elementtree is needed by yum-3.2.22-20.el5.centos.noarch
python-iniparse is needed by yum-3.2.22-20.el5.centos.noarch
python-sqlite is needed by yum-3.2.22-20.el5.centos.noarch
rpm-python is needed by yum-3.2.22-20.el5.centos.noarch
urlgrabber >= 3.1.0 is needed by yum-3.2.22-20.el5.centos.noarch
yum-fastestmirror is needed by yum-3.2.22-20.el5.centos.noarch
yum-metadata-parser >= 1.1.0 is needed by yum-3.2.22-20.el5.centos.noarch

お、やっぱりエラーだ。リストアップされてる各パッケージをダウンロードして...

wget http://mirror.centos.org/centos-5/5.4/os/i386/CentOS/python-elementtree-1.2.6-5.i386.rpm
wget http://mirror.centos.org/centos-5/5.4/os/i386/CentOS/python-iniparse-0.2.3-4.el5.noarch.rpm
wget http://mirror.centos.org/centos-5/5.4/os/i386/CentOS/python-sqlite-1.1.7-1.2.1.i386.rpm
wget http://mirror.centos.org/centos-5/5.4/os/i386/CentOS/rpm-python-4.4.2.3-18.el5.i386.rpm
wget http://mirror.centos.org/centos-5/5.4/os/i386/CentOS/python-urlgrabber-3.1.0-5.el5.noarch.rpm
wget http://mirror.centos.org/centos-5/5.4/os/i386/CentOS/yum-fastestmirror-1.1.16-13.el5.centos.noarch.rpm
wget http://mirror.centos.org/centos-5/5.4/os/i386/CentOS/yum-metadata-parser-1.1.2-3.el5.centos.i386.rpm
wget http://mirror.centos.org/centos-5/5.4/os/i386/CentOS/m2crypto-0.16-6.el5.6.i386.rpm
wget http://mirror.centos.org/centos-5/5.4/os/i386/CentOS/libxml2-2.6.26-2.1.2.8.i386.rpm

→再度、インストール。

rpm -ivh *

→インストール後、一応アップデートしてみました。

yum update

これでyumはインストール完了。


◆◆◆今度は本命のSubversionのインストール◆◆◆

作業にあたり、このサイトが設定に役立ちました。こちらも情報ありがとうございます!
http://d.hatena.ne.jp/foldrr/20090717/p2


→では、インストール。楽だぁ~全自動ですよ。
yum install subversion
yum install mod_dav_svn


◆◆◆Subversionの設定◆◆◆

→では、設定ファイルの編集を。
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

#
# Example configuration to enable HTTP access for a directory
# containing Subversion repositories, "/var/www/svn". Each repository
# must be readable and writable by the 'apache' user. Note that if
# SELinux is enabled, the repositories must be labelled with a context
# which httpd can write to; this will happen by default for
# directories created in /var/www. Use "restorecon -R /var/www/svn"
# to label the repositories if upgrading from a previous release.
#

#
# 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
#

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

→次いで、リポジトリを作ってみました。

cd /var/www/svn
svnadmin create hogehoge
chown -R apache:apache hogehoge
chmod -R o+w hogehoge

→最後にapacheの再起動。
service httpd restart

これで最低限の設定はいいはずなのですが...
なんと「Could not open the requested SVN filesystem」のエラーに翻弄されることに...。
いろいろ試行錯誤する羽目になったのですが、結果的にsvnディレクトリのオーナー権限、グループ権限に問題があったことが分かりました。
svnディレクトリのオーナー、グループはsvnではなく、apacheじゃないとダメなんですね...。ふぅ。

chown -R apache:apache svn

実は、このsvnディレクトリ、svnのインストールの際に、自動的に「/home/svn/」に自動で生成されたものをcp -aしてきたものなんです。当然自動で生成されたディレクトリだから、オーナー権限、グループ権限は変更せずにsvnのままコピーしたのですが、それでハマってしまったわけです...。因みに「subversion.conf」内の設定例では「/var/www/svn」となっていて、今回はそのようにしてみたのですが、それは結果的にどっちでもいいらしいです。

それじゃ、今度は非公開(ベーシック認証)の設定をしてみるかということで、該当部分のコメントアウト外してみたのですが...

<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 /var/www/svn/.htpasswd
  Require valid-user
 </LimitExcept>
</Location>

htpasswd -c /var/www/svn/.htpasswd hogehoge
New password: hogehoge
Re-type new password: hogehoge

service httpd restart

以上で、設定完了ですが、なぜかIDとパスワードを聞かずにスルっと通してしまうのです。ワケが分からない...。ネットで見つけたとある情報に基づき、httpd.confで設定されているDocumentRoot下にリポジトリを変更してみたりしたのですがそれでもダメでした。

とりあえず、セキュリティ面はIPで制限を掛けることとして、今回は妥協してみました。なんでダメなんだろ。

<Location /repos>
 DAV svn
 SVNParentPath /var/www/svn
 order deny,allow
 deny from all
 allow from 127.0.0.1 
 allow from xxx.xxx.xxx.xxx ←通すIPにします。
</Location>

service httpd restart

修行は続く。

Page Top

« PreviousNext »