Apacheのモジュールを試す

サーバー運用がかなり厳しいので寄付をしてくれる人がいたらこちら
メインPCもボロボロになってきたので、ついにほしいものリスト公開

Apache2.4に適当に対応させたパッチ置き場はこちら
とりあえずコンパイルと起動までは確認してあります。(mod_uploaderはうpと削除まで確認)
mod_perlは適当パッチなので、Fedoraのrpmに入ってるパッチ使った方が幸せになれるかもしれません。

自己責任で使って下しあ

ということで、いろいろと遊んでみますか

mod_uploader

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

最強?とうわさのあぷろだを試してみます。
なぜかサムネイルが動かなかったのが原因判明したので覚書です
サムネイルにはImageMagicを使用しますが、
ソースから入ってるとなにやら足りないものがあるらしく、
Apacheが起動時にエラーをはいて起動しなくなります。
ということで/usr/local/libにlibWand.so.10がある場合は
ソースをuninstallした後に削除しましょう?

Fedora18にしたらコンパイルでこけるわコンパイルできるようになったらなんかライブラリ?がおかしいわで
起動しなくなったので、どこかのエロい人が直してくれるまで放置決定でござる。

必要環境

公式HPより抜粋
httpdはrpmではなく今回はソースでやってますので無視します。

  1. gcc-c++
  2. make
  3. libtool
  4. httpd-devel
  5. ImageMagick-c++-devel
  6. freetype-devel
  7. fontconfig-devel

インストール

cd /usr/local/src
wget http://osdn.dl.sourceforge.jp/mod-uploader/37519/mod_uploader-3.1.1.tgz
tar zxvf mod_uploader-3.1.1.tgz
cd mod_uploader-3.1.1
./configure --enable-thumbnail/usr/local/apache2にapacheがインストールされてれば自動的に必要なパスを検索してくれます
#それ以外の場合は--with-apxs2=/path/to/bin/apxs2 --with-apctl2=/path/to/bin/apachectlとか指定しましょう。
make
make -f GNUmakefile.apache install

これで必要なモジュールがインストールされました
次に設定です。

/usr/local/apache2/conf/httpd.conf
以下を追加+""で囲まれたパスは適宜変更

<Location /up>
	AddDefaultCharset EUC-JP
	<IfModule "mod_rewrite.c">
		RewriteEngine Off
	</IfModule>
		SetHandler uploader
		#UTF-8なOSだと日付が文字化けするので英語にしておきます
		SetEnv LC_LANG en_US
		UploaderBaseUrl "http://www.example.org/up"
		UploaderDataDirectory "/usr/local/apache2/htdocs/test/data"
		UploaderFileDirectory "/usr/local/apache2/htdocs/test/file"
		UploaderThumbDirectory "/usr/local/apache2/htdocs/test/thumb"
		UploaderTempDirectory "/usr/local/apache2/htdocs/test/temp"
		UploaderTotalFileSizeLimit 10485760
		UploaderTotalFileNumberLimit 200
		UploaderFileSizeLimit 1048576
		UploaderPerPageItemNumber 30
		UploaderIndexViewTemplate "/usr/local/apache2/htdocs/tmpl/index.htm"
		UploaderInfoViewTemplate "/usr/local/apache2/htdocs/tmpl/info.htm"
		UploaderProgressViewTemplate "/usr/local/apache2/htdocs/tmpl/progress.htm"
		UploaderDownloadViewTemplate "/usr/local/apache2/htdocs/tmpl/download.htm"
		UploaderThumbnailViewTemplate "/usr/local/apache2/htdocs/tmpl/thumbnail.htm"
		UploaderAdminViewTemplate "/usr/local/apache2/htdocs/tmpl/admin.htm"
		UploaderErrorViewTemplate "/usr/local/apache2/htdocs/tmpl/error.htm"
</Location>
<Location /up/admin>
	Order Deny,Allow
	Deny From All
	Allow From 127.0.0.1
</Location>
Alias /up_img "/usr/local/apache2/htdocs/img"
Alias /up_css "/usr/local/apache2/htdocs/css"
Alias /up_js "/usr/local/apache2/htdocs/js

テンプレートファイルとかをコピー

