バージョン履歴
- バージョン 0.6.2 リリース (2005-01-21)
- バージョン 0.6.1 リリース (2004-10-26)
akaDAV とは
akaDAV サーバ機能を実現するための Python モジュールであり、パッケージにはコンパクトな WebDAV サーバアプリケーションも含まれています。
akaDAV および akaDAV を組み込んだ Twisted Web サーバは次のような特徴を持っています。
- コンパクトな自前の Web サーバ(Twisted Web)を備えているため、他の Web サーバを必要としない。
- インストールや設定が容易。
- SSL を標準でサポート。
- クライアントの文字コード自動変換機能搭載。
- Twisted Web の Static リソース上位互換となっているため、他の Twisted Web アプリケーションへの WebDAV 機能追加が容易。
- ライセンスは LGPL。
現バージョンには以下の制限がありますが、順次サポートしていく予定です。
- DAV準拠クラスは1で LOCK、 UNLOCK 機能は未実装。
- Perspective Broker を使った場合の MOVE、COPY に不具合がある。
- マルチプラットフォームな作りになっていますが Windows 上での動作は未確認。
ダウンロード
SourceForge のプロジェクトページからソースコードがダウンロードできます。
インストール
akaDAV を動かすにあたって次のソフトウェアが必要です。akaDAV をインストールする前にこれらをインストールしてください。
- Python バージョン2.3以上
- http://python.org/
- Twisted 1.3
- http://twistedmatrix.com/products/download
- PyXML
- http://pyxml.sourceforge.net/
リクエストの文字コードとしてシフトJISやEUC-JP使用するクライアントをサポートするには次のいずれかの日本語コデックをインストールする必要があります。なおPython 2.4.x には CJKCodecs が標準で添付されてます。
- JapaneseCodecs
- http://www.python.jp/Zope/download/JapaneseCodecs
- CJKCodecs
- http://cjkpython.berlios.de/index-ja.html
SSL を使う場合
- pyOpenSSL
- http://pyopenssl.sourceforge.net/
上記各プログラムをインストールした後、akaDAV の tar アーカイブを展開、そのディレクトリに移動して次のように実行します。
python setup.py install
サーバアプリケーションの起動
次のようなディレクトリやユーザの構成を前提に WebDAV サーバアプリケーション akadavsvr.py の設定と起動方法を解説します。ディレクトリ構成やユーザ名は使う環境に合わせて適宜読みかえてください。
- サーバは TCP ポート80番を使用する。
- システムに akadav というユーザを登録してその権限でサーバを動かす。ホームディレクトリは /home/akadav。
- 2人のユーザ yasusii と murako を登録し、それぞれ自分だけが読み書きできる WebDAV のフォルダを設ける。また両方が読み書き可能な共有のフォルダも1つ設ける。
- アクセスとエラーのログは /var/log/akadav 内にそれぞれ access.log、error.log として記録する。
- サーバのプロセス ID は /var/run ディレクトリに akadav.pid という名前で保存する。
まずシステムにユーザ akadav を登録し ホームディレクトリ /home/akadav の下にサーバが使用する次のディレクトリとファイルを作成してください。
- /home/akadav/htdocs
- Apache の DocumentRoot に相当する Web コンテンツ用のディレクトリです。http://hostname/ でアクセスできるようにします。
- /home/akadav/yasusii
- ユーザ yasusii 専用の WebDAV フォルダです。http://hostname/yasusii/ でアクセスできるようにします。
- /home/akadav/murako
- ユーザ murako 専用の WebDAV フォルダです。http://hostname/murako/ でアクセスできるようにします。
- /home/akadav/share
- ユーザ yasusii と murako の両方がアクセスできる共有フォルダです。http://hostname/share/ でアクセスできるようにします。
- /home/akadav/users
- WebDAV
の BASIC 認証に使用するパスワードファイルです。akpasswd コマンドを使って作成します。akpasswd は Apache の
htpasswd と互換のコマンドです。パスワードファイルを新規に作成する場合は -c オプションを使用します。
akpasswd -c /home/akadav/users yasusii
-c を指定するのは最初だけです。 2人目以降のユーザを追加する場合はオプションを付けずに実行します。
akpasswd /home/akadav/users murako
- /var/log/akadav
- ログ用のディレクトリです。このディレクトリは root だけに書き込み権限を与えてください。
- /var/run
- pid ファイルを置くディレクトリですが、Linux や FreeBSD の場合標準で存在するため、新たに作成する必要はありません。
次にアーカイブの application ディレクトリからサーバ起動スクリプト akadavsvr.py を /home/akadav にコピーした後、エディタで設定を変更します。現バージョンでは設定を Python スクリプト内に直接書き込むようになっているため、間違った記述をすると Python の文法エラーなどが発生するので注意してください。将来のバージョンでは設定ファイルを単なるテキストファイルとして分離する予定です。
# アクセスログのパス SITE_ARGS.update({"logPath": "/var/log/akadav/access.log"}) # WebDAV リクエストの文字コードに utf-8 以外を使用するクライアントのた # めの設定です。辞書のキーに「UserAgent を判別するための正規表現」、 # 値には「そのエージェントが使用するエンコーディング」を指定します。 # サンプルの設定がコメントアウトされていますが、これらを有効にする場合、 # 行頭に余計な空白を入れないように注意してください。 SITE_ARGS.update({"agentEncodings": { r"Microsoft .* DAV 1\.1$": "cp932", r"xdwin9x/": "cp932"}}) # サーバが使用する TCP ポート PORT = 80 # サーバプロセスが使用する UID(ユーザ akadav の UID) APP_ARGS.update({"uid": 503}) # サーバプロセスが使用する GID(ユーザ akadav の GID) APP_ARGS.update({"gid": 503}) # DocumentRoot(スタティックな HTML 用のディレクトリ) ROOT = "/home/akadav/htdocs" # WebDAV フォルダの内容は次のように記述します。 # 名前: # URL で使用する名前です。"abc" とした場合、Web フォルダの URL は # http://hostname/abc/ となります。 # パス名: # サーバ内で実際に WebDAV ファイルを保存するディレクトリのパス名。 # パスワードファイル: # akpasswd で作成したパスワードファイルのパスを記述します。 # ユーザのリスト # パスワードファイルに登録したユーザのうち、このフォルダへのアクセス許可 # を与えるユーザを ["ユーザ1", "ユーザ2"....] の形式で指定します。 # CHILDREN = [ # (名前, パス名、パスワードファイル、[ユーザのリスト]) ("yasusii", "/home/akadav/yasusii", "/home/akadav/users", ["yasusii"]), ("murako", "/home/akadav/murako", "/home/akadav/users", ["murako"]), ("share", "/home/akadav/share", "/home/akadav/users", ["yasusii", "murako"]) ]
ファイルの修正が完了したら root 権限で次のコマンドを実行するとサーバが起動します。
twistd --logfile=/var/log/akadav/error.log \ --pidfile=/var/run/akadav.pid \ -oy /home/akadav/akadavsvr.py
WebDAV クライアントから接続する場合の URL は ユーザ yasusii の場合 http://hostname/yasusii/ となります。接続がうまくいかない場合は /var/log/akadav/error.log に何かエラーが出力されていないか確認してください。
サーバの終了には kill コマンドを使用します。
kill `cat /var/run/akadav.pid`