header image

Ryuzeeの他サイト

mixi Twitter Twitter

Categories

携帯対応

QRコード

RING

人気ブログランキング



新着記事

2008/01/18 00:37:53 PHP, apache none Comments
add Hatena Bookmark Tags: , , , ,

ローカルではXAMPP使っていて、Eclipseから色々叩いているのだが、嵌ったのでメモ。

XAMPPに同封されているPHP4は--with-opensslでコンパイルされていないので、以下のようなコーディングは利用できない。

$ret = fsockopen("ssl://192.168.1.61", 443, $errno, $errstr, 30);

こいつを実行すると

Warning: fsockopen() [function.fsockopen]: no SSL support in this build in C:\dev\xampp\htdocs\test.php on line 5
Warning: fsockopen() [function.fsockopen]: unable to connect to 192.168.1.61:443 in C:\dev\xampp\htdocs\test.php on line 5

てな感じでエラーになる。

これの何が不便かっていうと、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で対応することにした。

Got Root : mod_security rules

上記のサイトから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 変なユーザエージェントをはじく(存在しないもの、一文字違いとか)

これで、スパムが減ると良いねぇ。

2006/11/18 18:16:40 Linux, apache none Comments
add Hatena Bookmark Tags: ,

このサイトは他のサーバからnagiosで監視しているのだが、どうにもこうにもパフォーマンスが悪いゆえか、誤検知が多い。ちょっと原因調査とパフォーマンスチューニング。

とりあえず現状。

  • このサイトはフロントにapache2でバックエンドにZope+Ploneの構成にしていて、/contents/だけmod_rewriteを使ってZope側に転送。
  • Plone側では、CacheFuを使ってキャッシュに乗るようにしている。
  • Psyco(なんて読むんだ?)を使ってPython自体を高速化しようと思ったが、いまいち手順に自信がないのでやってない。
  • たぶんsquidを入れると大幅に高速化されそうな気がするが、このサイト以外に同じ鯖で動いているサービスに影響が出そうでペンディング。
  • apacheでは不要なモジュールの読み込みをかたっぱしから外しているので、もうどうしようもない。

そんな感じな現状で、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ファイルが平然とぶち込まれてた。

なんで、とりあえず、

  • /etc/httpd/conf.dから不要設定ファイルを全て削除
  • その上で、httpd.confを開き、LoadModuleしている箇所をかなりコメントアウト
  • apacheを再起動。

コメントアウトした内容は以下の通り。かなりの箇所である。

##LoadModule auth_anon_module modules/mod_auth_anon.so
##LoadModule auth_dbm_module modules/mod_auth_dbm.so
##LoadModule ldap_module modules/mod_ldap.so
##LoadModule auth_ldap_module modules/mod_auth_ldap.so
##LoadModule cern_meta_module modules/mod_cern_meta.so
##LoadModule expires_module modules/mod_expires.so
##LoadModule deflate_module modules/mod_deflate.so
##LoadModule dav_module modules/mod_dav.so
##LoadModule asis_module modules/mod_asis.so
##LoadModule info_module modules/mod_info.so
##LoadModule dav_fs_module modules/mod_dav_fs.so
##LoadModule imap_module modules/mod_imap.so
##LoadModule actions_module modules/mod_actions.so
##LoadModule speling_module modules/mod_speling.so
##LoadModule userdir_module modules/mod_userdir.so
##LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
##LoadModule cache_module modules/mod_cache.so
##LoadModule disk_cache_module modules/mod_disk_cache.so
##LoadModule file_cache_module modules/mod_file_cache.so
##LoadModule mem_cache_module modules/mod_mem_cache.so

結果、当社比で3割ほど性能向上した模様。ついでに

HostnameLookups Off

にして、当初の性能の倍程度を実現。あとはKeep-Alive関係いぢれば吉。

#そんだけやってもZope使っているとサイトが遅い罠・・・・。

2006/08/29 00:00:00 Linux, apache none Comments
add Hatena Bookmark Tags: ,

とりあえずこの記事が256番目の記事らしい。なんと縁起の良い数字であることかw

単なるメモ。

analogでは、langファイルやドメインファイル(jpedom.tabとかjpsdom.tabとか)の指定をanalog.cfgに書くわけだが、サンプルのcfgではlang/jpedom.tabというように相対パス指定で記載されている。

これが実はハマリの要素で、cronなどでanalogを動作させると、カレントディレクトリがanalogのバイナリとは異なる場所になるので、きちんと設定が反映されないことになる。

したがってanalog.cfgの外部ファイルの読み込みは、すべて絶対パス指定で書いておいた方が無難。

DNSFILEとかの指定も同様。

2006/08/19 23:28:19 apache none Comments
add Hatena Bookmark Tags: ,

mod_rewriteの大ハマリだが、冷静にやったら解決。ちなみにRewriteRuleだけではできない。

答えは以下のとおり。

RewriteCond %{SCRIPT_FILENAME} ^/cgi-bin/from.cgi
RewriteCond %{QUERY_STRING} ^x=([0-9]{6})([0]{2})$
RewriteRule ^(.*)$ /to.php?y=%1 [R]

肝はRewriteCondを使用してQUERY_STRINGのマッチをかけて、その値をRewriteRuleに引き渡す。

その1点のみ。上記の例だと、

/cgi-bin/from.cgiへのリクエストで

QUERY_STRINGがx=[0~9の数字6桁+00]で構成されているときは

/to.phpに転送する。そのときにはパラメータはy=に数字頭6桁を指定する

ということになる。

あーーーーー、すっきり。

2006/08/18 01:44:03 apache none Comments
add Hatena Bookmark Tags:

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]

はまってそうなポイントとして

  • 変換前URLに?が含まれている。ちなみにでエスケープしてみたけど変わらない。
  • RewriteBaseも設定してみたりしたが効果はない
  • ?以降がやばそうってことでfrom.cgi(.*)とすると$1に何も値が入ってこない。なぜ?

 

add to hatena hatena.comment (0) add to del.icio.us (0) add to livedoor.clip (0) add to Yahoo!Bookmark (0) Total: 0