私的メモです。仲間に公開している WebFolder の構築の仕方を忘れないように備忘録。
HTTP の拡張である WebDAV の導入方法です。
日本語化に際して、導入手順が複雑なので纏めました。
自己責任で参考にしてください。
導入関しては自己責任でお願いします。
Fedora Core 6 の WebDAV で日本語が利用できるようにパッケージしました。 Fedora Core で利用することよりも Apache 2.2 で利用できるようにすることを目的としています。他のディストリビューションでも導入可能だと思います。
このページの下に添付してある mod_encoding-20040430a.tar.gz に対して以下の変更を加えています。変更後の mod_encoding-20061118.tar.gz は、このページの下に添付してあります。
iconv_hook を利用せずに iconv を利用します。
mod_encoding.c 中の以下をコメントアウト #include <ap_compat.h>
mod_encoding.c 中の以下をコメントアウト #include <iconv_hook/iconv.h>
mod_encoding.c に以下を追加。上記のコメントアウトした直後あたりでOK。 #include <regex.h> #include <iconv.h>
QUERY STRING のパッチがあたっていますが、動かない箇所を修正しました。
mod_encoding.c ソースにある以下の関数を置換 ap_pstrdup ⇒ apr_pstrdup ap_pstrcat ⇒ apr_pstrcat
$ ./configure --with-apxs=/usr/sbin/apxs $ make $ gcc -shared -o mod_encoding.so mod_encoding.o -Wc,-Wall $ su # cp mod_encoding.so /etc/httpd/modules/
今回、パッチのみの提供はしていません。mod_encoding-20061118.tar.gz をご利用ください。iconv_hook も含まれていますが、利用していません。
iconv_hook を利用しなくなったので、取り扱いが可能な日本語文字に若干の違いがあるかもしれません。
Apache 2.2 の設定ファイル(httpd.conf) の記載は 2.0 の場合と同じで問題なく利用できています。ただ、httpd.conf のモジュール構成が 2.2 でが大きく変わっているので注意が必要です。
Apache 2 には標準で WebDAV の機能があります。ただし、標準の WebDAV では日本語のファイル(ディレクトリ)名が正しく扱えません。このような URI エンコーディングに関する問題を解決するために mod_encoding が存在します。
WebDAV Resources JPから以下のファイルを入手します。
-mod_encoding.c.apache2.20020611a-2 (これより新しいのが出ています)
apache 2.0 対応のための差分ファイル
また、以下のパッチを使用します。(このページに添付してあります。)
$ tar zxvf mod_encoding-20021209.tar.gz
$ cp mod_encoding.c.apache2.20040616 mod_encoding-20021209/mod_encoding.c
/* #include <ap_compat.h> */以下のように修正します。
#include <ap_compat.h>
$ cp mod_encoding-20020611a-safequery.patch mod_encoding-20021209/ $ cd mod_encoding-20021209/ $ patch < mod_encoding-20020611a-safequery.patch
$ cd lib $ cp "パッチを保存したディレクトリ"/iconv_hook-20040430.patch ./ $ patch < iconv_hook-20040430.patch
ここまでで必要なパッチあては完了です。ここまでのパッチをあてたファイルをアーカイブして、このページに mod_encoding-20040430.tar.gz として添付しておきました。なお、このファイルは私がいろいろなパッチをあてたもののアーカイブでありWebDAV Resources JPがリリースしているものではありません。このファイルについてWebDAV Resources JPへの問い合わせなどはしないように注意してください。
2004/06/16 版 に対してパッチをあてたファイルを、mod_encoding-20040430a.tar.gz として添付します。
$ make $ su # make install
$ ./configure --with-apxs=/usr/local/apache2/bin/apxs --with-iconv-hook=/usr/local/include $ makelibtool の不具合で mod_encoding.so の生成に失敗します。手で mod_encoding.so を生成します。
$ gcc -shared -o mod_encoding.so mod_encoding.o -Wc,-Wall -L/usr/local/lib -Llib -liconv_hook $ su # cp mod_encoding.so /usr/local/apache2/modules/mod_encoding.so
モジュールの組み込みを httpd.conf へ追加します。
LoadModule dav_module modules/mod_dav.so LoadModule dav_fs_module modules/mod_dav_fs.so LoadModule encoding_module modules/mod_encoding.so
同じく httpd.conf の下部に WebDAV の設定を追加します。以下の httpd.conf はあくまでも例ですので注意してください。
(BASIC認証をし、SSL以外の接続を許可しない設定の例です。)
Alias /hoge "/home/userdocs/hoge"
<IfModule mod_dav.c>
DavLockDB /var/lock/dav/DavLock
DAVMinTimeout 600
<Location /hoge>
DAV On
SSLRequireSSL
AuthType Basic
AuthName "DAV"
AuthUserFile "/usr/local/apache2/conf/.htpasswd"
Require user hogehoge
</Location>
</IfModule>
このとき、WebDAV のロックファイルを格納するディレクトリと WebDAV でファイルを保存するディレクトリを作成するのも忘れないようにします。
# mkdir /home/userdocs/hoge # chown -R apache /home/userdocs/hoge # chgrp -R apache /home/userdocs/hoge # mkdir /var/lock/dav/ # chown -R apache /var/lock/dav/ # chgrp -R apache /var/lock/dav/
同じく httpd.conf の下部に エンコード の設定を追加します。
<IfModule mod_encoding.c>
EncodingEngine on
NormalizeUsername on
SetServerEncoding UTF-8
DefaultClientEncoding JA-AUTO-SJIS-MS SJIS
AddClientEncoding "cadaver/" EUC-JP
</IfModule>
Excel ファイルを WebDAV 上において、それを直接編集していると、ファイルの内容が全くなくなって見えることがあります。ファイルが破壊されたように思いますが、実際は壊れていません。 Excel のファイルをロックする機能が特殊(だと思う。。。)なのと、IE のキャッシュが影響しているようです。 WebDAV 上の Excel ファイルが壊れたと思ったら、IE のキャッシュを削除すれば問題なく先のファイルも開くことができます。 IE を立ち上げて、[ツール]-[インターネットオプション]-[全般] にある、[インターネット一時ファイル]の[ファイルの削除] を試してみてください。