ページ更新: 2005-12-13 (火) (4906日前)

関連: ソフト/お気に入り#WebDrive

(2001.07.27 作成)

Apache に mod-dav モジュールを入れて使ってみるテスト。(DAV …… Distributed Authoring and Versioning)

とはいえ、別に必要じゃないので、discypus.jp サーバのApacheでは使わない。自分の手元のサーバで使ってみるつもり。消費メモリも増えるしね。(以前使わないモジュールしこたま入れて不安定になったし)

環境は Debian GNU/Linux Woody kernel 2.2.19、Apache 1.3.19 です。

目次

[編集]

情報源 #

[編集]

rfc #

RFC 2518 - HTTP Extensionss for Distributed Authoring - WEBDAV

[編集]

@IT #

実用 Apache 2.0運用・管理術 第6回 Apacheで作るファイルサーバ(WebDAV over SSL編)2005/12/13 (2005-12-13) http://www.atmarkit.co.jp/flinux/rensai/apache2_06/apache06a.html

[編集]

その他 #

WebDAV Resources JP
http://webdav.todo.gr.jp/

[編集]

手順 #

パッケージを検索し、入手

# apt-cache search dav | grep -i dav(WebDAV関連パッケージを検索)
jedstate - Extended mind for John E. Davis' text editor jed
libapache-mod-dav - A DAV module for Apache            (←コレ)
libneon-0.15.0 - An HTTP and WebDAV client library
cadaver - command-line client for WebDAV server        (←コレも)

# auto-apt search apxs       (apxsコマンドが入っているパッケージを検索)
usr/bin/apxs    web/apache-dev

# apt-get install libapache-mod-dav (mod_davモジュール)
# apt-get install cadaver (テスト用に WebDAVクライアントを入手)
# apt-get install apache-dev (apache-dev を入手)

http://www.lyra.org/pipermail/dav-dev/2001-May/002392.html より mod_encoding.c を入手して、コンパイル。

$ apxs -c mod_encoding.c (コンパイル)
gcc -DLINUX=22 -DEAPI -DTARGET="apache" -I/usr/include/db1 -DUSE_HSREGEX
-DUSE_EXPAT -I../lib/expat-lite -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
-fpic -DSHARED_MODULE -I/usr/include/apache-1.3  -c mod_encoding.c
mod_encoding.c:336: warning: initialization from incompatible pointer type
gcc -shared -o mod_encoding.so mod_encoding.o -lc -lm -lcrypt -ldb1 -ldb

# apxs -i mod_encoding.so (インストール)
cp mod_encoding.so /usr/lib/apache/1.3/mod_encoding.so
chmod 755 /usr/lib/apache/1.3/mod_encoding.so

WebDAV用にパスワードファイルを作成する。

$ htpasswd -c .davpasswd example (パスワードファイル作成)
New password:
Re-type new password:
Adding password for user example

httpd.conf 追加

LoadModule dav_module /usr/lib/apache/1.3/libdav.so
LoadModule encoding_module /usr/lib/apache/1.3/mod_encoding.so

DAVLockDB /var/lock/DAV/DAVLock
<Direcotory /var/www/dav>
    <LimitExcept GET HEAD OPTIONS>
        AuthType Basic
        AuthName "WebDAV"
        AuthUserFile /home/www/.davpasswd
        Require valid-user
    </LimitExcept>
</Directory>

<IfModule mod_encoding.c>
    EncodingEngine on
    SetServerEncoding UTF-8

    AddClientEncoding SJIS   "Microsoft .* DAV"
    AddClientEncoding SJIS   "xdwin9x/"
    AddClientEncoding EUC-JP "cadaver/"
</IfModule>

apacheの再起動

# apachectl configtest
Syntax OK

# /etc/init.d/apache reload
Reloading apache configuration.
/usr/sbin/apachectl graceful: httpd gracefully restarted

# tail /var/log/apache/errors.log
(ここでエラーがあるかどうか確認)

接続テスト

$ cadaver http://localhost/dav/
Looking up hostname... Connecting to server... connected.
Authentication required for WebDAV on server `localhost':
Username: example
Password:
dav:/dav/> ls
Listing collection `/dav/': collection is empty.
dav:/dav/> bye
Connection to `localhost' closed.

さらに、Windows2000 のWebフォルダでも動作を確認。 「マイ ネットワーク」→「ネットワーク プレースの追加」→URLを入力→ユーザー名とパスワードを入力

[編集]

問題点 #

  • owner が固定 (apache のuser/group――debianの場合、www-data) になってしまうため、www-data以外が所有するディレクトリへの書き込みには chmod 777 する必要あり―― VirtualHost + suexec みたいに User/Groupディレクティブも使えないし。