SubversionをApacheから使う
すでに Subversion は導入済みだったんだけど、SSL でログインして使うやり方だったので、これを Apache の WEBDAV として使う(http://でアクセスできる)ようにします。
インストール
ググると dav_svn.conf という設定ファイルに svn系の設定を書くらしいのですが、そんなファイルはどこを探してもないため、当初のインストールが Subversion 単独だった模様。入れ直してみます。
$ s apt-get install subversion subversion-tools libapache2-svn subversion はすでに最新バージョンです。 以下のパッケージが新たにインストールされます: libapache2-svn subversion-tools Enabling dav as a dependency Module dav installed; run /etc/init.d/apache2 force-reload to enable. Module dav_svn installed; run /etc/init.d/apache2 force-reload to enable. subversion-tools (1.4.6dfsg1-2ubuntu1) を設定しています ...
無事入りました。
$ s find / -name dav_svn.conf /etc/apache2/mods-available/dav_svn.conf /etc/apache2/mods-enabled/dav_svn.conf
設定ファイル(dav_svn.conf)も2つできてます。
リポジトリの作成
先にリポジトリを作成しておきます。あと Apache が Subversion ファイルを読めるように www-data ユーザにファイルオーナーを変更しておきます。
$ s mkdir /home/svn $ s svnadmin create /home/svn/repos $ s svn mkdir file://localhost/home/svn/repos/trunk -m "created trunk" $ s svn mkdir file://localhost/home/svn/repos/tags -m "created tags" $ s svn mkdir file://localhost/home/svn/repos/branches -m "created branches" $ s chown -R www-data /home/svn
※ repos というリポジトリを必ず作らないといけないということではありません。自分の管理したいプロジェクトの名前で作ってください。(trunk、tags、branches についても同様ですが、こちらは管理上推奨されている構成のため、このまま作ったほうが無難)
設定
dav_svn.conf に設定を書こうと思っていたのですが、ググると apache の方の設定ファイルでいいよという記事があったのでそちらにすることにします。
$ e /etc/apache2/sites-available/my_site
ServerName svn.5-55.jp
DAV svn
SVNPath /home/svn/repos
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
DAV svn
SVNPath /home/svn/repos/proj1
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
$ s /etc/init.d/apache2 restart
この設定を追加することで、http://svn.5-55.jp でアクセスできます。なお、http://svn.5-55.jp/proj1 で proj1 リポジトリにもアクセスしたいため、その分の記述も追加してあります。(詳細は後述)
また、誰でもアクセスできるのは嫌なので、Basic認証も入れておきました。このためのパスワードを登録しておきます。
$ s htpasswd -c /etc/apache2/dav_svn.passwd xxx
xxx はユーザIDです。-c は一番最初だけ付けてください。
テスト
http://svn.5-55.jp/ でアクセスすると、ユーザIDとパスワードを聞いてきて入力するとちゃんとこのような画面が表示されました。
Revision 3: / * branches/ * tags/ * trunk/ Powered by Subversion version 1.4.6 (r28521).
リポジトリのコピー(移動)
proj1 を作ったのは、別サーバで管理していたリポジトリをもってきたかったためです。リポジトリのコピー(移動)手順は次の通り。
- 元サーバのリポジトリのディレクトリを丸ごと移動先のサーバのTEMPへコピーする。
- 以下すべて移動先で作業。リポジトリのDUMPをとる。
- 新しいリポジトリのCREATE。
- 新しいリポジトリへDUMPをLOADする。
- クライアント(TortoiseSVN)からテストしてみる。
元サーバのリポジトリ・コピー
元サーバのリポジトリをディレクトリごと新サーバの適当なディレクトリにコピーします。(元サーバで svnadmin が使えれば、元サーバでDUMPをとって、DUMPファイルのみをコピーすればいいのですが、元サーバにはネットワーク越しでディレクトリ・アクセスしかできないという前提です)
copy \\192.168.101.xxx\svn\proj1 \\ubuntu804\tmp こんなコマンド一発でコピーできるわけじゃありませんが、SoftEtherで つながっている元サーバの svn\proj1 ディレクトリを Samba でつながっ ている新サーバの tmp ディレクトリ配下にコピーするというイメージです。
リポジトリのDUMP
$ cd /home/samba/tmp $ svnadmin dump proj1 > proj1.dump
新しいリポジトリのCREATE
$ s svnadmin create /home/svn/repos/proj1 $ s chown -R www-data /home/svn/repos/proj1
クライアント(TortoiseSVN)からテスト
※ /etc/apache2/sites-available/my_site に proj1 の Location を書いて、Apache を再起動させておいてください。
さて、エクスプローラの右クリックで「TortoiseSVN」→「リポジトリ ブラウザ」を選択します。URL を聞いてきますので、http://svn.5-55.jp/proj1 と入力( 5-55.jp のところはもちろん貴方のサイト)してください。
一番最初は Basic認証でユーザID、パスワードを聞かれますので、設定したユーザID、パスワードを入力すると、リポジトリツリーが表示されるはずです。
クライアント(TortoiseSVN)でリポジトリの再配置
正しくリポジトリがコピー(移動)できたら、いままで使っていた作業エリアのリポジトリ先を再配置で変更しておきます。
エクスプローラで、作業エリアのディレクトリ上で右クリックして「TortoiseSVN」→「再配置」を選択します。ダイアログに元URL(例えば、file://192.168.101.xxx/svn/proj1)と先URLが出てきますので、http://svn.5-55.jp/proj1 と入力すれば OK です。
参考
- こちら(→ http://sarabande.info/w/index.php/Ubuntu/Subversion )のページがすごく参考になりました。ありがとうございます。
- Basic認証については、こちら(→ Subversionのインストールと設定(Apache編) )を参考にしました。
- dav_svn.conf を使うやり方は、こちら(→ UbuntuにApache2でSubversionサーバーを構築する - すらすら はてぶろ )
- こちら(→ http://tech.gowest.co.jp/?p=10 )も参考にさせていただきました。
- subversion自体の詳細解説は、こちら(→ http://www.caldron.jp/~nabetaro/svn/svnbook-1.4-final/svn.ref.html )がお奨めです。
- リポジトリの移動に関しては、こちら(→ /var/log/maeda.log: Subversionのリポジトリの内容を別リポジトリに移動する。 )を参考にさせていただきました。