WebDavを実装したいと思います。既に稼動中の Apache1.3 なので、動的モジュールとして追加します。
以下余談ですが、似たような機能の提供として、Samba や FTP があります。うちは、以下のような形で使い分けたいと思います。
匿名FTP | 大きなファイルのダウンロード用 |
samba | LAN環境下でのファイル交換 |
FTP | インターネットでのファイル交換(容量問わず) |
WebDav | インターネットでのファイル交換(小容量、https利用でセキュア) |
Apache1.3 に、mod_dav を動的モジュールとしてインストールする場合、Apache本体に mod_so が静的モジュールとして組み込まれていなくてはなりません。下記のコマンドを打ち、mod_so が表示されるか確認してください。表示されない場合は、Apache の再構築が必要です。
# httpd -l
まず、以下のダウンロード先で、mod_dav を入手します。
うちは、プレインストールのApacheを使っているため、apxs のパスは、"/usr/sbin/apxs" になっています。ソースからインストールした場合は、"/usr/local/apache/bin/apxs" にあるかと思います。単純に "-with-apxs" とのみ指定した場合は、すでに apxs にパスが通っているものと解釈されます。
[bokupi@pokota mod_dav-1.0.3-1.3.6]$ ./configure --with-apxs=/usr/sbin/apxs checking for gcc... gcc checking for C compiler default output... a.out checking whether the C compiler works... yes checking whether we are cross compiling... no checking for executable suffix... checking for object suffix... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for ranlib... ranlib checking how to run the C preprocessor... gcc -E checking for ANSI C header files... yes checking for static Apache module support... no checking for dynamic Apache module support (via APXS)... found at /usr/sbin/apxs checking for expat... found in /usr/include/apache configure: creating ./config.status config.status: creating Makefile config.status: creating libdav.module config.status: creating config.h
続いて、make します。
[bokupi@pokota mod_dav-1.0.3-1.3.6]$ make
スーパーユーザーになり、make install します。
[root@pokota mod_dav-1.0.3-1.3.6]# make install
モジュールのインストールと、httpd.conf の更新が行なわれます。古い設定ファイルは、httpd.conf.bak として保存されます。
ロックファイルを用意します。
# mkdir /var/www # mkdir /var/www/lock # chown apache:apache /var/www/lock # chmod 0770
ファイルを格納する領域を用意します。
# mkdir /home/httpd/dav # chown apache:apache /home/httpd/dav
下記を追加します。
DAVLockDB /var/www/lock/DAVLock <Location /dav> DAV On </Location>
これで、/dav 以下は、WebDavとして利用できます。
しかし、うちの場合、これではいささか不具合があります。それは、バーチャルホストを利用しているため、Location指定だと、全ドメインで /dav 以下が、WebDav になってしまうのです。それを避けるために、Directory指定を用いました。
<Directory /home/private/dav> DAV On AuthUserFile /home/private/.htpasswd AuthGroupFile /dev/null AuthType Basic <Limit PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK> Require user bokupi </Limit> </Directory>
日本語ファイル名に対応するため、このモジュールを追加します。
今回ダウンロードしたのは、mod_encoding-20021209.tar.gz です。
[bokupi@pokota mod_encoding-20021209]$ ./configure -with-apxs=/usr/sbin/apxs
[bokupi@pokota mod_encoding-20021209]$ make
[root@pokota mod_encoding-20021209]$ make install
下記の内容を、httpd.conf に追加してください。場所はどこでもいいです。
LoadModule mod_encoding AddModule mod_encoding.c
<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>
WebDAVの日本語対策でmod_encodingを導入すると、他のソフトの日本語環境やPHPやCGIで文字化けが発生する。
うちは、日本語は使わないようにします。どうしても必要であれば、ftpを利用すればいいのですし。
一番簡単なのは、IE からアクセスする方法です。IE の「ファイル」メニューを開き、「開く」を選択します。出てきたダイアログに対し、WebDav として利用したい URL を入力します。そして、「Webフォルダとして開く」にチェックを入れます。下の画像を参考にしてください。
OKボタンを押すと、指定した URL の中身を、エクスプローラーの形式で見ることができます。ファイルの新規作成などできるか、確認しましょう。
うちは、すでに上位層で認証を掛けている領域のなかに、WebDav 用のディレクトリを作成しています。そのためなのか、IE からアクセスすると、認証系がおかしいです。
最初に出てくるダイアログは正しいID やパスワードを入れても、何度も出てきてしまいます。このダイアログでは、キャンセルボタンを押します。すると次のダイアログが出てきます。ここで正しいID やパスワードを入れると、ログインができます。
最初に出てくる認証ダイアログ
次に出てくる認証ダイアログ
最初の認証は、どこか違うところのものでしょうか。しかし、次に出てくる認証をなくすと、最初の認証も出なくなります。謎です。
openwebfolder というエクステンションを入れれば、WebDavを利用できるらしいです。エクステンションを追加したあと、右クリックメニューを開くと、「Open As Webfolder」という項目があるので、それを選択します。すると、IEが立ち上がり、Webフォルダを開こうとするのですが…、うまくいきません。
素直に、最初から IE を使った方が良さそうです。認証などがない、単純な環境なら問題ないのでしょうけど。