README for mod_uploader (Windows)

mod_uploader: Apache のモジュールとして動作する高速アップローダ

Contents

mod_uploader とは?

mod_uploader は,よくあるアップローダを Apache のモジュールとして実 装したものです.以下のような特長があります.

アップロード画面のスクリーンショット

機能比較

他のアップローダとの機能比較を下記に示します.

他のアップローダとの機能比較

動作サンプル

http://acapulco.dyndns.org:7070/up/

動作環境

mod_uploader は,Windows で動作します.(Linux UNIX 版はこちら)

詳細を以下に示します.

ライセンス

The zlib/libpng LicenseThe zlib/libpng License の翻訳 )に従 います.

ダウンロード

CVS リポジトリ

下記のようにすることで check out できます.(パスワードは空)

$ cvs -d:pserver:anonymous@cvs.sourceforge.jp:/cvsroot/mod-uploader login
$ cvs -z3 -d:pserver:anonymous@cvs.sourceforge.jp:/cvsroot/mod-uploader co mod_uploader

また, ViewCVS 経由で参照 することもできます.

インストール

mod_uploader-2.2.7.msi を実行すれば OK です.デフォルトでは C:/Program Files/mod_uploader 以下にインストールされます.

注意事項

動作環境 にも書いてありますが,あらかじめ Apache 及び ImageMagick を インストールしておく必要があります.(参考: Apache インストール手順, ImageMagick インストール手順)

設定

  1. [スタート] - [プログラム] - [mod_uploader] からたどれる UploaderConfig を起動します.起動すると下図の様なウィンドウが現れます.
UploaderConfig のスクリーンショット
  1. 掲示板の URL を必要にあわせて変更します.他にも設定項目がありますが, 通常は変更する必要ありません.
  2. エラー エラーアイコン が表示されていれば,その項目を修正します. アイコンの上にカーソルをあわせると詳しい説明が表示されます.
  3. 「設定をコピー」ボタンを押して設定をクリップボードにコピーします.
  4. コピーしたものを Apache の設定ファイル (httpd.conf) に貼り付けます.

起動

Apache を普通に起動すれば OK です.設置した場所にブラウザでアクセス してみましょう.

コンパイル方法

通常はコンパイル作業は不要です.ソースを編集して細かくカスタマイズした い方のみ読んでください.

最初に,UNIX 系 OS で configure します.

$ ./configure

次に,ディレクトリを丸ごと Windows にコピーし,src/GNUmakefile.win32 の 次の部分を, Apache をインストールしたディレクトリおよび ImageMagick をインストールしたディレクトリに書き換えます.

APACHE_DIR  := C:/Server/Apache2
MAGICK_DIR  := C:/Application/Image/Edit/ImageMagick

以上が完了したら,src/GNUmakefile.win32 を使って make します.

> cd src
> vsvars32.bat
> make -f GNUmakefile.win32

vsvars32.bat は,コマンドラインから Visual C++ .NET を使うための環 境設定を行うスクリプトです. Visual C++ .NET をインストールしたディ レクトリ以下の Common7/Tools にあります.

アンインストール

[スタート] - [設定] - [コントロールパネル] にある「プログラムの追加と削 除」から行えます.掲示板のデータは自動的には消去されませんので完全に消 去したい場合は手動でフォルダ (デフォルトでは C:/Program Files/mod_uploader) を削除してください.

注意事項

mod_uploader が動作中だとアンインストールが行えません.アンインストール 作業が途中で止まってしまう場合は,httpd.conf から mod_uploader の設定を 削除した後 Apache を再起動し,再度試してみてください.

パフォーマンス

高速な表示

一秒間に処理できるリクエスト数

mod_uploader は,表示を非常に高速に行うことができます.

右に他のアップローダとの速度比較を示します.HTML は,表示を静的な HTML で行うもの,Perl および PHP はそれぞれの言語で作られたアップローダを指 しています.測定には ApacheBench を用い,5 並列で 10,000 リクエスト発行 した場合の値をプロットしました.

mod_uploader は Perl の約 100 倍,PHP の約 10 倍高速に動作しています. これらの言語を使った場合, mod_perl (ModPerl::Registry)や APC を使用すればある程度速度を改善することが可能です.それでも, mod_uploader には及びません.

また,mod_uploader は,静的な HTML を用いるものと比べてもわずかながら高 速に動作します.これは,表示に静的な HTML を用いる場合でも,アップロー ド処理のためには libphp4.so をロードする必要があるので,そのためのオー バーヘッドがかかっているのが原因と思われます.libphp4.so のロードを無く した場合,HTML の値は 2,800 を超えて最速になります.

省メモリのアップロード

mod_uploader は,巨大なファイルのアップロードにもわずかなメモリしか消費 しません.

それに対してアップローダの多くは,アップロードされたデータを一旦全てメ モリに入れて処理するため,アップロードにはファイルサイズに比例したサイ ズのメモリを消費してしまいます.

テスト結果

テスト結果一覧

API ドキュメント

http://acapulco.dyndns.org/mod_uploader/api/

参考文献

プログラムの作成にあたってお世話になった文献を紹介します.

Apacheモジュール プログラミングガイド Secure Coding in C And C++

Apacheモジュール プログラミングガイド
Apache のモジュール作成に必要になる事柄を一通り説明した本.痒いと ころに手が届いているので,手元に置いておくと重宝します.
Secure Coding in C And C++
C/C++ でプログラムを作るときにセキュリティホールが発生してしまう原理と その対策について詳しく説明した本です.丁寧に書かれているので内容を しっかりと理解することができます.
Advanced Topics in Module Design: Threadsafety and Portability
Apache 2.0 でモジュールを作成するときに必要になってくるテクニック が解説されたパワポ.そんなに長くないので,モジュール書く前にさらっと 読んでおきましょう.
Apache API C++ Cookbook
C++ を使って Apache のモジュールを作成する際の注意事項について説明 したサイト.
libapr (apache portable runtime) programming tutorial
APR のチュートリアル.サンプルコードおよび,間違いやすい点についての 記述が多いので重宝します.
Using libavformat and libavcodec: An Update
libavformat と libavcodec を使って動画からフレーム画像を取り出す方法 を解説したページ.丁寧に書かれています.
STL のページ
C++ の標準テンプレートライブラリである STL について簡潔にまとめられた サイト.
RubyExtensionProgrammingGuide
Ruby の拡張ライブラリの書き方を解説したサイト.基本的な事項から少し高 度な話題まで非常に良くまとまってます.
Compiler Construction Lecture
コンパイラ作成に関する実践的な内容が簡潔にまとめられたサイト.簡単な インタプリタもどきを作るんだったら,このサイトだけで十分かも.