かねがね、ソースコードを管理するのにSubversionを使いたいと思っていたのですが、サーバー機を立てるほどではないと思うけど、作業PC上にリポジトリを作成するのもいまひとつと思っていました。実際は、今まではNAS上にリポジトリを作成して、作業PCにインストールしたSubversionからアクセスするという方法でしのいでました。
先日、ファイルサーバとして使っているNAS(NETGEARのReadyNas Duo)のアドオンとしてSubversionやGitが出ていることに気づいたので、早速これをセットアップしてNAS上でSubversionを稼動させて、あわせてリポジトリを構築することにしました。
(今回は、Gitも試そうかと思ったのですが、個人(一人)の開発だと分散リポジトリを選ぶ理由もあまりないかと思い、使い慣れたSubversionにしました。気が向いたらGitにも手を出すかもしれません。)
以下にインストール時のメモをまとめておきます。
1. アドオンファイルのダウンロード
NEATGEARのコミュニティアドオン紹介ページでは、Subversionのアドオンが出てこないのですが、Community Add-ons for ReadyNAS NV+/Duo フォーラムを見るとSubversionのアドオンがあります。
今回インストールしたアドオンは以下のものです(リンクはフォーラムのページへのリンクです)。
- Subversion 1.6.x (curr: 1.6.11) (バージョン subversion_1.6.11-readynas-1.0.0.bin)
- WebSVN (curr: 2.3.1) (バージョン WebSVN_2.3.1-readynas-1.0.0.bin)
- PHP5 (currently 5.2.13) (WebSVNで必要。バージョン PHP5_5.2.13-readynas-1.0.2.bin)
WebSVNアドオンを使うと、ブラウザ経由でリポジトリの管理ができるので導入しました。コマンドラインでの操作だけであれば、phpとWebSVNは不要です。
フォーラムのリンクから、アドオンのファイルをダウンロードしておきます。
なお、PHPアドオンのフォーラムのページには、SSHアクセスが必要と書かれているので、SSHアクセスができるようにしておきます。(手元の環境は、別記事に書いたように、普通のユーザーのみがSSHでアクセスできる状態にしました)
2.アドオンのインストール
ブラウザからReadyNas Duo のFrontViewにアクセスして、『システム』→『アップデート』→『ローカル』を選択し、3つのファイルをアップロード・インストールします。
アップロード後の画面です。 この後、『システムアップデートの実行』を押して、インストールをします。特に再起動とかも求められないので、これでインストールは終わりです。確認のため、FrontViewから『サービス』→『インストール済みのアドオン』を表示すると、
のようにアドオンが有効(チェックがついている)になっていることがわかります。
ほかのアドオンも同様にインストールします。ただ、念のため、WebSVNは一番最後にインストールしました。
3.リポジトリの作成
ブラウザで、http://(NASのIPアドレス)/websvn とアクセスすると、 ユーザー名とパスワードを聞かれるので入力すると下記のような画面が表示されます。
ここで、エラーメッセージは気にせず、 『New Repository』の欄にテスト用のリポジトリ名を入力して、enterキーを押すと、問題なくリポジトリが作成されます。
複数のリポジトリを作成すると、このようになります。
なお、このときリポジトリの所有者は、ユーザー認証をしたユーザーにかかわらず、admin:admin になっています。
どうも、Webサーバをadminとして実行 (/etc/frontview/apache/httpd.conf をみると User admin という記述があること、WebSVNとSubversionという記事などから推測しています) しているため、WebSVN経由の場合はadminが所有者になるようです。
ただ、これで問題はないようです。ためしに、WiddowsのTortoiseSVNから作成したリポジトリをチェックアウトして、適当にコミットをして、コミット時に認証ユーザー名を変えたものを作ってみると、ログの履歴等にきちんと作業者が残っていました。
まずはこの状態でしばらく使ってみようと思います。
余談1
上記の設定をしてから、気づいたのですが、特に認証周りの設定を変えていないこの状態でリポジトリにアクセスする方法は、
- (ブラウザからのアクセス)http(https)://(NASのIPアドレス)/websvn 認証必要
- http(https)://(NASのIPアドレス)/svn 読み込みは認証不要, 書き込みは認証必要
- svn+ssh://(NASのIPアドレス)/リポジトリのパス 認証必要(だと思う)
という手段があることになりそうです(svn+sshプロトコルは今まで使ったことないのでちょっとよくわかりません)。
また、認証まわりを変更することも可能のようです。参考情報として見つけたものをあげておきます。
- http/httpsアクセス時の認証を変える方法は、このフォーラムのスレッドで話題になっています
- リポジトリ単位のユーザーのアクセス制限については、このスレッドで話題になっています
もっとも、デフォルト設定からユーザー認証まわりを変えるには、apache, Subversion, WebSVNの知識が必要になってくると思います。
余談2
上記のようにブラウザWebSVNにアクセスした際のメッセージに関連して、ReadyNas Duo にsshでログインして、config.php を探してみると、/opt/rfw/var/www/html/websvn/include にそれらしきファイルがありました。
内容を確認すると上記のエラーメッセージに書かれている設定どおりでした。
たぶん、初期状態ではリポジトリがひとつもないため、このようなメッセージが表示されたのではないかと思います。
余談3
Subversionのアドオンの説明のページを読むと、実行ファイルが、/opt/rfw にインストールされ、リポジトリは、/opt/subversion に作成されるとあります。
/optがディスクのどこにマウントされているか不明だったので、将来的にリポジトリの容量が大きくなった場合も対応できるのかも不安でした。
そこで、Subversionアドオンをインストール後、sshでログインして、/optを見てみると、
のように、/cの配下にディレクトリを作成して、そこにシンボリックリンクを張っているようです。この/cはどうもNASにセットしているディスク領域のようです(mountと/cの中身から推測しています)。
ですので、個人的にはリポジトリの容量は気にしなくてもよいのではないかと思っています。あとは、バックアップをどうするかを検討する必要はありますが、HDDは一応ミラーリングしているので試用している間は、このまま使おうと思います。