ApacheとWebDAVを用いたコラボレーション型オーサリングプラットフォームの構築
WebDAVサーバそのものは、HTTPを基本プロトコルとしたファイルサーバ的な機能をするが、ここで注目すべきはコラボレーティブな編集およびバージョン管理に対応している点だ。例えばWebサーバやエンタープライズドキュメント管理システムを運用する場合は、複数の人間による個別的なファイル編集に対処する必要があるが、WebDAVを使えばそうした環境下での書き込み権限管理を行えるのである。こうしたWebDAVを運用する場合、その基本機能だけであればApacheモジュールのmod_davおよびmod_dav_fsだけで賄えないこともないが、バージョニング機能もサポートさせるにはApache用のSubversionモジュールであるmod_dav_svnが必要となる。
WebDAVの実態は、コラボレーティブなWebオーサリングをするためのHTTP拡張セットであると考えればいいだろう。本来のHTTPでは行えない、ファイルのロック/アンロック、プロパティ設定、プロパティベースの検索、削除といった操作を行えるように拡張するのである。ここで言うプロパティとは、リソースの内容を説明するためのメタデータで、任意のキー値を組み合わせたものを設定しておく。例えば“TargetAudience”というプロパティを持つリソースに対して“Accounts Department Staff”という値を付けておくといった使い方である。こうしたWebDAV用の機能拡張の1つとして用意されているのが、サーバ上に置かれた同一リソースの複数バージョンを管理するバージョニングサポートである。特にWebDAV用のバージョニングサポートは、Delta-Vとして広く知られている。
WebDAVの主要な機能は、下記のように整理できる。
オーサリング関係
- ファイルのダウンロードおよびアップロード
- ロック機構を介した上書きの禁止
- プロパティ機能を介したサーバに格納されたリソースの内容説明(メタデータ)
- サーバ上でのリソースの複製や移動
- アクセスの制御
- 検索用の機能
バージョニング関係
- チェックイン、チェックアウト、チェックアウトのキャンセル、アップデート
- バージョン管理
- バージョンレポート
- マージ
WebDAVの基本機能に関する限り、Apacheサーバ側の設定はきわめて簡単である。mod_davおよびmod_dav_fsはApacheにバンドルされており、デフォルトでインストールされるからだ。WebDAVの基本機能は、下記の3ステップで起動可能となる。
- Apacheの設定ファイルhttpd.confに下記の行が記述されていることを確認して、これらがコメントアウトされている場合は解除しておく。
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
-
設定ファイルhttpd.confに下記の行が記述されていることを確認する。
DAVLockDB /var/lib/dav/lockdb
Alias /dav /var/www/html/davRepository
<location /dav>
Dav On
</location>
- WebDAVで使用するディレクトリおよびそこに格納するファイルに対して、Apacheからのアクセスに必要なパーミッションが与えられているかを確認する。
変更した設定を有効化させるため、root権限を取得して「/etc/init.d/httpd reload」を実行して、Apacheの設定をリロードさせておく。次に試験用のいくつかのファイルを/var/www/html/davRepositoryディレクトリに追加して、WebDAVクライアントが正常に機能するかを確認する。
WebDAVベースでファイル共有環境を構築する場合は、セキュリティに注意する必要がある。この場合のアクセス制限は、Apacheのアクセス制御ディレクティブを用いて施すことができる。その他、ApacheでサポートされているBasicやDigestなどの認証機能を使用することで、パスワード認証によるリソース保護を行うことも可能である。いずれにせよ、Apache上でWebDAVを有効化する場合は、事前にアクセス制御機能を実装しておかなければならない。
WebDAVクライアント
制限付きではあるが、FirefoxからでもWebDAVの機能は使用することができる。この場合、WebDAVフォルダに格納されたフォルダおよびファイルの一覧を表示させることはできるが、これらのファイルはすべて読み込み専用となり、ブラウザ側から変更を施すことはできない。ディレクトリリスティングを表示させるには、URLに「http://hostname/dav/」と指定すればいい。このディレクトリリスティングは、通常のApache処理によって生成されるディレクトリリスティングとよく似た形式になる。
WebDAVフォルダに新規ファイルをアップロードしたり既存フォルダに変更を加えるには、NautilusやKonquerorなどのWebDAVに対応したファイルブラウザを使用する必要がある。Nautilusから操作する場合はURLを「dav://hostname/dav」と指定する。これによりフォルダの内容がNautilusウィンドウ上に表示されるはずで、その後はローカルフォルダとの間でドラッグアンドドロップによるファイルの移動が行える。
スタンドアローン形式のDAVクライアントとしては、Javaで記述されたDavExplorerが存在する。同種のツールは各種存在しているが、このツールの場合はバージョニングやメタデータの編集といったWebDAV機能をサポートしている。
コマンドライン形式のWebDAVクライアントとしては、多くのLinuxディストリビューションにcadaverというツールが同梱されている。その操作コマンドは、コマンドライン形式のFTPクライアントのものとよく似ている。cadaverの起動コマンドは「cadaver hostname/WebDAV share location 」であり、この場合はhttp://www.myhost.com/dav/などを指定すればいい。これによりFTPシェルとよく似たcadaverシェルが起動され、get、put、mget、mputなどのコマンドを入力できるようになる。cadaverの特長は、NautilusなどのファイルブラウザよりもWebDAV機能への対応度が高い点で、例えば、propset、propget、propdelといったリソース関連のメタデータ管理を実行することができる。
davfs2
ファイルブラウザレベルの対応度でもWebDAVを利用できないことはないが、低レベルでのサポートが行われていないため、非WebDAV対応アプリケーションではリソースの効率的な運用はできない。そうした場合に便利なのが、davfs2という、各自のファイルシステムにWebDAVフォルダをマウントさせるためのLinux用ファイルシステムドライバである。これを介してマウントされたWebDAVリソースは、仮想的なローカルリソースとして扱えるようになる。
このdavfs2では、Cインタフェースに対応したneonというWebDAVクライアントライブラリを利用しているので、neonがインストールされていない環境ではそのダウンロードとインストールが必要である。davfs2本体に関しては、ソースアーカイブのダウンロードと展開、root権限でのconfigure、make、make installといった通常の手順によるインストールが完了すれば、ファイルシステムにWebDAVフォルダをマウントできるようになる。
こうしたdavfs2のインストール後、例えばローカルホスト側の/mnt/davをマウントポイントとしてexample.comにあるサーバのdavディレクトリをマウントするには、コマンド「mount -t davfs http://example.com/dav/ /mnt/dav」を実行すればいい。
davfs2のサポートするマウント機能は、プロキシを介して接続するクライアントからでも実行できる。またdavfs2では、基本的な認証機能やKerberos認証など、各種の認証スキームもサポートされている。クライアント証明の格納位置、プロキシ関連の設定、各種のタイムアウト値といったdavfs2設定を変更するには、/usr/local/share/davfs2/davfs2.confにある設定ファイルを編集すればいい。
バージョニング機能のサポート
先のサンプルの場合、Apacheの設定ディレクティブ「Dav on」にて指定位置に対するDAV機能を有効化し、ファイルシステムとのバックエンドのインタフェースとしてデフォルトのファイルシステムプロバイダ(ドライバ)mod_dav_fsをセットアップしている。このプロバイダに課せられている主要な役割は、メタデータ管理およびロックの機能を提供することと、サーバ側のファイルシステムとのインタフェースを取ることである。mod_davはモジュール構造を採用しているので、デフォルトのmod_dav_fs以外のプロバイダも使用できる。冒頭で触れたmod_dav_svnもそうしたドライバの1つであり、これを利用するとWebDAVからSubversionリポジトリにアクセス可能となる。mod_dav_svnのダウンロードとインストールは、RPMファイル形式で実行できる。mod_dav_svnに関する基本設定としては、Apacheの設定ファイルに下記の行を追加すればいい。
DAVLockDB /var/lib/dav/lockdb<location /dav>
Dav svn
SVNPath /var/www/davrepo1
</location>
SubversionとApacheの併用法の詳細については、Version Control with Subversionのページにある解説を参照して頂きたい。
WebDAVで得られるのは、Web経由で操作する形式の書き込みメディアだと思えばいいのかもしれない。つまりWebDAVは、単に従来型のファイル共有機構の代用品となるだけではなく、バージョニング機能をサポートしたクロスプラットフォームで利用可能なツールとして機能するのであり、うまく使いこなせばコラボレーション作業の簡単化と生産性の向上をもたらしてくれるはずである。
Murthy Rajuは、インドのRishi Valley Schoolにてコンピュータサイエンスを教えるかたわら、Linuxベースの小規模なコンピュータネットワークも管理している。またシステム/ネットワーク管理者およびテクニカルサポートとして、Linux、Unix、Windowsプラットフォームで使用する各種のオープンソースおよび商用製品を扱ってきた7年間の経験も有す。