連載
» 2001年10月10日 00時00分 UPDATE

次世代プロトコルWebDAVの可能性(2):WebDAVクライアント/サーバ環境の構築 (1/2)

さらに発展が期待できるWebDAVだが、すでに使える実装は存在する。ここではLinuxによるWebDAVサーバの構築と、サーバにアクセスするためのクライアント環境の整備について解説する。

[宮本久仁男,株式会社NTTデータ]

WebDAVサーバ環境の構築

 WebDAVの機能を実装しているプロダクトはいろいろあるが、今回はオープンソースのWebサーバであるApacheで、WebDAV機能を提供するためのモジュールであるmod_davを使えるようにしてみよう。

 mod_davは、純粋にRFC 2518に記述された範囲の実装である。ファイルの読み書き/作成/削除およびフォルダ(コレクション)の作成/削除を行うことはできても、それ自身がセキュリティ関連の機能を持っているわけではない。そこで必要となるのが別の規約の利用である。例えば、Apacheに実装されているBASIC認証などのセキュリティ機能を用いることが挙げられる。それだけでは不安という人は、SSLやssh、Zebedeeなど、すでに確立された暗号化通信の手段を利用することが可能である。

 以下ではRed Hat Linux 6.2を念頭に置いて解説するが、あえてRPMは使わず、tarアーカイブからのインストール方法で説明する。最近のLinux系OSであれば同様の手順で問題はないだろう。

コラム Windows 2000をサーバにする場合

 MicrosoftのWindows 2000上で動作するIIS 5.0でもWebDAV機能は利用可能である。機能の利用方法は、Microsoftのサイト(http://www.microsoft.com/JAPAN/developer/library/jpiis/core/wcwbdav.htm)に必要十分な記述があるので参考にしてほしい。


mod_davのインストール

 mod_davのインストール手順を大ざっぱに述べると、以下のようになる。

1.Apacheの構成をチェックする

 DSO(Dynamic Shared Object)が利用可能であればmod_davのコンパイル→インストールのみでOKだが、そうでない場合はApacheをDSO利用可能にする必要がある。また、スタティックにmod_davを組み込むことも可能だが、以後の構成変更などを考えると特段の理由がない限りはDSOを使った方がよいだろう。

 筆者の試験環境では以下のようにしてApacheをconfigureしたが、適宜必要なパラメータを追加/変更するなどして試してほしい。

$ ./configure --enable-module=most --enable-shared=max

 configureがうまくいけば、

$ make
$ su root
# make install

でApacheのインストールは終了する。

2.mod_davのアーカイブを入手する

 mod_dav-1.0.2-1.3.6.tar.gzはhttp://www.webdav.org/mod_dav/より入手できる。2001年9月現在のバージョンは1.0.2だ。

 なお、Apacheのバージョンは1.3.6以降が対象である。Apache 1.2.xでも動かせるが、バグフィックスなどの関係もあるので、最新のバージョンにしておいた方が望ましい。

3.コンパイルとインストール

 mod_davのアーカイブを入手したら、適当なディレクトリで展開してコンパイルおよびインストールを行う。

$ ./configure --with-apxs=apxsコマンドをフルパスで指定
$ make
$ su root
# make install

 ここまでうまくいったら、次は設定である。configureで失敗する場合は、後述の「インストールのトラブルシューティング」を参照してほしい。

WebDAVを有効化するための設定

 mod_davのインストールが終了した時点で、以下の行がhttpd.confファイルに追加されていることを確認する。

LoadModule dav_module         libexec/libdav.so
AddModule mod_dav.c 

 これが確認できたら、いよいよWebDAVを使うための設定を行う。例では、Webサーバ上の/pagesでDAV機能を有効にする。この場合、httpd.confに以下のような記述を追加すればよい。

<Location /pages>
    DAV On
</Location>

 このほか、ロックデータベースを格納する場所をDAVLockDBディレクティブで指定する。例えば、

DAVLockDB /usr/local/apache/var/DAVLock

とhttpd.confに記述することで、/usr/local/apache/var/というディレクトリにロックデータベースファイルを作成する。このディレクトリは、Userディレクティブで指定するユーザー(編注)でApacheが書き込める設定になっている必要があるので注意してほしい。

編注:httpd.confのUserディレクティブ参照。デフォルトはnobodyになっている。


 ここまでの設定でDAVによるアクセスが可能になるわけだが、これだけだと利用上の不具合がある。このままでは、だれでもDAVアクセスOK(ファイル作成OK)状態なので、/pagesに対応するディレクトリ配下に対して.htaccessなどを使ってアクセス制限をかけておく必要がある。例えば、筆者が自宅で利用しているWebDAVサーバでは、.htaccessの中に

AuthUserFile     /home2/wakatono/htpwd/user.pwd
AuthGroupFile    /dev/null
AuthName         DAVhome
AuthType         Basic
<Limit HEAD PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
           Require user wakatono
</Limit>

などとしておいて、GETとOPTIONS以外のメソッドについては認証を行うようにしてある。

 また、http://www.webdav.org/mod_dav/install.htmlに設定の例がいくつか掲載されているので参考にしてほしい。その中の1つを参考に解説すると、httpd.conf中での以下のような設定が挙げられる。

<Location /pages>
    DAV On
    AllowOverride None
    Options None
    <LimitExcept GET HEAD OPTIONS>
        require user wakatono
    </LimitExcept>
</Location>

 このように設定すると、GET、HEAD、OPTIONS以外のメソッドはユーザーwakatonoとして認証が必要となる。

インストールのトラブルシューティング

 mod_davの./configure実行時に、環境によっては以下のようなエラーを出力してconfigureが停止してしまうことがある。

checking for dynamic Apache module support (via APXS)... found at /usr/local/apache/bin/apxs
configure: error: Your APXS installation is broken and cannot be used.
Please see http://www.webdav.org/mod_dav/install.html#apxs for more information.

 このようなときのトラブルシューティングについて、エラーメッセージ中のURLを参照すると、PHPのFAQを見るようにという旨の指示がある。PHPをビルドするときにもmod_davと同様の現象が発生する可能性があり、PHPのFAQにはその対処方法が掲載されているのだ。

 PHPのFAQ(http://www.php.net/manual/en/faq.build.php#AEN63052)には、以下のように記述されている(原文は英語なので、簡単に邦訳してある)。

 apxs(編注)中の、

my $CFG_CFLAGS_SHLIB  = ' ';
my $CFG_LD_SHLIB      = ' ';
my $CFG_LDFLAGS_SHLIB = ' ';

となっている行(式の右辺は違うことがある。筆者の場合は q()となっていた)を探し、この部分を

my $CFG_CFLAGS_SHLIB  = '-fpic -DSHARED_MODULE';
my $CFG_LD_SHLIB      = 'gcc';
my $CFG_LDFLAGS_SHLIB = q(-shared);

と変更することで対処可能になることがある。

 そのほか、Red Hat Linux 6.1/6.2などではapxsの内容が不正な状態になてっていることがあるので、

my $CFG_LIBEXECDIR    = 'modules';        # substituted via APACI install 

という行を探し、

my $CFG_LIBEXECDIR    = '/usr/lib/apache'; #        substituted via APACI install

に変更すればOKになることがある。

 これでもダメならば、Apacheの再構成/再インストールをした方がよいだろう。

編注:apxsは、例えば/usr/sbin/apxsや/usr/local/apache/bin/apxsなどにある。Apacheのインストール方法などによって場所が異なるため、localeなどで検索した方が早いだろう。


       1|2 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

Focus

- PR -

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。