mod_davをWebDavサーバとして使う
ご存知の通りMobileMeのiDiskはWebDavサーバとして実装されています。 WebDavサーバの実装はかなり色々種類があるのですが(RubyやPython実装、Javaによる実装など)、実用になるものはApache web serverで動くmod_davしかありません。
最近はnginxをフロントエンドやSSLプロキシーとして使って、このウェブサイトのような各々のサービスはそれぞれ別のプロセスとして動かしています。mod_davは良いのですが、Apacheの上で動くということが不満で、WebDavサービスを追加しようとしても、mod_davに関する情報は主にApacheをフロントエンドとして使う方法しかなくてイマイチでした。
そこで、簡単なスクリプトを書いて、mod_davだけを使うことにしました。
ダウンロード
使い方
まず始めにスクリプトをウェブサーバやローカルにダウンロードして展開してください。ここではローカルのMac OS X 10.5(Leopard)での手順で説明しますが、スクリプト自体はUNIXライクなOSサーバで動くはずです。
% cd ~/Desktop
% tar xzvf standalone_webdav-*.tar.gz
% cd standalone_webdav
このスクリプトはApacheの2.2以上とmod_davモジュールが必要です。Leopardには既に組み込まれています。もしUbuntuを使っていたら、apache2パッケージをインストールして下さい。
% sudo aptitude install apache2
まずWebDavサーバへのログインパスワードファイルを作ります。このスクリプトはダイジェスト認証を利用します。レルムはdavです。
% htdigest -c .htdigest dav (ユーザー名)
Adding password for test in realm dav.
New password: (パスワード)
Re-type new password: (再度同じパスワード)
次にApacheのモジュールディレクトリへのシンボリックリンクをmoduleという名前で作成します。モジュールディレクトリの場所はApacheのインストール方法に依存しますが、MacOS Xの場合、 /usr/libexec/apache2に、Ubuntuの場合/usr/lib/apache2/modulesになります。
% ln -s /usr/libexec/apache2 ./modules
これて次のファイルがstandalone_webdavにできているはずです。
% ls -al (結果の詳細は省略)
drwxr-xr-x .
drwxr-xr-x ..
-rw-r--r-- .htdigest
-rwxr-xr-x httpd
-rw-r--r-- httpd.conf
lrwxr-xr-x modules -> /usr/libexec/apache2
これで準備ができました。mod_davだけのapacheを起動しましょう。
% ./httpd
Usage ./httpd [start|foreground|stop|restart]
% ./httpd start
Booting /usr/sbin/httpd...
/usr/sbin/httpd is running (pid=28147)
標準では6000番ポートで起動します。ポート番号はhttpd.confの先頭を書き換える事で変更することができます。ではFinderから確認してみましょう。 Finderのメニューからサーバに接続を選んでhttp://localhost:6000と入力して接続します。
ログイン画面が表示されたら、先ほどhtdigestで指定したユーザ名とパスワードを入力します。認証に成功してドライブがデスクトップに現れるはずです。
テストが成功したら、以下の手順でサーバを終了します。
% ./httpd stop
Killing 28147...
/usr/sbin/httpd was stoped
アップロードしたファイルはdocument_rootディレクトリに保存されます。このディレクトリはスクリプトが作ります。また、ログファイルがlogディレクトリに保存されます。