Apache2でWebDAV使いたければhttpd.confに以下のモジュールがロードされるようになっているか確認すればよい
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
あとはhttpd.confにWebDAV用の記述を追加すればよいのだが、これだと、日本語が化けるし、一度バケルと消すのが面倒になる。そもそも今回WebDAV導入の目的の一つが「会社-家間での快適なファイル移動」なので、日本語はちゃんと扱えないとダメデショウということで、mod_encodingを導入(自然な流れともイエル)。
WebDAV Resources JPから、Apache 2.0用のmod_encoding-20020611a.tar.gzとmod_encoding.c.apache2.20040616をダウンロード
# tar xvfz mod_encoding-20020611a.tar.gz
# cd mod_encoding-20020611a/lib
# ./configure
# make
# make install #suで
# cd ..
でもって、mod_encoding.c.apache2.20040616をmod_encoding.cとして上書きしたら
# ./configure --with-apxs=/usr/sbin/apxs
# gcc -shared -o mod_encoding.so mod_encoding.o -Wc,-Wall -L/usr/local/lib -Llib -liconv_hook
# mv mod_encoding.so /etc/httpd/modules/mod_encoding.so #su
下のようになるかチェック
# ldd mod_encoding.so
libiconv_hook.so.1 => /usr/local/lib/libiconv_hook.so.1 (0x00373000)
libc.so.6 => /lib/libc.so.6 (0x00a6c000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x00a57000)
おかしい場合は/etc/ld.so.confに/usr/local/libを追加して
# ldconfig
ここまで終わったら、httpd.confにdav用の設定を追加
#モジュール追加
LoadModule encoding_module modules/mod_encoding.so
Alias /mydav "/usr/local/dav"
<IfModule mod_encoding.c>
EncodingEngine on
NormalizeUsername on
SetServerEncoding UTF-8
DefaultClientEncoding JA-AUTO-SJIS-MS SJIS
</IfModule>
# DAVアクセスされるディレクトリの設定
<Location "/mydav">
DAV On
AuthType Basic
AuthName "WebDAV Folder"
AuthUserFile "/usr/local/passwd/davpwd"
AuthGroupFile "/dev/null"
Require valid-user
Options Indexes
</Location>
認証を入れるとこんな感じになります。後は構文チェックしてOKでたら再起動
# apachectl -t
Syntax OK
# /sbin/service httpd reastart
モジュールをロードしないとSyntax OKが出ても動きません。いくつかDAVサーバーを設定しているんだけど、一度そのおとぼけミスで30分ほどハマッタことがあるヨ。