UbuntuにApache2でSubversionサーバーを構築する

間違ってVirtualBoxのvdiファイルを削除してしまったためにやり直し・・・トホホ。

Apache2のインストール

$ sudo apt-get install apache2

Subversionのインストール

$ sudo apt-get install subversion subversion-tools libapache2-svn

subversion-toolsはレポジトリのバックアップやファイルのマージなどのツール群。
libapache2-svnレポジトリをApache2を利用して公開するためのModule。

Subversionの設定

/etc/apache2/mods-enabled/dav_svn.confを編集する。

$ sudo gedit /etc/apache2/mods-enabled/dav_svn.conf

中身はほとんどコメントアウトされてる(#で始まる行がコメント)なので下のように書き換える。

<Location /svn>
  DAV svn
  SVNParentPath /home/svn
</Location>

この設定は 「http://localhost/svn/testにアクセスすると/home/svn/testのレポジトリを参照するよー」という設定(たぶん)

設定を反映させるためにApacheの再起動

$ sudo apache2ctl restart

Subversionのテスト

testという名前でレポジトリを作成する。

$ sudo mkdir /home/svn/
$ cd /home/svn/
$ sudo svnadmin create test

レポジトリを作るとフォルダができて、その中にいろんなファイルができる。
Subversionを使う上で、この辺のファイルを直接いじることはまずない。

$ ls
test
$ cd test
$ ls
README.txt  conf  dav  db  format  hooks  locks

ローカルで使う場合はこのままでも良いが、Apacheを通じてレポジトリを公開するときはApache側からアクセスできるようにファイルの所有者・グループを変更しておく。

apacheはwww-dataというユーザーで動いているらしい

$ ps aux | grep apache2
root      5685  0.0  1.0  10164  2600 ?        Ss   22:33   0:00 /usr/sbin/apache2 -k start
www-data  5686  0.0  0.7   9936  1848 ?        S    22:33   0:00 /usr/sbin/apache2 -k start
www-data  5687  0.0  1.1 231500  2904 ?        Sl   22:33   0:00 /usr/sbin/apache2 -k start
www-data  5689  0.0  1.1 231500  2820 ?        Sl   22:33   0:00 /usr/sbin/apache2 -k start

というわけでtestディレクトリに対して以下のような操作をすればOK

$ sudo chown -R www-data.www-data test

確認

$ ls -al
合計 12
drwxr-xr-x 3 root     root     4096 2007-11-22 22:53 .
drwxr-xr-x 4 root     root     4096 2007-11-22 22:51 ..
drwxr-xr-x 7 www-data www-data 4096 2007-11-22 22:53 test
$ cd test
$ ls -al
合計 36
drwxr-xr-x 7 www-data www-data 4096 2007-11-22 22:53 .
drwxr-xr-x 3 root     root     4096 2007-11-22 22:53 ..
-rw-r--r-- 1 www-data www-data  229 2007-11-22 22:53 README.txt
drwxr-xr-x 2 www-data www-data 4096 2007-11-22 22:53 conf
drwxr-xr-x 2 www-data www-data 4096 2007-11-22 22:53 dav
drwxr-sr-x 5 www-data www-data 4096 2007-11-22 22:53 db
-r--r--r-- 1 www-data www-data    2 2007-11-22 22:53 format
drwxr-xr-x 2 www-data www-data 4096 2007-11-22 22:53 hooks
drwxr-xr-x 2 www-data www-data 4096 2007-11-22 22:53 locks


testディレクトリとtestファイルを作成し、testレポジトリにインポートする。

$ cd
$ mkdir test
$ cd test
$ cat > test
aaa
bb
ccc
^D
$ cd ../
$ svn import test/  http://localhost/svn/test/ -m "import test"
追加しています              test/test

リビジョン 1 をコミットしました。

チェックアウトしてみる

$ svn checkout http://localhost/svn/test
A    test/test
リビジョン 1 をチェックアウトしました。

http://localhost/svn/test/にアクセスして 「Revision 1: /」とか表示されてればOK