Amon2をCGIで動かす
何気にアクセス解析を確認してると「Amon2 cgi」というキーワードで当サイトに訪問されてる方がいるようで、そいえばPSGI対応WAF(今回の場合Amon2)をCGIで動かすにはどうすれば良いのだろう?と興味を持ったので調べてみました。
#!/usr/bin/perl use strict; use warnings; use Plack::Loader; my $app = Plack::Util::load_psgi('/home/someone/MyApp/app.psgi'); Plack::Loader->auto->run($app); 1;
これをとりあえず app.cgi としてCGI実行可能なディレクトリに保存して(もちろんCGIなのでパーミッションも0755とか0705とか実行可能な設定で)、ブラウザからアクセスするとCGIがPSGIを経由してAmon2のapp.psgiを呼び出して実行してくれます。
例えば、
- サーバはlocalhost
- /home/someone直下に amon2-setup.pl MyApp でプロジェクト作成
- app.cgiは/home/someone/public_htmlに設置
というケースで、http://localhost/~someone/app.cgi にアクセスするとAmon2が生成する File Not Found ページが表示されます。あれ?(笑)
これはMyApp::Web::Dispatcherを確認してみると気づくのですが、トップのサンプルページはプロジェクトを作成した直後でMyApp::Web::Dispatcherに手を付けていない状態だと、
any '/' => sub { my ($c) = @_; return $c->render('index.tt'); };
ということになってて、最後に / が必要です。これでめでたく plackup app.psgi
を稼働させて http://localhost:5000/ へアクセスした場合と同じサンプルページが表示できます。