cd /usr/local/src/mod_uploader-3.1.1
cp -r css img js tmpl /usr/local/apache2/htdocs
cd /usr/local/apache2/htdocs
mkdir test
cd test
mkdir data file thumb temp
cd /usr/local/apache/htdocs
chown -R apache. test css img js tmpl
chmod 777 test/*

後はapacheを再起動してエラーが出ていなければ
http://www.example.org/up/へアクセスするとあぷろだのページが表示されます。

テンプレートは編集可能ですが、編集後httpdのリロードが必要です。

mod_evasive

うちのような貧弱なサイトにはあまり関係ないですが、
ダウンロードサイトとかで自動ツールによる大量アクセスを防いだり
DoSアタックを防ぐためにこのモジュールをつかいます。

旧(つながらない)http://www.zdziarski.com/projects/mod_evasive/

http://www.zdziarski.com/blog/?page_id=442

インストール

cd /usr/local/src
wget http://www.zdziarski.com/blog/wp-content/uploads/2010/02/mod_evasive_1.10.1.tar.gz
tar zxvf mod_evasive_1.10.1.tar.gz
cd mod_evasive
/usr/local/apache2/bin/apxs -cia mod_evasive20.c

これでインストールは完了で設定はこんな感じで

/usr/local/apache2/conf/httpd.conf

<IfModule "mod_evasive20.c">
	DOSHashTableSize 3097
	DOSPageCount 2
	DOSSiteCount 50
	DOSPageInterval 1
	DOSSiteInterval 1
	DOSBlockingPeriod 10
</IfModule>

説明

  • DOSPageCount ページのアクセス回数でDOSPageIntervalと組み合わせる
  • DOSSiteCount サイトへのリクエスト回数でDOSSiteIntervalと組み合わせる
  • DOSPageInterval この秒数以内でDOSPageCount回数以上アクセスがあるとだめ
  • DOSSiteInterval この秒数以内でDOSSiteCount回数以上リクエストがあるとだめ

上の例では1秒間に2回以上の同一ページへのアクセスがあるか
50回以上のリクエストが送られてきたときに
10秒間アクセスを拒否する動作をします。
オプションで通知とかができたりするそうです。

DOSLogDir "/usr/local/apache2/logs/mod_evasive"
DOSEmailNotify webmaster@example.com
DOSSystemCommand "su - someuser -c '/sbin/... %s ...'"
DOSWhitelist 127.0.0.*

ホワイトリストはワイルドカードで指定が可能だそうです。

mod_bw

bwとはBandWidthの頭文字で帯域制御を可能にするモジュールです。
うちのような貧弱な(ry

http://ivn.cl/

インストール

cd /usr/local/src
wget http://ivn.cl/files/source/mod_bw-0.92.tgz
mkdir mod_bw
cd mod_bw
tar zxvf ../mod_bw-0.92.tgz
#.htaccessでの制御はできないようなのでパッチを
#あてると使えるようになります(使うなら自己責任で使ってください)0.8wget http://ftp.momo-i.org/pub/www/modules/mod_bw_dothtaccess.patch
#patch -p0 < mod_bw_dothtaccess.patch
#0.92wget http://ftp.momo-i.org/pub/www/modules/mod_bw_dothtaccess-0.92.patch.gz
#gzip -dc mod_bw_dothtaccess-0.92.patch.gz | patch -p1
/usr/local/apache2/bin/apxs -cia mod_bw.c

これでインストールが終わったので以下のように設定をします。

<Directory /path/to/dir>
	BandWidthModule On
	ForceBandWidthModule On
	LargeFileLimit .wmv 1000 1200
	BandWidth 192.168.0.0/255.255.255.0 8000
	BandWidth 192.168.1.0/24 8000
	BandWidth crawl.example.com 8000
	BandWidth "u:^Mozilla/5(.*)" 500
	BandWidth all 10240
</Directory>

IP/Subnetとかドメインで設定できるようです。
この場合は/path/to/dir配下のwmvの拡張子で1000KB以上のファイルは1200B/s
また指定したアドレスに対しては8000KB/sに制限
指定したユーザエージェントでは500KB/sに制限
それ以外のファイルは10240B/sに帯域制限します。
ここではbit/secでは無くByte/secになるので注意してください。

mod_layout

これは1.3・2.0・2.2の各バージョン用に
ダウンロードできるようになってるようです。
各ページに一律のヘッダやフッタを挿入できるらしい?

インストール

cd /usr/local/src
wget http://download.tangent.org/mod_layout-5.1.tar.gz
tar zxvf mod_layout-5.1.tar.gz
cd mod_layout-5.1
vi Makefile
#以下を適宜修正
################
APXS=/usr/local/apache2/bin/apxs
APACHECTL=/usr/local/apache2/bin/apachectl
################
make
make install

内容がこれもあまりわかっていない?ので
とりあえず後回しで

Layout
LayoutHeader
LayoutFooter
LayoutAppend
LayoutAppendHeader
LayoutAppendFooter
LayoutIgnoreURI
LayoutIgnoreHeaderURI
LayoutIgnoreHTTPHeaderURI
LayoutIgnoreFooterURI
LayoutComment
LayoutDisplayOriginal
LayoutTimeFormat
LayoutHTTPHeader
LayoutIgnoreTag
LayoutIgnoreTagFooter
LayoutIgnoreTagHeader
LayoutPostAsync
LayoutBeginTag
LayoutEndTag
LayoutReplaceTags
LayoutNotes

mod_qos

QoSが出来るモジュールだそうです。
公式を見る限りかなり柔軟な設定が出来るようなので遊んでみます。

http://mod-qos.sourceforge.net/

公式ではhttpdのソースにコピーしてコンパイルしろって書いてありますが
個別にコンパイル可能なので、それでやります。

mod_parpってのを使うと応答ボディデータの制限とフィルタリングが可能だそうです?
Request body data limitation and filtering

http://parp.sourceforge.net/

マニュアル(永遠に準備中)

cd /usr/local/src/
wget http://jaist.dl.sourceforge.net/sourceforge/mod-qos/mod_qos-9.57.tar.gz
tar zxvf mod_qos-9.57.tar.gz
cd mod_qos-9.57/apache2
/usr/local/apache2/bin/apxs -cia mod_qos.c
#8.xからmod_qos_controlはなくなったようです
/usr/local/apache2/bin/apxs -cia mod_qos_control.c
cd ../tools
./configure
make
make install

9.57では./configureが利用可能なので、以下は不要

mkdir /usr/local/apache/conf/qsfilter
vi qsfilter/Makefile
以下をApacheのソースディレクトリに修正
--------------例--------------
top_srcdir = /usr/local/src/httpd-2.2.15
top_builddir = /usr/local/src/httpd-2.2.15
srcdir = /usr/local/src/httpd-2.2.15/support
builddir = /usr/local/src/httpd-2.2.15/support
VPATH = /usr/local/src/httpd-2.2.15/support
------------------------------
make
cp qsfilter2 /usr/local/bin

Fedora12ではOpensslが1.0.0になっているのでqsfilter2のmakeでエラーがでます。
よく分かってないんですが、グーグル先生に聞いてみたところ
1550行目あたりのSTACKを_STACKにしたらコンパイルが通るようになりました。
他に直し方があれば教えてください?

ついでにmod_parpも

cd /usr/local/src<br>
wget http://jaist.dl.sourceforge.net/sourceforge/parp/mod_parp-0.9-src.tar.gz<br>
tar zxvf mod_parp-0.9-src.tar.gz<br>
cd mod_parp-0.9/apache2<br>
/usr/local/apache2/bin/apxs -cia mod_parp.c

設定はいつか。。。('A`)

mod_cband

このモジュールも帯域制御系の1種で、主にホスティングサーバ向けの物と言っても良いかと。

公式: http://codee.pl/cband.html

mod_authn_otp

これはワンタイムパスワード認証を提供してくれるモジュールだそうです。

公式: http://code.google.com/p/mod-authn-otp/

コメントを追加

Plain text

  • HTMLタグは利用できません。
  • ウェブページアドレスとメールアドレスは、自動的にハイパーリンクに変換されます。
  • 行と段落は自動的に折り返されます。
CAPTCHA
また変更しました
Fill in the blank.