[ mod_uploader とは? | 動作サンプル | 動作環境 | ライセンス | ダウンロード | CVS リポジトリ | バグ情報 | コンパイル方法 | インストール | 設定 | 起動 | お試し実行 | トラブル・シューティング | テンプレートの書式 | パフォーマンス | API ドキュメント | ツール | 参考文献 ]
mod_uploader は,よくあるアップローダを Apache のモジュールとして 実装したものです.以下のような特長があります.
http://acapulco.dyndns.org:8888/up/
mod_uploader は,UNIX 系 OS 及び Windows で動作します. 詳細を以下に示します.
開発は,Linux kernel 2.6.10,GCC 3.3.5,Apache 2.0.52,ImageMagick 6.1.8.8 で行っています.
The zlib/libpng License (翻訳) に従います.
下記のようにすることで 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 経由で参照 することもできます.
バグを見つけた場合は,リンク先の「新規レポート」から書き込んでください.
GCC でコンパイルする場合は,
$ ./configure
$ make
とします.Intel C++ Compiler でコンパイルする場合は,
$ CC=icc ./configure
$ make
とします.
configure は次のオプションを受け付けます.エラーがでた場合 は,--with-apxs2,--with-apctl2,--with-aprconf や --enable-iconv-const を試してみてください.
まず,UNIX 系 OS で configure します.
$ ./configure
次に,ディレクトリを丸ごと Windows にコピーし,src/GNUmakefile.win32 の次の部 分を,Apache をインストールしたディレクトリおよびImageMagick をイン ストールしたディレクトリに書き換えます.
APACHERDIR := C:/Server/Apache2
MAGICKDIR := C:/Application/Image/Edit/ImageMagick
以上が完了したら,src/GNUmakefile.win32 を使って make します.
> cd src
> vsvars32.bat
> make -f GNUmakefile.win32
vsvars32.bat は,コマンドラインから Visual C++ を使うための環境設定 を行うスクリプトです.Visual C++ をインストールしたディレクトリ以下 の Common7/Tools にあります.
次のコマンドを実行するだけで OK です.
$ su
# make install
コンパイル or ダウンロードした mod_uploader.so を Apache をインストー ルしたディレクトリ以下にある modules ディレクトリにコピーし,Apache の設定ファイル (httpd.conf) に
LoadModule uploader_module modules/mod_uploader.so
を追加します.
次に,環境変数 APR_ICONV_PATH に,Apache をインストールしたディレク トリ以下にある bin\iconv ディレクトリへのパスを指定します.これが正 常に行われていないと,「文字コードの変換を行うコンバータが存在しませ ん.」というエラーが発生します.
設定は,Apache の設定ファイル(.htaccess は不可)に,以下のように記述 します.(* 印がついているものは必須) テンプレートは,tmpl ディレクトリに入っている view.htm, progress.htm,download.htm,thumbnail.htm,error.htm を利用してくだ さい.
<Location アップローダを設置する場所>
SetHandler uploader
Url アップローダの URL (RSS の生成に利用)
FileDirectory アップロードファイルを保存するディレクトリ *
ThumbDirectory サムネイル画像を保存するディレクトリ *
TmpDirectory 一時ファイルを保存するディレクトリ *
MaxFileSize 一回にアップロードできるファイルの最大サイズ(KB)
TotalFileSizeLimit ファイルの合計サイズの上限値(KB)
TotalFileNumberLimit ファイルの個数の上限値
PerPageItemNumber 1 ページあたりに表示するアイテム数
ViewTemplateFile トップページのテンプレートファイル *
ProgressTemplateFile アップロード状況表示画面のテンプレートファイル *
DownloadTemplateFile DL pass 入力画面のテンプレートファイル *
ThumbTemplateFile サムネイルページのテンプレートファイル *
ErrorTemplateFile エラーページのテンプレートファイル *
</Location>
http://foo/up に設置する場合の設定例は以下のようになります./css や /thumb の Alias は必須ではありません.テンプレートを書き換えたくない 場合に指定してみてください.(これはあくまでも例です.ディレクトリや ファイルのパスは環境よって違ってきます)
<Location /up>
SetHandler uploader
Url "http://acapulco.dyndns.org/up/"
FileDirectory "Z:/prog/Apache/Uploader/file"
ThumbDirectory "Z:/prog/Apache/Uploader/thumb"
TmpDirectory "Z:/prog/Apache/Uploader/tmp"
MaxFileSize 1024
TotalFileSizeLimit 10240
TotalFileNumberLimit 1000
PerPageItemNumber 20
ViewTemplateFile "Z:/prog/Apache/Uploader/tmpl/view.htm"
ProgressTemplateFile "Z:/prog/Apache/Uploader/tmpl/progress.htm"
DownloadTemplateFile "Z:/prog/Apache/Uploader/tmpl/download.htm"
ThumbTemplateFile "Z:/prog/Apache/Uploader/tmpl/thumbnail.htm"
ErrorTemplateFile "Z:/prog/Apache/Uploader/tmpl/error.htm"
</Location>
Alias /css "Z:/prog/Apache/Uploader/css"
Alias /thumb "Z:/prog/Apache/Uploader/thumb"
Windows でサムネイル作成機能を使う場合,環境変数 PATH に, ImageMagick をインストールしたディレクトリ (CORE_RL_*.dll があるディ レクトリ) が含まれていることを確認してください.
Apache を普通に起動すれば OK です.設置した場所にブラウザでアクセス してみましょう.
UNIX 系 OS の場合,次のコマンドを入力して, http://127.0.0.1:8080/up/ にアクセスすることですることでインストール せずに動作を確認できます.(他のホストからアクセスする場合は, 127.0.0.1 の部分を適当に置き換えてください)
$ su
# make start
停止は,次のようにします.
# make stop
mod_uploader を実行するのに必要な環境が整っていない場合に表示されます. この場合,Apache のエラーログに,「[mod_uploader] Exception: ....」 のような出力が出ていると思います.メッセージを参考にしながら設定を見 直して見て下さい. また,メッセージが「Exception: \xc0\xdf\xc4\xea\xcf\xb3\xa4\xec\xa4\xac\xa4\xa2\xa4\xea\xa4\xde\xa4\xb9\xa1\xa5 」のように文字化けしている場合,Exception 以降の文字列をコピーして, コンソールで以下のようなコマンドを実行してみてください.日本語のエラー メッセージを読むことができます.
$ perl -e 'print "\xc0\xdf\xc4\xea\xcf\xb3\xa4\xec\xa4\xac\xa4\xa2\xa4\xea\xa4\xde\xa4\xb9\xa1\xa5", "\n"'
設定漏れがあります.
下記のように,LD_PRELOAD に libunwind.so.5 を指定しながら Apache を 起動したら症状が改善する場合,icc のインストール方法に問題があります. もう一度設定を見直してください.
$ LD_PRELOAD=/opt/intel_cc_81/lib/libunwind.so.5 "Apache の起動コマンド"
Comming soon...
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 は,巨大なファイルのアップロードにもわずかなメモリしか 消費しません. それに対してアップローダの多くは,アップロードされたデータを一旦全て メモリに入れて処理するため,アップロードにはファイルサイズに比例した サイズのメモリを消費してしまいます.
http://acapulco.dyndns.org/mod_uploader/api/
プログラムの作成にあたってお世話になったツールを紹介します.