ウェブ制作 - あぷろだ設置メモ~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)。