Webコンサルタントの愚痴とアジャイル,生産性向上,Trac,オープンソースなどの与太話
ローカルではXAMPP使っていて、Eclipseから色々叩いているのだが、嵌ったのでメモ。
XAMPPに同封されているPHP4は--with-opensslでコンパイルされていないので、以下のようなコーディングは利用できない。
こいつを実行すると
てな感じでエラーになる。
これの何が不便かっていうと、PHP4の案件で、ユニットテストを使うときにSimpleTestのWebTestCaseがSSLで動作してくれない。くそ。
PHP4の寿命は今年8月だった気がするので、そろそろ真面目に捨てろ、ということだな。
mod_security対応強化の結果
こんな感じで拒否した件数調査。
# cat /var/log/httpd/error_log | grep "[error]" | grep "[Wed Mar 21" | grep mod_security | wc -l
3/21(水)
1473
3/20(火) 639
3/19(月) 1671
ということで結構良好。但しあまりに数が多いせいで、サーバに負担が掛かっている。Zope+Ploneだからなぁ。
ブラックリストを作ったり色々しているが、トラックバックスパムが減らない。かなり鬱陶しい。
ということでmod_securityで対応することにした。
上記のサイトからmod_securityのポリシーファイルをダウンロードして設置すればよい。
構成は以下の通りだ。
| 設定ファイル | 役割 |
|---|---|
| apache2-rules.conf | 一般的なアプリケーション用のルール |
| badips.conf | 拒否するIPアドレスリスト(足りない分は自分で追加すること) |
| blacklist.conf | コメントスパム防止 |
| blacklist2.conf | 経由したプロクシやリクエスト元による拒否 |
| exclude.conf | SQLインジェクションの拒否 |
| jitp.conf | 色々なアプリケーションの脆弱性への対応 |
| proxy.conf | Proxyとして利用されることを拒否する |
| recons.conf | よくわからん・・・ |
| rootkits.conf | rootkitによるアクセスを拒否する |
| rules.conf | アプリケーション保護のルール |
| useragents.conf | 変なユーザエージェントをはじく(存在しないもの、一文字違いとか) |
これで、スパムが減ると良いねぇ。
このサイトは他のサーバからnagiosで監視しているのだが、どうにもこうにもパフォーマンスが悪いゆえか、誤検知が多い。ちょっと原因調査とパフォーマンスチューニング。
とりあえず現状。
そんな感じな現状で、apache2についているabで性能測定してみた。同一URLに150回リクエストを投げてみた。
まずは、
完全静的ページ → とりあえず秒間93リクエストなので、普通に結構さばける。
Requests per second: 93.31 [#/sec] (mean) Time per request: 10.717 [ms] (mean) Time per request: 10.717 [ms] (mean, across all concurrent requests)
apache+PHP+MySQLのscuttle部分 → MySQLも絡むのでこんなもんか。
Requests per second: 6.62 [#/sec] (mean) Time per request: 151.161 [ms] (mean) Time per request: 151.161 [ms] (mean, across all concurrent requests)
次にPloneの/contents/apacheの一覧部分。 → PloneでCacheFuでキャッシュしているので早い。
Requests per second: 27.81 [#/sec] (mean) Time per request: 35.960 [ms] (mean) Time per request: 35.960 [ms] (mean, across all concurrent requests)
次にPlone+COREblogで、個別のエントリページ。 → なんかえらい遅い。
Requests per second: 1.07 [#/sec] (mean) Time per request: 930.939 [ms] (mean) Time per request: 930.939 [ms] (mean, across all concurrent requests)
次にPlone+COREblogのトップページ → さらに遅い。
Requests per second: 0.57 [#/sec] (mean) Time per request:1751.151 [ms] (mean) Time per request: 1751.151 [ms] (mean, across all concurrent requests)
ということで、ボトルネックはCOREblogにあるような気がするのだが、どうなんだろうか???
最近妙にWebの応答が悪ぃなーー、なんて思ってたのでチューニングした。
問題は、以前にFC3からFC4にした際にapacheの設定がごっそり変わったこと。
FCのapache(2.0.54)の場合、/etc/httpd/conf.d以下にモジュール毎の設定ファイルをじゃぶじゃぶ入れているのだが、これがFC4のタイミングでめちゃめちゃ増えてしまった。しかも微妙にセキュリティ上問題になるようなconfファイルが平然とぶち込まれてた。
なんで、とりあえず、
コメントアウトした内容は以下の通り。かなりの箇所である。
結果、当社比で3割ほど性能向上した模様。ついでに
HostnameLookups Off
にして、当初の性能の倍程度を実現。あとはKeep-Alive関係いぢれば吉。
#そんだけやってもZope使っているとサイトが遅い罠・・・・。
とりあえずこの記事が256番目の記事らしい。なんと縁起の良い数字であることかw
単なるメモ。
analogでは、langファイルやドメインファイル(jpedom.tabとかjpsdom.tabとか)の指定をanalog.cfgに書くわけだが、サンプルのcfgではlang/jpedom.tabというように相対パス指定で記載されている。
これが実はハマリの要素で、cronなどでanalogを動作させると、カレントディレクトリがanalogのバイナリとは異なる場所になるので、きちんと設定が反映されないことになる。
したがってanalog.cfgの外部ファイルの読み込みは、すべて絶対パス指定で書いておいた方が無難。
DNSFILEとかの指定も同様。
mod_rewriteの大ハマリだが、冷静にやったら解決。ちなみにRewriteRuleだけではできない。
答えは以下のとおり。
肝はRewriteCondを使用してQUERY_STRINGのマッチをかけて、その値をRewriteRuleに引き渡す。
その1点のみ。上記の例だと、
/cgi-bin/from.cgiへのリクエストで
QUERY_STRINGがx=[0~9の数字6桁+00]で構成されているときは
/to.phpに転送する。そのときにはパラメータはy=に数字頭6桁を指定する
ということになる。
あーーーーー、すっきり。
apacheのmod_rewriteにえらくはまってます。会社で2時間程度いじったけど解決せず。そのあといままで家の鯖で試してた。
こんなに熱くなったの久々(w
はまっている内容(やりたいこと)は/cgi-bin/from.cgi?x=1にアクセスが来たら、/to.php?y=1に振り替える
んでもって書いたRewriteRuleがこれだが、うまくいかん
RewriteRule ^/cgi-bin/from.cgi?x=([0-9]{1})$?? /to.php?y=$1 [R,L]
はまってそうなポイントとして
日記 PHP オープンソース Linux Trac Perl wordpress フリーソフト 自宅サーバ phpMyFaq Plugin Delphi 書評 apache eclipse Subversion Firefox セキュリティ アジャイル プラグイン mojavi Ruby Ajax/Web2.0 CakePHP Zope フレームワーク サーバ 文字化け scuttle OpenVZ 自宅 phpBB 仮想化 翻訳・日本語化 CMS ApacheDS LDAP 生産性向上 hacks CodeIgniter Agile・生産性向上 レビュー XAMPP Excel SBM 言語ファイル 修正 Ajax taskfreak mod_security ダウンロード HTML::FillInForm 情報共有 格安 レンタル アンケート API PhpScheduleIt 翻訳