love.ngx_mrubyを使ってみよう以前、Apache用モジュールのmod_mrubyとmod_cgroupを試しましたが、前回の日記でも書いていたように、ブログの環境をNginx+HHVMにしようかな〜と思ってるので、ngx_mruby!を触っとこうと思います。インストール手順はMod_mrubyと少し異なり、ngx_mrubyをmakeして、できあがったモジュールをadd-moduleして〜の、Nginxをリビルドして〜のという流れになるようです。過去に、と言っても随分と過去ですが、Nginxもソースからインストールしたりした事もあったかとは思いますが、頭からはすっかりと消去されているようで、ちょっとちんぷんかんぷんだっふんだ。今テストしてる環境ではもちろんaptからNginxをインストールしているので、今回は付属しているbuild.shを使って、スクリプトにNginxのDLからビルドまで一緒にやってもらえる手順を利用します。Gitから落としてきて、updateなどなど、中には色々とファイルが用意されてて、このバージョンのNginxが入ると思われる。nginx_versionNGINX_SRC_VER='nginx-1.9.3'気になる人はbuild.shの中身を見ながらやるといいかなと思います。install設定ファイルは、aptでインストールしたNginxのConfファイルを眺めながら、新しくインストールしたNginxのConfファイルに必要なところを付け足していく感じにしたんですが、なんとまぁそれで問題なく動いてくれました。当然ながら?Apacheよりもコンパイルも速いし気持ちいいす。ドキュメントルートには、もともとインストールしていたWordpressを指定。hhvmもインストールしていたものをincludeさせるようにしたらそのまま動いてくれました。設定ファイルも使えてオブジェクト志向〜って感じがして気持ちいいですね。ローカルのNginxに、ウェブサーバーのデータを全部移して既にテストはしているとこなのですが、全文表示でなおかつ数件分の記事が出してもサクサク動いています。今のサーバーでやると確実に重たいです。かなりのレスポンスの改善はやっぱり体感できるので、この環境をサーバーで動かすとすると、もっと速いでしょうからNginx+HHVMに変える方向へとさらに加速〜。濃厚になってきました。今回の本題であるmrubyのテストといきますか。Gitに置いてあるテストコードを動かしてみます。動いた!かなり端折っていますがwwちゃんと動きました。あとはDos_Detectorをがむばって作ってみるとか、SSLの環境も作らなきゃってとこでしょうか。それはまた今度やると。http://qiita.com/takeswim/items/d80dcf9865d06571cc5e終わろうかな〜と思ったけれど、もうちょいテストしておこう。GeoIpを使ってみます!GeoIPはこれからも色々と使い道が多そうなので要チェック。必要なパッケージをインストールします。geoip-database-contribはじめて使うので良く分かりませんがアップデートしときます。geoip-database-contrib_updateあとは手順通りにbuild_config.rbのコメントアウトを外して再ビルドします。'matsumoto-r/mruby-geoip'GeoIPを試すための簡易なコードを用意しました。geoip.time_zoneコネクトハンドラにアクセスして試してみますと、レスポンスが取れました!下のようにちゃんとデータが取れています。http://localhost/geoipJPAsia/Tokyo続いてはコネクションの情報から動的にフィルタリングしてみます。ここまではそこそこ順調だったもののしばらく試してみて上手く動かないぃぃぃ\(^o^)/な状態になってから知ったのが、nginx_stub_statusモジュールが必要なようでした。いうことで再ビルドします。build.shかなりしょぼいテストですけれども、ちゃんと動的に動いていることは確認できました。endendこんな風にとあるタイミングのところで503が返っているのは分かると思います。必死でやっとアクティブコネクトがしきい値を超えたっていうか1だけど、まぁちゃんと動いてます。503なんということでしょう。ある程度のことはできてしまいました。DoS対策はまだ煮詰める必要はありますが、ぼちぼち引っ越しの予定を立てますか。Takekenインターネット利用者のITリテラシーを向上しようという目的で生まれた、2次元キャラのたけけんです。サーバー弄りからプログラミングまで幅広く書いています。2.0このサイトはさくらのクラウドで動いています。ntopAndroidの開発でC++のコードを使うにはメール送信のリトライ(再送)について考えてみたmath.hをインクルードして数学関数を使う場合にgccだけでコンパイルできない本当の理由は??ビール酵母アレルギーだと!?Apacheのmod_proxyを使ってみるtcpdumpで中身をみてみよう。Comments【Ubuntu】UbuntuServerをコンソールからデスクトップ画面で操作する。さくらの新スタンダードプランのサーバーにRailsを入れて、Redmineをインストールした。