正確にはMojolicious::Liteだけど、ついにWAF ( Web Application Framework) に手を出し始めた。
社内のWebサービスを、当面はApacheでの運用を続けたいので、CGIで動かせることが必須だった。で、ずっとMojoliciousはCGIでは動作しないと勘違いしていて、WAF全般に手を出せなかったんだけど、それは誤解で、MojoliciousでもApache/CGI を拡張子変えるだけで使えるというのを知った。
Perl WAF 挫折の遍歴
まえplack (PSGI?)を使おうとして、それをcgiとして動作させようとしたけど、それができなかったということと、MojoliciousはPerlのバージョンが5.10.1以上じゃないと使えなくて、本番環境が5.8だったので、Mojoliciousは諦めざるを得なかったというのと2つの要因があって、その2つがごっちゃになった結果、MojoliciousはCGIでは動かせないという誤解をしていたのではないかと思う。
実際、PSGIの仕組みはCGIをサポートしているので、plack (PSGIというべきか?)はCGIで動くはずなんだが、きっとオレが書いたコードがだめだったんだろうけど、しばらく試行錯誤してCGIでplacl/PSGIが動かせなかったので自分はまだそのレベルに達していないんだというので挫折。(もういちどトライしてみようかな・・・)
Amon2を試したこともあったんだけど、使い方がわからず、やはり挫折。
MojoliciousはPerl 5.8では動かせないと知って挫折。
そういう経緯があって自分にはWAFはまだ早いんだー!と手が出せずに涙を飲んでおりました。
plackとかAmon2とかMojoliciousとか、あまりドキュメント多くないし、自分みたいWAFの知識が乏しい人間にフレンドリーな記事も少ないので、もっと増やしてほしいです。
本番環境のPerlをアップグレードできた
前の記事 に書いたけど、念願の本番環境のPerlをアップグレードできたというのが大きい。
これで既存のApacheのまま、Perlのバージョンを自在に変えられるぜ。
Mojolicious は CGI で動かせるよと言ってもらえた
ずっとMojolicious は CGI で動かせないと思い込んでたけど、そしたら 木本さんがそうじゃないと言ってくれたのが転機になった。
いままでずっと、一人でコード書いてて、頼りはPerl関連の書籍とWebの情報だけで、そうやって、自分の誤解をピンポイントに解いてもらえるような機会がこれまでなかった。ゼロプロやっててよかった。木本さんありがとうございます。
わかってなかったこと&わかったこと
- ApacheとCGIとPerl は別物(それは以前もわかっていたんだけど、その理解の精度が低かった)
- Apacheのオルタナティブとして、nginxとかlightttpdとかがある
- つまりWebサーバとしての機能をもっているものがApacheでそれはApache以外には担えないわけではない
- perlで書かれたplackはApacheのオルタネティブになる
- plackはPerl製のWebサーバ、PSGIは仕様
- MojoliciousだとMorboがオルタナティブ
- モダンなWAFはみんな独自のWebサーバを内蔵している
- Apacheは非永続化環境
- plackやMorboなどの場合は永続化環境でPerlを実行できる