SVNをFTPのちょっと進化したくらいな気軽さで簡単に使えないかと設定しようとして思いの外はまってしまったのでメモをしておく。
主に参考にさせていただいたのは以下のサイトだ。
[Linux]10分で作る、Subversionレポジトリ (CentOS 版)
Subversion導入ツアー
ユーザーとレポジトリの作成
さくらのVPSで使われているCentOS6.2だとSVNそのものは最初から入っていたので、まずはSVNで使用するユーザー作成から行う。Subversion導入ツアーを参考に以下のようにした。
$ sudo useradd -M -r -s /sbin/nologin svnadmin
-Mはホームディレクトリ無し
-rはシステムアカウントを生成
-sはログインシェルの指定
次にレポジトリの作成をする。
ディレクトリは/var/svn以下にしておいた。
テストなのでtestrepoと名前を付けておき以下にSVNのお作法通りにtrunk,branches,tagsディレクトリを置いた。
$ sudo mkdir /var/svn $ cd /var/svn $ mkdir testrepo $ sudo mkdir testrepo $ sudo svnadmin create testrepo $ sudo svn mkdir file:///var/svn/testrepo/{trunk,branches,tags} -m 'setup dir'
xinetdのインストールと設定
サーバーはsvnserveをxinetd経由で動かすことにする。
xinetdについてはコチラを参考にさせて頂いた。
さくらのVPS CentOSでサーバ構築 14 – xinetd
インストールと自動起動設定をする。
$ sudo yum install xinetd $ /etc/init.d/xinetd start xinetd を起動中: [ OK ] $ sudo chkconfig xinetd on $ chkconfig --list xinetd xinetd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
xinetd.dにsvnの設定をする。only_fromはあとで自宅のアドレスを調べて設定する。
$ sudo vi /etc/xinetd.d/svn # default: off # description: The svnserve server is a Subversion server. service svn { disable = no socket_type = stream wait = no user = svnadmin server = /usr/bin/svnserve server_args = -i -r /var/svn log_on_failure += USERID #only_from = 192.168.24.0/24 127.0.0.1 }
ファイヤーウォールの設定
svnserveは3690を使うのでポートを空ける。
$ sudo vi /etc/sysconfig/iptables #この行を追加する。 -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3690 -j ACCEPT
ファイヤーウォールを再起動し反映されているか確認する。
$ /etc/rc.d/init.d/iptables restart $ iptables -L
svnserveの設定
checkoutやcommitできるメンバーを限定したいので、svnserve.confを書き換える。
$ sudo vi /var/svn/testrepo/conf/svnserve.conf anon-access = none auth-access = write password-db = passwd
続いてpasswdを編集してログインできるユーザを限定する。
$ sudo vi /var/svn/testrepo/conf/passwd harry = harryssecret
次にレポジトリの所有者を変更する。これを変更しておかないとcommitの時に警告が出てくる。
$ sudo chown -R svnadmin /var/svn/testrepo
以上で、SVNクライアントから接続しCheckoutしたりCommitしたりできるようになる。