end0tknr's kipple - web写経開発

太宰府天満宮の狛犬って、妙にカワイイ

PSGI/PlackなAmon2 (ver.6.10)をapache2.2 + mod_perl2環境に組み込む

(おさらい)amon2単体で起動

$ /usr/local/bin/perl ./script/helmfan2-server -host colinux.a4.jp

で起動することで、次のurlへアクセスできます
http://colinux.a4.jp:5000/smarthelm/graph/style/yearly

(おさらい?)plackup経由で起動

次のようなplackupコマンドで起動しても、先程と同じurlにアクセスできます

$ plackup -a script/helmfan2-server --host colinux.a4.jp

(本題)apache2.2 + mod_perl2環境に組み込む

httpd.confに次のように記載することでapache2.2 + mod_perl2環境に組み込むことができます。
※「PerlSetVar psgi_app 〜」で指定しているscriptは、「amon2-setup.pl --flavor=Basic 〜」によるスケルトン作成時に自動生成されるamon2サーバの起動scriptです。
amon2自体には認証機能がない為、このような構成にすることでapache側でユーザ認証を行うことができます。

<Location / >
#    AllowOverride All
#    Order allow,deny
#    Allow from all

#    AuthType BASIC
#    AuthUserFile /home/endo/dev/htpasswd
#    AuthName "COLINUX MEMBERS"
#    require valid-user

    SetHandler perl-script
    PerlHandler Plack::Handler::Apache2
    PerlSetVar psgi_app /home/endo/dev/HelmFan2/script/helmfan2-server
</Location>

(おまけ)apache2.2リバースプロキシ+amon2の構成

webサーバ?を2個も起動することになりますが、httpd.confに次のように記載することも可能です。
(apache+tomcatな構成に似ていますね)

<Location /smarthelm >
 ProxyPass         http://127.0.0.1:5000/smarthelm
 ProxyPassReverse  http://127.0.0.1:5000/smarthelm

 AuthType BASIC
 AuthUserFile /home/endo/dev/htpasswd
 AuthName "COLINUX MEMBERS"
 require valid-user

# RewriteEngine On
# RewriteCond %{LA-U:REMOTE_USER} (.+)
# RewriteRule . - [E=RU:%1,NS]
# RequestHeader add X-Forwarded-User %{RU}e
</Location>

<Directory "/home/endo/dev/HelmFan2/static">
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>
Alias /static /home/endo/dev/HelmFan2/static

apacheリバースプロキシの構成を使用する場合、バックエンドのamon2は「-host」を指定せず、次のように起動します

$ /usr/local/bin/perl ./script/helmfan2-server