ウェブ制作 - あぷろだ設置メモ~mod_uploader~
mod_uploaderに関して
mod_uploaderはApache/lighttpdの追加モジュール。軽いらしい。モジュール形式なので軽そうなイメージはあったが、アップロードファイルのテンポラリとしてメモリを必要としないのは素晴らしい。
インストール
ImageMagick-c++-develとhttpd-develが必要なのでyumで追加。
# yum install ImageMagick-c++-devel # yum install httpd-devel
ソースファイルのダウンロード。
$ wget http://iij.dl.sourceforge.jp/mod-uploader/26249/mod_uploader-2.4 .9.tgz $ gzip -dc mod_uploader-2.4.9.tgz | tar xvf - $ cd mod_uploader-2.4.9
コンパイルとインストール。configureオプションは空コメントとサムネイル生成を有効、Pentium Dに最適化(無意味かも)。
$ ./configure --enable-thumbnail --enable-empty-comment --with-march = pentiumD $ make apache-module $ su # make -f GNUmakefile.apache install
これでmod_uploader.soが組み込まれたらしい。
初期設定
続いてApacheの設定変更。
# vi /etc/httpd/conf.d/virtualhost.conf
<VirtualHost *:80>
ServerName b-area.org
DocumentRoot /home/b-area/html
ErrorLog /home/b-area/logs/error_log
CustomLog /home/b-area/logs/access_log combined
<Directory /home/b-area/html>
AllowOverRide All
Options Includes ExecCGI NoIndexes
</Directory>
<Location /uploader>
SetHandler uploader
</Location>
<Location /uploader/admin>
Order Deny,Allow
Deny From All
Allow From 127.0.0.1
</Location>
UploaderBaseUrl http://b-area.org/uploader
UploaderDataDirectory /home/b-area/html/uploader/data
UploaderFileDirectory /home/b-area/html/uploader/files
UploaderThumbDirectory /home/b-area/html/uploader/thumb
UploaderTempDirectory /home/b-area/html/uploader/tmp
UploaderTotalFileSizeLimit 100000000
UploaderTotalFileNumberLimit 9999
UploaderFileSizeLimit 10000000
UploaderPerPageItemNumber 66
UploaderIndexViewTemplate /home/b-area/html/uploader/tmpl/index.htm
UploaderProgressViewTemplate /home/b-area/html/uploader/tmpl/progress.htm
UploaderDownloadViewTemplate /home/b-area/html/uploader/tmpl/download.htm
UploaderThumbnailViewTemplate /home/b-area/html/uploader/tmpl/thumbnail.htm
UploaderAdminViewTemplate /home/b-area/html/uploader/tmpl/admin.htm
UploaderErrorViewTemplate /home/b-area/html/uploader/tmpl/error.htm
Alias /up_img "/home/b-area/html/uploader/img"
Alias /up_css "/home/b-area/html/uploader/css"
Alias /up_js "/home/b-area/html/uploader/js"
</VirtualHost>
ダウンローダー対策の強化
ver3系ではもともとmod_limitipconnのように同一IP当りのセッション数を制限することができるようだ(これは重要)。設定を変えるにはconfigureのあと、mod_uploader_config.hをいぢる。
# vi mod_uploader-3.1.*/include/mod_uploader_config.h #define DLD_MAX_SESSION_COUNT 128 最大セッション数 #define DLD_MAX_SESSION_COUNT_PER_IP 3 1IPあたりの同時最大セッション数
なお、mod_uploaderは接続上限に達したエージェントに対してはで503 Service Unavailableを返す。んまあそれが実際正しい回答ではあるのだが、 ダウンローダによっては503を受け取ると延々とリトライを繰り返すものもある。これでは本末転倒なので、404 Not Foundを返すようにソースをいぢってみる。
# vi mod_limitipconn.c
/* return 503 */
return HTTP_SERVICE_UNAVAILABLE;
} else {
return OK;
}
これを
/* return 503 */
/* return HTTP_SERVICE_UNAVAILABLE; */
/* return 404 */
return HTTP_NOT_FOUND;
} else {
return OK;
}
としてからコンパイルすることで404を返すようになる。403にしたきゃHTTP_FORBIDDEN、410にしたきゃHTTP_GONE。んまあ404が無難だろう。
ダウンローダ対策をとるのは訪問者への嫌がらせじゃないんだからさあ、なぜ?てことを理解して多重セッションとか際限ないリトライとかはまじやめてくれ。あんまりしつこいと管理側が嫌になって閉鎖しちゃうよ。
んでmake&install。念のため断わっておくけどコンパイルにおける#はコメントアウトじゃないよ(CSSと同じ/*~*/を使う)。configureオプションで設定できるかまでは調べてない。
補記
- Ver2系ではテンプレートを変更した場合httpdの再起動が必要になるが、
restart ではなくgraceful を使うようにする。 - 転送進捗表示のJavaScriptを有効の際、転送中ブラウザが非常に重くなるときがある。速度が出ないときに顕著。さらにこの状態でベーシック認証などのダイアログを表示すると転送終了までブラウザがフリーズする(IE6)。