apache2へ bw_modの組み込み
sorry Japanese only
PAGE作成日 2005/05/07
最終更新日 2006/08/17
page size = Mbyte


関連するページ apache2.2へ mod_bw0.7の組み込み 許せないクローラー ファイルの内容を表示する 見て欲しくない人を拒否する設定 .htaccessを使った個別に拒否する方法 検索エンジンの拒否をする設定

このページは apache2.0系に bw_mod ver0.6を installしたときに作成したページです
apache2.2系に mod_bw ver0.7を入れたときのページも参考にしてください

以前から apache1には合っても apache2に無かった mod_bandwidth、mod_throttleと同じ事を行える moduleを発見しました。
帯域の制限を行えるモジュールです

参考にさせていただいたページ パソコンおやじさんの Apache2.0系で帯域制限をしたいページ

Apache Modules - Ivn Softwareさんより
bw_mod v0.6を downloadします
(.clというのはどこでしょうか、えらく遠いところから downloadしているようで、readmeのページなどまともに開けません。無理するのはやめましょう)

解凍します
[root]# tar zxvf bw_mod-0.6.tgz
bw_mod-0.6/
bw_mod-0.6/LICENSE
bw_mod-0.6/bin/
bw_mod-0.6/bin/bw_mod-2.0.53.dll
bw_mod-0.6/bw_mod-0.6.txt
bw_mod-0.6/APACHE2-LICENSE
bw_mod-0.6/bw_mod-0.6.c

apxsを使いコンパイルします
自分で configure/makeを行い apache2を入れている人は、デストリビューションで最初から入っていた /usr/sbin/apxsを使うとエラー出まくると思います。
自分で make installしているディレクトリーの /usr/local/apache2/bin/apxsを使いましょう。
[root]# /usr/local/apache2/bin/apxs -i -a -c bw_mod-0.6.c
/usr/local/apache2/build/libtool --silent --mode=compile gcc -prefer-pic  -DAP_HAVE_DESIGNATED_INITIALIZER -DLINUX=2 -D_
REENTRANT -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -D_SVID_SOURCE -D_GNU_SOURCE -g -O2 -pthread -I/usr/local/apache2/include  -
I/usr/local/apache2/include   -I/usr/local/apache2/include   -c -o bw_mod-0.6.lo bw_mod-0.6.c && touch bw_mod-0.6.slo
/usr/local/apache2/build/libtool --silent --mode=link gcc -o bw_mod-0.6.la  -rpath /usr/local/apache2/modules -module -a
void-version    bw_mod-0.6.lo
/usr/local/apache2/build/instdso.sh SH_LIBTOOL='/usr/local/apache2/build/libtool' bw_mod-0.6.la /usr/local/apache2/modul
es
/usr/local/apache2/build/libtool --mode=install cp bw_mod-0.6.la /usr/local/apache2/modules/
cp .libs/bw_mod-0.6.so /usr/local/apache2/modules/bw_mod-0.6.so
cp .libs/bw_mod-0.6.lai /usr/local/apache2/modules/bw_mod-0.6.la
cp .libs/bw_mod-0.6.a /usr/local/apache2/modules/bw_mod-0.6.a
ranlib /usr/local/apache2/modules/bw_mod-0.6.a
chmod 644 /usr/local/apache2/modules/bw_mod-0.6.a
PATH="$PATH:/sbin" ldconfig -n /usr/local/apache2/modules
----------------------------------------------------------------------
Libraries have been installed in:
   /usr/local/apache2/modules

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the `LD_RUN_PATH' environment variable
     during linking
   - use the `-Wl,--rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
chmod 755 /usr/local/apache2/modules/bw_mod-0.6.so
[activating module `bw' in /usr/local/apache2/conf/httpd.conf]

私の httpd.confには、以下の所へ追加されました。

# Change this to Listen on specific IP addresses as shown below to
# prevent Apache from glomming onto all bound IP addresses (0.0.0.0)
#
#Listen 12.34.56.78:80

Listen 80
Listen 8080

#
# Dynamic Shared Object (DSO) Support
#
# To be able to use the functionality of a module which was built as a DSO you
# have to place corresponding `LoadModule' lines at this location so the
# directives contained in it are actually available _before_ they are used.
# Statically compiled modules (those listed by `httpd -l') do not need
# to be loaded here.
#
# Example:
# LoadModule foo_module modules/mod_foo.so
LoadModule php4_module        modules/libphp4.so
LoadModule bw_module          modules/bw_mod-0.6.so            <===== ここ!
#
#
# ExtendedStatus controls whether Apache will generate "full" status
# information (ExtendedStatus On) or just basic information (ExtendedStatus
# Off) when the "server-status" handler is called. The default is Off.
#
ExtendedStatus On

### Section 2: 'Main' server configuration
#

書き換える前のファイルは httpd.conf.bakで保存されていました。

次に、httpd.conf内へ、自分の好きなように制限を書き込みます。
私は以下のように書き込みました。
<Directory "/home/localhost/douga">
BandWidthModule On
BandWidth 202.217.35.0/255.255.255.224 8000
BandWidth search.re2.yahoo.com 8000
BandWidth public.alexa.com 8000
BandWidth 216.143.234.135 8000
</Directory>
dougaディレクトリーの全ファイルに対し、特定のサイト(動画も downしようとするクローラー)
への転送速度を 8000byte/sec = 64kbit/secに制限します。
実験したところ、上記書き方だと、多重ダウンを行うとそのサイトの合計転送速度が 8000byte/sec
へ制限されるようです。

おまけで以下の文も追加しておきました。
LargeFileLimit .tst 1000 1200
.tstの拡張子が付いた 1000kbyte以上のファイルは 1200byte/secに転送速度を抑える。

http://miya0.dyndns.org/douga/900k.tst 速度制限無し
http://miya0.dyndns.org/douga/1100k.tst 1200byte/secに速度制限付き

上の 900k.tstは、転送速度制限がかかってないので、あなたのサイトと私のサイト間の最高速度。
下のファイルは 1200byte/sec 9600bit/secへ転送速度の制限がかかっていると思います。
昔のアナログモデムの転送速度をお楽しみ下さい・・ 9600ボーです。
右クリック、保存で確認するのが良いと思います。

じれったいんで、キャンセル押して中断してください。


21672
戻る