2002年9月7日 改定

Apache(WWW)-DAVサーバ構築

DAVによるファイル共有

Web-DAV(Web-based Distributed Authoring and Versioning) はWebサーバによる分散オーサリング、バージョン管理のための技術実装です。 何ができるかというと要はファイル共有がWebサーバを使って可能になります。(正確には共有ではなくコピーおよびバージョン管理です)
DAVはRFC2518で定義されたプロトコルで、Apacheでは2.0から標準に実装されています。(RedHat7.3ではApache1.3.xにmod_davとして利用できるようになっています)
DAVのメリットはその実現に通常のHTTPパケットを使っているので、ファイヤーウォール越しのファイル共有が実現しやすく、またRFCで規定されているので特定のOSに依存しない設計になっていることでしょう。
(しかし現状ではDAVにアクセスできるOSとしてはWindowsとUNIXがメインとなります)

DAVのための設定

では早速、RedHat7.3の標準のApacheを使ってDAVを試してみましょう。 なおRedHat7.3以外のディストリビューションを利用している場合にはご利用の環境に合わせて読み替えてください。おっとその前に現状のDAVにおける問題点を1つ説明しないといけませんでした。 Apache-DAVではサーバ上に格納されるファイル名の複数バイト(漢字)対応にUTF-8(俗にユニコードと云われるもの)というコード体系が使われています。
しかし、WindowsからDAVを利用する場合Windows側ではサーバのファイル名をシフトJISで書き込もうとしてしまい、結果としてそのファイル名が文字化けを起こしてしまいます。そこで、mod_encoding といモジュールをApacheに組み込みシフトJISで書き込まれたファイル名をUTF-8に変換するようにします。
mod_encoding は標準のApacheには組み込まれていないので、まず 「WebDAV Resources JP」 サイトから mod_encoding をダウンロードしてきます。

なお、2002年9月7日現在、mod_encodingは「mod_encoding-20020611a.tar.gz」となっています。取得したファイルを以下の手順でセットアップします。
# tar zxvf mod_encoding-20020611a.tar.gz [Enter]
# cd mod_encoding-20020611a [Enter]
# ./configure [Enter]
# make [Enter]
# make install [Enter]

/var/www/lockディレクトリ作成

# mkdir /var/www/lock [Enter]
# chgrp apache /var/www/lock [Enter]
# chmod g+w /var/www/lock [Enter]

データ保存ディレクトリ作成

# cd /usr/local/apache [Enter]
# mkdir tmp [Enter]
# chmod 755 tmp [Enter]
# chown apache tmp [Enter]
# chgrp apache tmp [Enter]

/etc/httpd/conf/httpd.confの編集

httpd.confに以下の記述を追加します。
               ;;
               ;;
LoadModule headers_module libexec/mod_headers.so
LoadModule encoding_module libexec/mod_encoding.so

AddModule mod_headers.c
AddModule mod_encoding.c

DAVLockDB /var/www/lock/DAVLock

<IfModule mod_headers.c>
Header add MS-Author-Via "DAV"
</IfModule>

<IfModule mod_encoding.c>
EncodingEngine on
NormalizeUsername on
SetServerEncoding UTF-8
DefaultClientEncoding JA-AUTO-SJIS-MS SJIS

AddClientEncoding "cadaver/" EUC-JP
</IfModule>

# -------------------------------------------(1)
<Location /tmp>
DAV On
</Location>
               ;;
               ;;
以上でWeb-DAVが利用できるようになります。 ただし上記設定ではtmpディレクトリに誰でもアクセスできてしまいますので、Webサーバの認証機構を使ってユーザ認証できるようにしてみましょう。
(1)以下を次のように書き換えてください。
なお以下の設定でusernameの部分は自分の環境に合わせてユーザ名を設定してください。
               ;;
               ;;
<Location /tmp>
DAV On
AuthUserFile /etc/httpd/.htpasswd
AuthGroupFile /dev/null
AuthName "Please Enter Your Password"
AuthType Basic
<Limit PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
Require user username
</Limit>
</Location>
               ;;
               ;;
ファイルの設定が終わったならユーザのパスワードを設定します。以下のようにコマンドを実行します。
# htpasswd -c /etc/httpd/.htpasswd username
New password:
Re-type new password:
Adding password for user username
Apacheを再起動します。
# /etc/rc.d/init.d/httpd restart [Enter]

クライアント設定(Windows)

WebDAVサーバの設定が終わったなら早速クライアントのWindowsから利用してみましょう。
Windowsの「マイネットワーク」アイコンを開き、「ネットワークポレースの追加」を選びます。

ネットワークプレースの追加ウィザードが開きますのでここでWeb-DAVサーバのURLを指定します。上記の設定ではWebサーバのドキュメントディレクトリに”tmp”というディレクトリを指定しているので以下のような指定になります。

認証を使うように設定されている場合にはユーザIDとパスワードを確認してきますのでこれを入力します。

ネットワークプレース追加ウィザードの終了で利用するネットワークプレイス名を確認してきますので適当な名前を指定します。

以上でマイネットワーク上に「DAV」というアイコンが追加され、ここへファイルを保存することが可能になります。


関連情報

WebDAV Resources JP : http://webdav.todo.gr.jp/
Linux Square : http://www.atmarkit.co.jp/flinux/special/webdav/webdav01a.html