mod_perl   Perl CGI                fonfun            (OGATA Tetsuji)      Twitter: @xtetsuji          2011/7/16
(1/2)•              (OGATA Tetsuji)    Twitter: @xtetsuji• http://post.tetsuji.jp/ (           )•                     (   ...
(2/2)•                       (               …)•(         )        Perl                  30• JavaScript / Shell Script(bas...
(1/2)•               fonfun(           )    http://www.fonfun.co.jp/    •        http://rmail.jp/•               g15    ht...
(2/2)•              fonfun(       :                    )    •   1999        (      :                 )    •   2003       4...
••   YAPC::Asia2010•                     (@onagatani)•          Hokkaido.pm•
Agenda
Agenda• I. mod_perl• II. mod_perl         Apache• III. Apache2&mod_perl2 HTTP• IV.            - qpsmtpd & nginx...•
I. mod_perl
Apache+mod_perl?•             ※1       WAF PSGI/Plack    Apache                                 ※1. WAF=Web Application Fr...
Apache+mod_perl?• Apache+mod_perl+WAF       mod_perl                        … • •
Apache+mod_perl?•   Apache•   Linux    Apache mod_perl                  (   )
Apache+mod_perl?•       Apache•   Apache    2011 7          65.86%    (2011    6      64.88%)    (http://news.netcraft.com...
Apache+mod_perl?•               WAF•    Apache Perl CGI(or PHP)•                             ...
mod_perl• Apache1.3 → mod_perl1• Apache2.x → mod_perl2• 1 2 mod_perl•             mod_perl1.99(   )•   ※    Apache1 deprec...
mod_perl• mod_perl1 first public release: 1996/3/25  (http://perl.apache.org/dist/mod_perl-1.0-current/Changes   )• mod_per...
Perl CGI                             # ↓Apache Configurations• mod_perl1   AddHandler perl-script .pl              PerlHand...
hello.pl
mod_perl1 Hello1.pm••                        ($r)        handler•   http://hello.example.jp/         Content-Type: text/pl...
mod_perl1 Hello1.pm   # apache1.3 configuration   <VirtualHost A.B.C.D:80>      ServerName hello.example.jp      SetHandler...
mod_perl1 Hello1.pm
mod_perl2 Hello2.pm••   mod_perl1•
mod_perl2 Hello2.pm   # apache2.x configuration   <VirtualHost A.B.C.D:80>      ServerName hello.example.jp      SetHandler...
mod_perl2 Hello2.pm• PerlHandler → PerlResponseHandler•      Hello2.pm
mod_perl2 Hello2.pm
mod_perl2 Hello2.pm• mod_perl1   mod_perl        Apache::• mod_perl2   mod_perl        Apache2::    ModPerl:: APR::       ...
Hello                        ...•                CGI   WAF        HTTP•          ...
II. mod_perl   Apache
mod_perl        Apache•                   HTTP• mod_perl   HTTP
Apache• MPM                Prefork•                           (prefork)•            HTTP•                   HTTP       ...
Apache•••          URL               DocumentRoot•                    (BASIC         )•   MIME•                (          ...
Apache••    →Apache Module mod_xxxxxx)• Apache Module                  Perl                    mod_perl•        mod_perl
Apache/mod_perl•                       :       (   )••   Apache/mod_perl 1       2•   Apache/mod_perl 2
:mod_perl1       PerlChildInitHandler   PerlPostReadRequestHandler           PerlInitHandler          PerlTransHandler    ...
:mod_perl1  ※ Practical mod_perl
:mod_perl2        PerlChildInitHandler    PerlPostReadRequestHandler            PerlInitHandler           PerlTransHandler...
:mod_perl2  ※ Practical mod_perl
•
: mod_rewrite•                  mod_rewrite•       URL•    (          )
: mod_rewrite• mod_rewrite                        URL                  PerlTransHandler•(            )                    ...
: mod_rewrite# required “RewriteURL.pm”<VirtualHost A.B.C.D:80>   ServerName hello.example.jp   PerlTransHandler RewriteUR...
: mod_rewrite
: mod_rewrite•• sub handler { my $r = shift; ... }•
••
• PerlPostReadRequestHandler                    DDoS        (   )    • return DONE; # cut off!•          PerlAccessHandler...
• PerlTransHandler• mod_rewrite         PerlTransHandler• URL               (return REDIRECT;   )
• Perl{Authen,Authz}Handler  PHP  Cookie            Perl• Access,Authen,Authz      3   3A
•               HTML•          User-Agent         *.html    Content-Type    text/html   application/xhtml+xml•   PerlTypeH...
•                                   HTML              </body>                      (ry• PerlHandler / PerlResponseHandler•...
•    i         HTML          HTML    SBM                     (ry•        PerlHandler / PerlResponseHandler
Kepler/Apache/ConvertEmoji.pm
• HTTP                      / PerlHandler /    PerlResponseHandler             ...• PerlLogHandler   $r     HTTP•         DB
•    mod_perl HTTP
III. Apache2&mod_perl2        HTTP
Apache2&mod_perl2             HTTP•                    mod_perl         HTTP Request/Response    • $r : Apache (mod_perl1)...
Apache2/mod_perl2•   Apache2       HTTP    •   ServerLifeCycle    •   Protocol / Connection    •   Filter    •   Thread•  ...
Apache2/mod_perl2Connection•       Connection• (HTTP         )Protocol• Connection          HTTP• Apache2         : mod_ssl
Connection     PerlPreConnectionHandler   PerlProcessConnectionHandler                          ※ Practical mod_perl
Connection•2          HTTP• PerlPreConnectionHandler • Apache• PerlProcessConnectionHandler •             SMTP
Apache2 SMTP•• Postfix pipe    Perl   I/O                fork•     DB
Apache2 SMTP•                      : 2 (load balancing)    •                  SMTP•       Apache2 SMTP         Postfix     ...
Apache2 SMTP•            SMTP•                   Postfix•   Apache2 SMTP         1    Postfix
mod_perl2PerlProcessConnectionHandler••             $r         $c (Apache2::Connection)•   sub handler { my $c = shift; .....
PerlProcessConnectionHandler          SMTPListen 10025 gmfilterAcceptFilter gmfilter none<VirtualHost 127.0.0.1:10025> Trans...
PerlProcessConnectionHandler          SMTP            ARM/G4/Apache2/GMFilter.pm   1:
PerlProcessConnectionHandler          SMTP•    use• $c            use Apache2::Connection• Socket I/O                APR::...
PerlProcessConnectionHandler          SMTP            ARM/G4/Apache2/GMFilter.pm   2:handler
PerlProcessConnectionHandler          SMTP• Socket I/O•           Prefork   chdir()   OK
PerlProcessConnectionHandler          SMTP•        Postfix pipe                                 Perl        DB•        :   ...
IV.qpsmtpd & nginx...
• Apache2 Connection         SMTP•••                      qpsmtpd    Perl   SMTP
qpsmtpd• http://smtpd.develooper.com/•
qpsmtpd• Perl   daemon  (       POE     )• qpsmtpd   Engine•
qpsmtpd• qpsmtpd                 Engine=Transport • pipe (CGI like) • fork-server • prefork-server • Apache (Apache::Qpsmt...
qpsmtpd• Apache::Qpsmtpd•
qpsmtpd• Danga::Socket    qpsmtpd•         Postfix pipe                        qpsmtpd
qpsmtpd•               Apache         SMTP    qpsmtpd(Apache::Qpsmtpd)•
nginx• http://nginx.org/••              stable• FastCGI
nginxEmbeddedPerlModule        ※ http://wiki.nginx.org/EmbeddedPerlModule
nginxEmbeddedPerlModule        ※ http://wiki.nginx.org/EmbeddedPerlModule
nginx    EmbeddedPerlModule•     mod_perl1•                  mod_perl1•
nginx        EmbeddedPerlModule• worker(single threaded process)                              I/O• (mod_perl          )
nginx      EmbeddedPerlModule•• mod_perl1• C10K  Apache(mod_perl)
•         mod_perl                             (   )•   mod_perl•   Apache2/mod_perl2 Connection          HTTP            ...
• Filter • mod_perl1       Filter   Apache::Filter, Apache::OutputChain • mod_perl2                Filter   Perl{Input,Out...
•                                       mod_perl                       3    • Practical mod_perl      (Orelly 2003; http:/...
• Apache C API(mod_*.c) • Apache            (                      )    (Oreilly 2000; C API mod_perl                     ...
•   WEB+DB PRESS Vol.33 (2006/6)      Recent Perl World          2        mod_perl 2.0•         Net::DNS                  ...
mod_perl温故知新 〜Perl CGIの高速化からメールサーバまで〜
mod_perl温故知新 〜Perl CGIの高速化からメールサーバまで〜
mod_perl温故知新 〜Perl CGIの高速化からメールサーバまで〜
Upcoming SlideShare
Loading in...5
×

mod_perl温故知新 〜Perl CGIの高速化からメールサーバまで〜

10,844

Published on

Published in: Technology
0 Comments
8 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
10,844
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
0
Comments
0
Likes
8
Embeds 0
No embeds

No notes for slide
  • &amp;#x3088;&amp;#x308D;&amp;#x3057;&amp;#x304F;&amp;#x304A;&amp;#x9858;&amp;#x3044;&amp;#x3057;&amp;#x307E;&amp;#x3059;\n
  • \n
  • &amp;#x4ECA;&amp;#x56DE;&amp;#x306E;&amp;#x69D8;&amp;#x306A;&amp;#x30AB;&amp;#x30F3;&amp;#x30D5;&amp;#x30A1;&amp;#x30EC;&amp;#x30F3;&amp;#x30B9;&amp;#x3084;&amp;#x52C9;&amp;#x5F37;&amp;#x4F1A;&amp;#x306B;&amp;#x51FA;&amp;#x305F;&amp;#x611F;&amp;#x60F3;&amp;#x3092;&amp;#x767A;&amp;#x8868;&amp;#x3059;&amp;#x308B;&amp;#x305F;&amp;#x3081;&amp;#x306B;&amp;#x30D6;&amp;#x30ED;&amp;#x30B0;&amp;#x3092;&amp;#x4F5C;&amp;#x3063;&amp;#x3066;&amp;#x307F;&amp;#x307E;&amp;#x3057;&amp;#x305F;\n
  • \n
  • (&amp;#x3053;&amp;#x3053;&amp;#x3067;&amp;#x306F;&amp;#x5927;&amp;#x5B66;&amp;#x304B;&amp;#x3089;&amp;#x5165;&amp;#x793E;&amp;#x307E;&amp;#x3067;&amp;#x306E;&amp;#x3053;&amp;#x3068;&amp;#x3092;&amp;#x8AAC;&amp;#x660E;&amp;#x3057;&amp;#x3066;&amp;#x3001;&amp;#x4ED6;&amp;#x306E;&amp;#x8AAC;&amp;#x660E;&amp;#x306F;&amp;#x5F8C;&amp;#x306B;&amp;#x56DE;&amp;#x3059;)\nG15&amp;#x306F;OSS&amp;#x6D3B;&amp;#x52D5;&amp;#x304C;&amp;#x6D3B;&amp;#x767A;&amp;#x306A;&amp;#x4EBA;&amp;#x304C;&amp;#x96C6;&amp;#x307E;&amp;#x3063;&amp;#x3066;&amp;#x3001;&amp;#x4E3B;&amp;#x306B;DebianJP&amp;#x306E;&amp;#x30DB;&amp;#x30B9;&amp;#x30C6;&amp;#x30A3;&amp;#x30F3;&amp;#x30B0;&amp;#x3092;&amp;#x30B5;&amp;#x30DD;&amp;#x30FC;&amp;#x30C8;&amp;#x3057;&amp;#x3066;&amp;#x3044;&amp;#x308B;&amp;#x7D44;&amp;#x7E54;\nfonfun&amp;#x3082;&amp;#x30B5;&amp;#x30FC;&amp;#x30D0;&amp;#x8CC7;&amp;#x6E90;&amp;#x3092;&amp;#x63D0;&amp;#x4F9B;&amp;#x3057;&amp;#x3066;&amp;#x3044;&amp;#x308B;&amp;#x7E4B;&amp;#x304C;&amp;#x308A;&amp;#x304C;&amp;#x3042;&amp;#x308A;&amp;#x307E;&amp;#x3059;\n
  • \n
  • &amp;#x793E;&amp;#x540D;&amp;#x5909;&amp;#x66F4;&amp;#x304B;&amp;#x3089;5&amp;#x5E74;&amp;#x307B;&amp;#x3069;&amp;#x7D4C;&amp;#x3064;&amp;#x304C;&amp;#x3001;&amp;#x30CD;&amp;#x30C3;&amp;#x30C8;&amp;#x30D3;&amp;#x30EC;&amp;#x30C3;&amp;#x30B8;&amp;#x306E;&amp;#x307B;&amp;#x3046;&amp;#x304C;&amp;#x901A;&amp;#x308A;&amp;#x304C;&amp;#x3088;&amp;#x3044;&amp;#x5834;&amp;#x5408;&amp;#x3082;&amp;#x3042;&amp;#x308B;(Debian&amp;#x95A2;&amp;#x9023;)\n&amp;#x30EA;&amp;#x30E2;&amp;#x30FC;&amp;#x30C8;&amp;#x30E1;&amp;#x30FC;&amp;#x30EB;&amp;#x306E;&amp;#x4E2D;&amp;#x8EAB;&amp;#x306F;&amp;#x3001;&amp;#x4ECA;&amp;#x3082;&amp;#x591A;&amp;#x304F;&amp;#x306F;&amp;#x30EC;&amp;#x30AC;&amp;#x30B7;&amp;#x30FC;\n&amp;#x7B2C;1&amp;#x4E16;&amp;#x4EE3;&amp;#x306F;&amp;#x30B5;&amp;#x30FC;&amp;#x30D0;1&amp;#x53F0;&amp;#x3002;Load Average3&amp;#x6841;&amp;#x3068;&amp;#x304B;&amp;#x5E73;&amp;#x6C17;\n&amp;#x4ED6;&amp;#x6848;&amp;#x4EF6;&amp;#x3067;WAF+DBIC+TT&amp;#x3084;&amp;#x3063;&amp;#x305F;&amp;#x3053;&amp;#x3068;&amp;#x3042;&amp;#x308B;&amp;#x304C;&amp;#x305D;&amp;#x306E;&amp;#x7A0B;&amp;#x5EA6;&amp;#x3067;&amp;#x3059;\n
  • &amp;#x30FB;YAPC::Asia2010&amp;#x306E;&amp;#x5730;&amp;#x57DF;pm&amp;#x306E;&amp;#x30BB;&amp;#x30C3;&amp;#x30B7;&amp;#x30E7;&amp;#x30F3;&amp;#x306F;&amp;#x3001;&amp;#x884C;&amp;#x3063;&amp;#x305F;&amp;#x3089;&amp;#x6E80;&amp;#x5E2D;&amp;#x3067;&amp;#x8074;&amp;#x3051;&amp;#x306A;&amp;#x304B;&amp;#x3063;&amp;#x305F;&amp;#x3067;&amp;#x3059;\n
  • \n
  • \n
  • \n
  • Plack&amp;#x3068;&amp;#x3044;&amp;#x3046;&amp;#x3088;&amp;#x308A;mod_perl&amp;#x306E;&amp;#x6319;&amp;#x52D5;&amp;#x304C;&amp;#x8907;&amp;#x96D1;\n
  • &amp;#x3053;&amp;#x308C;&amp;#x306F;&amp;#x534A;&amp;#x5E74;&amp;#x524D;&amp;#x306E;&amp;#x8A71;&amp;#x984C;\nYAPC::Asia2010&amp;#x3067;&amp;#x6620;&amp;#x753B;&amp;#x306E;&amp;#x3088;&amp;#x3046;&amp;#x306A;&amp;#x30CF;&amp;#x30C3;&amp;#x30AB;&amp;#x30FC;&amp;#x306B;&amp;#x306A;&amp;#x308A;&amp;#x305F;&amp;#x304B;&amp;#x3063;&amp;#x305F;&amp;#x65B9;\n&amp;#x5F15;&amp;#x7528;&amp;#x306E;&amp;#x8A31;&amp;#x53EF;&amp;#x306F;&amp;#x5F97;&amp;#x3066;&amp;#x3044;&amp;#x307E;&amp;#x305B;&amp;#x3093;&amp;#x304C;&amp;#x2026;\n&amp;#x958B;&amp;#x767A;&amp;#x304C;&amp;#x6D3B;&amp;#x767A;&amp;#x306A;Plack&amp;#x3060;&amp;#x304C;&amp;#x3001;&amp;#x307E;&amp;#x3060;&amp;#x300C;&amp;#x3053;&amp;#x306A;&amp;#x308C;&amp;#x3066;&amp;#x3044;&amp;#x306A;&amp;#x3044;&amp;#x300D;&amp;#x90E8;&amp;#x5206;&amp;#x3082;&amp;#x3042;&amp;#x308B;&amp;#x306E;&amp;#x304B;&amp;#x3082;&amp;#x3057;&amp;#x308C;&amp;#x307E;&amp;#x305B;&amp;#x3093;&amp;#x306D;\n&amp;#x307F;&amp;#x306A;&amp;#x3055;&amp;#x3093;&amp;#x304C;mod_perl2&amp;#x3067;&amp;#x305D;&amp;#x306E;&amp;#x30D0;&amp;#x30B0;&amp;#x3092;&amp;#x8E0F;&amp;#x3093;&amp;#x3067;&amp;#x30D0;&amp;#x30C3;&amp;#x30C9;&amp;#x30CE;&amp;#x30A6;&amp;#x30CF;&amp;#x30A6;&amp;#x3092;&amp;#x958B;&amp;#x62D3;&amp;#x3057;&amp;#x3066;&amp;#x3044;&amp;#x304F;&amp;#x53EF;&amp;#x80FD;&amp;#x6027;&amp;#x3082;\n
  • WAF&amp;#x3092;&amp;#x4ED6;&amp;#x306E;&amp;#x30A6;&amp;#x30A7;&amp;#x30D6;&amp;#x30B5;&amp;#x30FC;&amp;#x30D0;&amp;#x3067;&amp;#x52D5;&amp;#x4F5C;&amp;#x3055;&amp;#x305B;&amp;#x308C;&amp;#x3070;&amp;#x3088;&amp;#x3044;&amp;#x3068;&amp;#x3044;&amp;#x3046;&amp;#x4EBA;&amp;#x3082;&amp;#x3044;&amp;#x308B;&amp;#x3067;&amp;#x3057;&amp;#x3087;&amp;#x3046;&amp;#x304C;&amp;#x3001;Apache+mod_perl&amp;#x3067;&amp;#x52D5;&amp;#x4F5C;&amp;#x3055;&amp;#x305B;&amp;#x308B;&amp;#x30B1;&amp;#x30FC;&amp;#x30B9;&amp;#x304C;&amp;#x591A;&amp;#x3044;&amp;#x306E;&amp;#x3067;&amp;#x306F;&amp;#xFF1F;\nApache&amp;#x306E;&amp;#x30B7;&amp;#x30A7;&amp;#x30A2;&amp;#x306B;&amp;#x3064;&amp;#x3044;&amp;#x3066;&amp;#x5F8C;&amp;#x307B;&amp;#x3069;&amp;#x898B;&amp;#x3066;&amp;#x3044;&amp;#x304D;&amp;#x307E;&amp;#x3059;\n
  • \n
  • IIS&amp;#x98DF;&amp;#x3063;&amp;#x3066;&amp;#x6210;&amp;#x9577;&amp;#x4E2D;\n2009&amp;#x5E74;&amp;#x306E;&amp;#x304F;&amp;#x307C;&amp;#x307F;&amp;#x3068;Other&amp;#x304C;&amp;#x3088;&amp;#x304F;&amp;#x5206;&amp;#x304B;&amp;#x3089;&amp;#x306A;&amp;#x304B;&amp;#x3063;&amp;#x305F;(lighttpd&amp;#x3067;&amp;#x306F;&amp;#x306A;&amp;#x3044;&amp;#x307F;&amp;#x305F;&amp;#x3044;)\nnginx&amp;#x306E;&amp;#x4F38;&amp;#x3073;&amp;#x304C;&amp;#x9762;&amp;#x767D;&amp;#x3044;&amp;#x3067;&amp;#x3059;&amp;#x306D;\n
  • IIS&amp;#x98DF;&amp;#x3063;&amp;#x3066;&amp;#x6210;&amp;#x9577;&amp;#x4E2D;\n2009&amp;#x5E74;&amp;#x306E;&amp;#x304F;&amp;#x307C;&amp;#x307F;&amp;#x3068;Other&amp;#x304C;&amp;#x3088;&amp;#x304F;&amp;#x5206;&amp;#x304B;&amp;#x3089;&amp;#x306A;&amp;#x304B;&amp;#x3063;&amp;#x305F;(lighttpd&amp;#x3067;&amp;#x306F;&amp;#x306A;&amp;#x3044;&amp;#x307F;&amp;#x305F;&amp;#x3044;)\nnginx&amp;#x306E;&amp;#x4F38;&amp;#x3073;&amp;#x304C;&amp;#x9762;&amp;#x767D;&amp;#x3044;&amp;#x3067;&amp;#x3059;&amp;#x306D;\n
  • mod_perl&amp;#x3067;PHP&amp;#x30D7;&amp;#x30ED;&amp;#x30B0;&amp;#x30E9;&amp;#x30E0;&amp;#x3092;&amp;#x3044;&amp;#x3058;&amp;#x3089;&amp;#x305A;&amp;#x3068;&amp;#x3082;&amp;#x8A8D;&amp;#x8A3C;&amp;#x3092;&amp;#x5165;&amp;#x308C;&amp;#x308B;&amp;#x3053;&amp;#x3068;&amp;#x3059;&amp;#x3089;&amp;#x53EF;&amp;#x80FD;\nPerl CGI&amp;#x306E;&amp;#x30EC;&amp;#x30AC;&amp;#x30B7;&amp;#x30FC;&amp;#x30B3;&amp;#x30F3;&amp;#x30C6;&amp;#x30F3;&amp;#x30C4;&amp;#x3092;&amp;#x6E21;&amp;#x3055;&amp;#x308C;&amp;#x3066;&amp;#x3001;&amp;#x305D;&amp;#x308C;&amp;#x3092;mod_perl&amp;#x3067;&amp;#x52D5;&amp;#x4F5C;&amp;#x3055;&amp;#x305B;&amp;#x308B;&amp;#x30DE;&amp;#x30A4;&amp;#x30B0;&amp;#x30EC;&amp;#x30FC;&amp;#x30B7;&amp;#x30E7;&amp;#x30F3;&amp;#x80FD;&amp;#x529B;&amp;#x304C;&amp;#x3042;&amp;#x308B;&amp;#x3060;&amp;#x3051;&amp;#x3067;&amp;#x3082;&amp;#x826F;&amp;#x3044;&amp;#x5834;&amp;#x5408;&amp;#x304C;&amp;#x3042;&amp;#x308B;&amp;#x306E;&amp;#x3067;&amp;#x306F;&amp;#xFF1F;\n
  • [&amp;#x5F8C;&amp;#x8FF0;]&amp;#x6587;&amp;#x6CD5;&amp;#x306E;&amp;#x9055;&amp;#x3044;&amp;#x3068;&amp;#x3044;&amp;#x3046;&amp;#x304B;&amp;#x3001;mod_perl1&amp;#x306E;&amp;#x5DE8;&amp;#x5927;&amp;#x306A;&amp;#x30AF;&amp;#x30E9;&amp;#x30B9;&amp;#x69CB;&amp;#x9020;&amp;#x304C;mod_perl2&amp;#x3067;&amp;#x5C0F;&amp;#x3055;&amp;#x304F;&amp;#x5206;&amp;#x5272;&amp;#x3055;&amp;#x308C;&amp;#x305F;\nmod_perl1.99&amp;#x306F;Apache2&amp;#x306E;&amp;#x30D9;&amp;#x30FC;&amp;#x30BF;&amp;#x7248;&amp;#x306E;&amp;#x6642;&amp;#x306B;&amp;#x4E00;&amp;#x77AC;&amp;#x4F5C;&amp;#x3089;&amp;#x308C;&amp;#x305F;mod_perl\nmod_perl1.99&amp;#x306F;mod_perl{1,2}&amp;#x306E;&amp;#x5408;&amp;#x3044;&amp;#x306E;&amp;#x5B50;&amp;#x306E;&amp;#x4E0D;&amp;#x601D;&amp;#x8B70;&amp;#x306A;&amp;#x6587;&amp;#x6CD5;&amp;#x3067;&amp;#x89E6;&amp;#x308B;&amp;#x306A;&amp;#x5371;&amp;#x967A;\n&amp;#x6614;&amp;#x3053;&amp;#x308C;&amp;#x306B;&amp;#x5F53;&amp;#x305F;&amp;#x3063;&amp;#x3066;&amp;#x9177;&amp;#x3044;&amp;#x76EE;&amp;#x306B;&amp;#x3042;&amp;#x3063;&amp;#x305F;&amp;#x3053;&amp;#x3068;&amp;#x304C;&amp;#x3042;&amp;#x308A;&amp;#x307E;&amp;#x3059;\nCatalyst::Engine&amp;#x3082;Plack&amp;#x3082;mod_perl1.99&amp;#x306B;&amp;#x306F;&amp;#x5BFE;&amp;#x5FDC;&amp;#x3057;&amp;#x3066;&amp;#x3044;&amp;#x306A;&amp;#x3044;&amp;#x306F;&amp;#x305A;\n
  • &amp;#x5F53;&amp;#x7136;Apache1&amp;#x3068;Apache2&amp;#x306E;&amp;#x6B74;&amp;#x53F2;&amp;#x306F;&amp;#x305D;&amp;#x308C;&amp;#x3088;&amp;#x308A;&amp;#x524D;\n2003&amp;#x5E74;&amp;#x306B;&amp;#x306F;Apache2/mod_perl2&amp;#x304C;&amp;#x51FA;&amp;#x3066;&amp;#x3044;&amp;#x305F;&amp;#x3051;&amp;#x3069;&amp;#x3001;&amp;#x5F53;&amp;#x6642;&amp;#x306F;&amp;#x307E;&amp;#x3060;&amp;#x3053;&amp;#x306A;&amp;#x308C;&amp;#x3066;&amp;#x3044;&amp;#x306A;&amp;#x304B;&amp;#x3063;&amp;#x305F;&amp;#x306E;&amp;#x3067;&amp;#x3001;2003&amp;#x5E74;&amp;#x306E;&amp;#x30EA;&amp;#x30E2;&amp;#x30FC;&amp;#x30C8;&amp;#x30E1;&amp;#x30FC;&amp;#x30EB;&amp;#x7B2C;4&amp;#x4E16;&amp;#x4EE3;&amp;#x306F;Apache1.3/mod_perl1&amp;#x3067;&amp;#x4F5C;&amp;#x6210;&amp;#x3057;&amp;#x307E;&amp;#x3057;&amp;#x305F;\n
  • &amp;#x66F8;&amp;#x3044;&amp;#x305F;&amp;#x3053;&amp;#x3068;&amp;#x304C;&amp;#x3042;&amp;#x308B;&amp;#x65B9;&amp;#x3082;&amp;#x591A;&amp;#x3044;&amp;#x3001;&amp;#x57FA;&amp;#x672C;&amp;#x3067;&amp;#x3059;&amp;#x306D;\n&amp;#x30B9;&amp;#x30DA;&amp;#x30FC;&amp;#x30B9;&amp;#x306E;&amp;#x90FD;&amp;#x5408;&amp;#x3067;&amp;#x6539;&amp;#x884C;&amp;#x3092; \\ &amp;#x3067;&amp;#x30A8;&amp;#x30B9;&amp;#x30B1;&amp;#x30FC;&amp;#x30D7;&amp;#x3057;&amp;#x3066;&amp;#x3044;&amp;#x307E;&amp;#x3059;&amp;#x3002;&amp;#x5B9F;&amp;#x969B;&amp;#x306B;&amp;#x3053;&amp;#x3046;&amp;#x3044;&amp;#x3046;&amp;#x66F8;&amp;#x304D;&amp;#x65B9;&amp;#x3082;&amp;#x3067;&amp;#x304D;&amp;#x307E;&amp;#x3059;\n
  • &amp;#x30FB;&amp;#x4ECA;&amp;#x56DE;&amp;#x306E;&amp;#x30D7;&amp;#x30EC;&amp;#x30BC;&amp;#x30F3;&amp;#x3044;&amp;#x308D;&amp;#x3044;&amp;#x308D;&amp;#x60A9;&amp;#x307F;&amp;#x307E;&amp;#x3057;&amp;#x305F;&amp;#x3002;&amp;#x8074;&amp;#x8B1B;&amp;#x8005;&amp;#x306E;&amp;#x30B9;&amp;#x30AD;&amp;#x30EB;&amp;#x306A;&amp;#x3069;&amp;#x3082;&amp;#x3002;\n&amp;#x30FB;&amp;#x5C0F;&amp;#x3055;&amp;#x3044;&amp;#x6587;&amp;#x5B57;&amp;#x3092;&amp;#x898B;&amp;#x305B;&amp;#x7D9A;&amp;#x3051;&amp;#x308B;&amp;#x306E;&amp;#x3082;&amp;#x6C17;&amp;#x304C;&amp;#x5F15;&amp;#x3051;&amp;#x308B;&amp;#x306E;&amp;#x3067;&amp;#x3001;&amp;#x4ECA;&amp;#x56DE;&amp;#x306F;&amp;#x30B3;&amp;#x30FC;&amp;#x30C9;&amp;#x306F;&amp;#x5927;&amp;#x80C6;&amp;#x306B;&amp;#x629C;&amp;#x7C8B;&amp;#x3057;&amp;#x3066;&amp;#x304A;&amp;#x9001;&amp;#x308A;&amp;#x3057;&amp;#x307E;&amp;#x3059;\n&amp;#x30FB;&amp;#x8074;&amp;#x8B1B;&amp;#x8005;&amp;#x306E;&amp;#x30B9;&amp;#x30AD;&amp;#x30EB;&amp;#x306F;&amp;#x4ECA;&amp;#x56DE;&amp;#x9AD8;&amp;#x3044;&amp;#x3067;&amp;#x3059;&amp;#x306D;&amp;#x2026;&amp;#x3002;&amp;#x524D;&amp;#x56DE; #4 &amp;#x306E;&amp;#x8CC7;&amp;#x6599;&amp;#x3092;&amp;#x898B;&amp;#x3066;&amp;#x3082;&amp;#x3046;&amp;#x3061;&amp;#x3087;&amp;#x3063;&amp;#x3068;&amp;#x521D;&amp;#x5FC3;&amp;#x8005;&amp;#x304C;&amp;#x6765;&amp;#x308B;&amp;#x3068;&amp;#x601D;&amp;#x3063;&amp;#x3066;&amp;#x3044;&amp;#x305F;&amp;#x7BC0;&amp;#x304C;&amp;#x3042;&amp;#x308A;&amp;#x307E;&amp;#x3059;\n&amp;#x30FB;&amp;#x5B9F;&amp;#x306F;CGI.pm&amp;#x306F;mod_perl&amp;#x5BFE;&amp;#x5FDC;&amp;#x3057;&amp;#x3066;&amp;#x3044;&amp;#x307E;&amp;#x3059;&amp;#x3002;&amp;#x8208;&amp;#x5473;&amp;#x304C;&amp;#x3042;&amp;#x308B;&amp;#x65B9;&amp;#x306F;&amp;#x30BD;&amp;#x30FC;&amp;#x30B9;&amp;#x30B3;&amp;#x30FC;&amp;#x30C9;&amp;#x3092;&amp;#x3002;\n
  • \n
  • \n
  • &amp;#x30FB;&amp;#x3056;&amp;#x3063;&amp;#x304F;&amp;#x308A;&amp;#x3044;&amp;#x308D;&amp;#x3044;&amp;#x308D;&amp;#x7701;&amp;#x7565;&amp;#x3057;&amp;#x3066;&amp;#x3044;&amp;#x307E;&amp;#x3059; (VirutualHost&amp;#x4EE5;&amp;#x524D;&amp;#x3001;Hello1.pm&amp;#x306B;&amp;#x30D1;&amp;#x30B9;&amp;#x901A;&amp;#x3059;&amp;#x306A;&amp;#x3069;)\n&amp;#x30FB;&amp;#x30D1;&amp;#x30B9;&amp;#x306E;&amp;#x901A;&amp;#x3057;&amp;#x65B9;&amp;#x306F;PerlSwitches&amp;#x65B9;&amp;#x6CD5;&amp;#x3082;&amp;#x3042;&amp;#x308A;&amp;#x307E;&amp;#x3059;&amp;#x304C;&amp;#x3001;@INC&amp;#x4EE5;&amp;#x4E0B;&amp;#x306B;&amp;#x914D;&amp;#x7F6E;&amp;#x3057;&amp;#x3066;&amp;#x3057;&amp;#x307E;&amp;#x3046;&amp;#x306E;&amp;#x304C;&amp;#x500B;&amp;#x4EBA;&amp;#x7684;&amp;#x306B;&amp;#x597D;&amp;#x304D;\n
  • \n
  • \n
  • \n
  • &amp;#x300C;&amp;#x660E;&amp;#x5FEB;&amp;#x306B;&amp;#x306A;&amp;#x3063;&amp;#x305F;&amp;#x300D;&amp;#x3068;&amp;#x3044;&amp;#x3046;&amp;#x3068;&amp;#x3053;&amp;#x308D;&amp;#x306F;&amp;#x5F8C;&amp;#x3067;&amp;#x5206;&amp;#x304B;&amp;#x308B;&amp;#x3068;&amp;#x3053;&amp;#x308D;&amp;#x3067;&amp;#x3059;\n
  • \n
  • &amp;#x5148;&amp;#x307B;&amp;#x3069;&amp;#x3082;&amp;#x3001;mod_perl2&amp;#x3067;&amp;#x306F;$r-&gt;print()&amp;#x306E;&amp;#x305F;&amp;#x3081;&amp;#x306B;Apache2::RequestIO&amp;#x3092;use&amp;#x3057;&amp;#x305F;&amp;#x308A;&amp;#x3057;&amp;#x3066;&amp;#x3044;&amp;#x307E;&amp;#x3057;&amp;#x305F;&amp;#x306D;\n
  • \n
  • \n
  • \n
  • &amp;#x30FB;worker&amp;#x3059;&amp;#x306A;&amp;#x308F;&amp;#x3061;&amp;#x30B9;&amp;#x30EC;&amp;#x30C3;&amp;#x30C9;&amp;#x3068;&amp;#x3044;&amp;#x3046;&amp;#x3082;&amp;#x306E;&amp;#x3082;&amp;#x3042;&amp;#x308A;&amp;#x307E;&amp;#x3059;&amp;#x304C;&amp;#x3001;&amp;#x30B9;&amp;#x30EC;&amp;#x30C3;&amp;#x30C9;&amp;#x30BB;&amp;#x30FC;&amp;#x30D5;&amp;#x306A;Perl&amp;#x30D7;&amp;#x30ED;&amp;#x30B0;&amp;#x30E9;&amp;#x30E0;(&amp;#x3044;&amp;#x3084;&amp;#x3001;Perl&amp;#x306B;&amp;#x9650;&amp;#x3089;&amp;#x305A;)&amp;#x306F;&amp;#x96E3;&amp;#x3057;&amp;#x3044;&amp;#x306E;&amp;#x3067;&amp;#x907F;&amp;#x3051;&amp;#x307E;&amp;#x3059;\n
  • \n
  • \n
  • &amp;#x30FB;&amp;#x5358;&amp;#x306B;&amp;#x300C;&amp;#x30D5;&amp;#x30A7;&amp;#x30FC;&amp;#x30BA;&amp;#x300D;&amp;#x3068;&amp;#x3082;&amp;#x8A00;&amp;#x3044;&amp;#x307E;&amp;#x3059;\n
  • &amp;#x30FB;&amp;#x7686;&amp;#x3055;&amp;#x3093;&amp;#x306E;&amp;#x8208;&amp;#x5473;&amp;#x306E;&amp;#x3042;&amp;#x308B;&amp;#x30EC;&amp;#x30B9;&amp;#x30DD;&amp;#x30F3;&amp;#x30B9;&amp;#x51E6;&amp;#x7406;&amp;#x3092;&amp;#x30AA;&amp;#x30EC;&amp;#x30F3;&amp;#x30B8;&amp;#x3067;&amp;#x5857;&amp;#x3063;&amp;#x3066;&amp;#x3044;&amp;#x307E;&amp;#x3059;\n&amp;#x30FB;PerlHandler Apache::Registry &amp;#x3068;&amp;#x306F;&amp;#x30B3;&amp;#x30EC;\n
  • &amp;#x30FB;&amp;#x51E6;&amp;#x7406;&amp;#x30D5;&amp;#x30A7;&amp;#x30FC;&amp;#x30BA;&amp;#x3092;&amp;#x4E00;&amp;#x5DE1;&amp;#x3057;&amp;#x305F;&amp;#x30EA;&amp;#x30AF;&amp;#x30A8;&amp;#x30B9;&amp;#x30C8;&amp;#x30B5;&amp;#x30A4;&amp;#x30AF;&amp;#x30EB;&amp;#x306E;&amp;#x56F3;&amp;#x3067;&amp;#x3059;\n&amp;#x30FB;&amp;#x3053;&amp;#x308C;&amp;#x306F;Apache1&amp;#x306E;&amp;#x56F3;&amp;#x306A;&amp;#x306E;&amp;#x3067;&amp;#x3001;Perl*Handler&amp;#x3067;&amp;#x306F;&amp;#x306A;&amp;#x304F;&amp;#x5F79;&amp;#x5272;&amp;#x540D;&amp;#x306E;&amp;#x82F1;&amp;#x5358;&amp;#x8A9E;&amp;#x306B;&amp;#x306A;&amp;#x3063;&amp;#x3066;&amp;#x3044;&amp;#x307E;&amp;#x3059;\n&amp;#x30FB;&amp;#x7C21;&amp;#x5358;&amp;#x306B;&amp;#x8AAD;&amp;#x307F;&amp;#x66FF;&amp;#x3048;&amp;#x3067;&amp;#x304D;&amp;#x307E;&amp;#x3059;\n&amp;#x30FB;&amp;#x5404;&amp;#x30D5;&amp;#x30A7;&amp;#x30FC;&amp;#x30BA;&amp;#x3067;&amp;#x30A8;&amp;#x30E9;&amp;#x30FC;&amp;#x3092;return&amp;#x3059;&amp;#x308B;&amp;#x3068;&amp;#x3001;&amp;#x305D;&amp;#x3053;&amp;#x3067;response&amp;#x3092;&amp;#x3082;&amp;#x3052;&amp;#x3063;&amp;#x3066;logging&amp;#x306B;&amp;#x884C;&amp;#x304D;&amp;#x307E;&amp;#x3059;\n
  • &amp;#x30FB;PerlHandler &amp;#x2192; PerlResponseHandler\n&amp;#x30FB;PerlResponseHandler ModPerl::Registry &amp;#x306F;&amp;#x3053;&amp;#x308C;&amp;#x3067;&amp;#x3059;\n&amp;#x30FB;PerlMapToStorageHandler &amp;#x306F; mod_perl1 &amp;#x306E; PerlTransHandler &amp;#x306E;&amp;#x4ED5;&amp;#x4E8B;&amp;#x3092;&amp;#x5206;&amp;#x696D;&amp;#x3059;&amp;#x308B;&amp;#x305F;&amp;#x3081;&amp;#x306B;&amp;#x51FA;&amp;#x6765;&amp;#x305F;&amp;#x65B0;&amp;#x3057;&amp;#x3044;&amp;#x30D5;&amp;#x30A7;&amp;#x30FC;&amp;#x30BA;\n
  • &amp;#x30FB;&amp;#x30D5;&amp;#x30A3;&amp;#x30EB;&amp;#x30BF;&amp;#x306B;&amp;#x3064;&amp;#x3044;&amp;#x3066;&amp;#x306F;&amp;#x5272;&amp;#x611B;&amp;#x3057;&amp;#x307E;&amp;#x3059;\n
  • \n
  • \n
  • \n
  • \n
  • &amp;#x30FB;Perl&amp;#x306A;&amp;#x3093;&amp;#x3067;mod_rewrite&amp;#x306B;&amp;#x5BB9;&amp;#x6613;&amp;#x306B;&amp;#x3067;&amp;#x304D;&amp;#x306A;&amp;#x3044;&amp;#x3053;&amp;#x3068;&amp;#x3001;DB&amp;#x3055;&amp;#x3048;&amp;#x5F15;&amp;#x3051;&amp;#x307E;&amp;#x3059;\n&amp;#x30FB;DECLINED&amp;#x3068;&amp;#x3044;&amp;#x3046;&amp;#x3082;&amp;#x306E;&amp;#x3082;&amp;#x3042;&amp;#x308A;&amp;#x307E;&amp;#x3059;&amp;#x3002;&amp;#x5F8C;&amp;#x7D9A;&amp;#x306E;&amp;#x51E6;&amp;#x7406;&amp;#x306E;&amp;#x305F;&amp;#x3081;&amp;#x3001;&amp;#x5B9F;&amp;#x969B;&amp;#x306F;&amp;#x4F55;&amp;#x3082;&amp;#x3059;&amp;#x308B;&amp;#x3053;&amp;#x3068;&amp;#x304C;&amp;#x306A;&amp;#x304B;&amp;#x3063;&amp;#x305F;&amp;#x3068;&amp;#x300C;&amp;#x5618;&amp;#x3092;&amp;#x4ED8;&amp;#x304F;&amp;#x300D;&amp;#x5E38;&amp;#x5957;&amp;#x53E5;&amp;#x3067;&amp;#x3059;\n
  • &amp;#x30FB;Perl&amp;#x306A;&amp;#x3093;&amp;#x3067;mod_rewrite&amp;#x306B;&amp;#x5BB9;&amp;#x6613;&amp;#x306B;&amp;#x3067;&amp;#x304D;&amp;#x306A;&amp;#x3044;&amp;#x3053;&amp;#x3068;&amp;#x3001;DB&amp;#x3055;&amp;#x3048;&amp;#x5F15;&amp;#x3051;&amp;#x307E;&amp;#x3059;\n&amp;#x30FB;DECLINED&amp;#x3068;&amp;#x3044;&amp;#x3046;&amp;#x3082;&amp;#x306E;&amp;#x3082;&amp;#x3042;&amp;#x308A;&amp;#x307E;&amp;#x3059;&amp;#x3002;&amp;#x5F8C;&amp;#x7D9A;&amp;#x306E;&amp;#x51E6;&amp;#x7406;&amp;#x306E;&amp;#x305F;&amp;#x3081;&amp;#x3001;&amp;#x5B9F;&amp;#x969B;&amp;#x306F;&amp;#x4F55;&amp;#x3082;&amp;#x3059;&amp;#x308B;&amp;#x3053;&amp;#x3068;&amp;#x304C;&amp;#x306A;&amp;#x304B;&amp;#x3063;&amp;#x305F;&amp;#x3068;&amp;#x300C;&amp;#x5618;&amp;#x3092;&amp;#x4ED8;&amp;#x304F;&amp;#x300D;&amp;#x5E38;&amp;#x5957;&amp;#x53E5;&amp;#x3067;&amp;#x3059;\n
  • \n
  • &amp;#x30FB;&amp;#x975E;&amp;#x5E38;&amp;#x306B;&amp;#x65E9;&amp;#x3044;&amp;#x30D5;&amp;#x30A7;&amp;#x30FC;&amp;#x30BA;&amp;#x3067;&amp;#x51E6;&amp;#x7406;&amp;#x3092;&amp;#x6253;&amp;#x3061;&amp;#x5207;&amp;#x308B;&amp;#x3068;&amp;#x3044;&amp;#x3046;&amp;#x3068;&amp;#x3053;&amp;#x308D;&amp;#x306B;&amp;#x918D;&amp;#x9190;&amp;#x5473;&amp;#x304C;&amp;#x3042;&amp;#x308B;\n&amp;#x30FB;&amp;#x3055;&amp;#x3089;&amp;#x306B; return DONE; &amp;#x3068;&amp;#x3044;&amp;#x3046;&amp;#x5B9A;&amp;#x6570;&amp;#x3092;&amp;#x8FD4;&amp;#x3057;&amp;#x3066;&amp;#x3084;&amp;#x308B;&amp;#x3068;request/response&amp;#x3092;&amp;#x4E00;&amp;#x5207;&amp;#x305B;&amp;#x305A;&amp;#x3001;HTTP&amp;#x306E;&amp;#x51E6;&amp;#x7406;&amp;#x3059;&amp;#x3089;&amp;#x3076;&amp;#x3063;&amp;#x305F;&amp;#x65AC;&amp;#x308B;&amp;#x3068;&amp;#x3044;&amp;#x3046;&amp;#x8352;&amp;#x696D;&amp;#x307E;&amp;#x3067;&amp;#x3067;&amp;#x304D;&amp;#x307E;&amp;#x3059;(&amp;#x3084;&amp;#x308A;&amp;#x307E;&amp;#x3057;&amp;#x305F;)\n&amp;#x30FB;&amp;#x5F0A;&amp;#x793E;&amp;#x306E;&amp;#x30B1;&amp;#x30FC;&amp;#x30B9;&amp;#x3067;&amp;#x306F;&amp;#x3001;&amp;#x30A4;&amp;#x30F3;&amp;#x30D5;&amp;#x30E9;&amp;#x62C5;&amp;#x5F53;&amp;#x8005;&amp;#x306E;&amp;#x6E96;&amp;#x5099;&amp;#x304C;&amp;#x6574;&amp;#x3044;&amp;#x6B21;&amp;#x7B2C;iptables&amp;#x3067;&amp;#x906E;&amp;#x65AD;&amp;#x3057;&amp;#x307E;&amp;#x3057;&amp;#x305F;\n
  • \n
  • &amp;#x30FB;DB&amp;#x30A2;&amp;#x30AF;&amp;#x30BB;&amp;#x30B9;&amp;#x3060;&amp;#x3063;&amp;#x3066;&amp;#x51FA;&amp;#x6765;&amp;#x3061;&amp;#x3083;&amp;#x3046;\n&amp;#x30FB;Apache::DBI&amp;#x306A;&amp;#x3069;&amp;#x4F7F;&amp;#x3048;&amp;#x3070;&amp;#x6C38;&amp;#x7D9A;&amp;#x7684;&amp;#x63A5;&amp;#x7D9A;&amp;#x304C;&amp;#x4FDD;&amp;#x3066;&amp;#x308B;\n
  • &amp;#x30FB;Apache&amp;#x3067;&amp;#x306F;&amp;#x3053;&amp;#x3053;&amp;#x306B;&amp;#x5F53;&amp;#x305F;&amp;#x308B;&amp;#x30D5;&amp;#x30A7;&amp;#x30FC;&amp;#x30BA;&amp;#x3067;BASIC&amp;#x8A8D;&amp;#x8A3C;&amp;#x306A;&amp;#x3069;&amp;#x3092;&amp;#x3084;&amp;#x3063;&amp;#x3066;&amp;#x307E;&amp;#x3059;\n
  • &amp;#x30FB;PerlFixupHandler&amp;#x306F;&amp;#x3001;response&amp;#x76F4;&amp;#x524D;&amp;#x3067;&amp;#x3061;&amp;#x3087;&amp;#x3063;&amp;#x3068;&amp;#x4F55;&amp;#x304B;&amp;#x3084;&amp;#x308A;&amp;#x305F;&amp;#x3044;&amp;#x6642;&amp;#x306B;&amp;#x3046;&amp;#x3063;&amp;#x3066;&amp;#x3064;&amp;#x3051;\n
  • &amp;#x30FB;&amp;#x65E2;&amp;#x306B;&amp;#x5B58;&amp;#x5728;&amp;#x3059;&amp;#x308B;&amp;#x5DE8;&amp;#x5927;&amp;#x306A;&amp;#x9759;&amp;#x7684;&amp;#x30B5;&amp;#x30A4;&amp;#x30C8;&amp;#x306B;&amp;#x52D5;&amp;#x7684;&amp;#x306A;&amp;#x30B9;&amp;#x30D1;&amp;#x30A4;&amp;#x30B9;&amp;#x3092;&amp;#x52A0;&amp;#x3048;&amp;#x308B;\n&amp;#x30FB;&amp;#x3069;&amp;#x3046;&amp;#x300C;&amp;#x304B;&amp;#x3076;&amp;#x305B;&amp;#x308B;&amp;#x300D;&amp;#x304B;&amp;#x3002;&amp;#x305D;&amp;#x306E;&amp;#x304B;&amp;#x3076;&amp;#x305B;&amp;#x65B9;&amp;#x3002;CGI/PHP/WAF&amp;#x3067;&amp;#x306F;&amp;#x306A;&amp;#x3044;mod_perl&amp;#x306A;&amp;#x3089;&amp;#x3067;&amp;#x306F;&amp;#x306E;&amp;#x8EFD;&amp;#x91CF;&amp;#x306A;&amp;#x3084;&amp;#x308A;&amp;#x304B;&amp;#x305F;&amp;#x3068;&amp;#x601D;&amp;#x3063;&amp;#x3066;&amp;#x3082;&amp;#x3089;&amp;#x3048;&amp;#x308C;&amp;#x3070;\n
  • &amp;#x30FB;&amp;#x7D75;&amp;#x6587;&amp;#x5B57;&amp;#x5909;&amp;#x63DB;&amp;#x306F;&amp;#x6614;&amp;#x304B;&amp;#x3089;Perl&amp;#x304C;&amp;#x5F97;&amp;#x610F;&amp;#x3067;&amp;#x3059;&amp;#x3088;&amp;#x306D;\n
  • &amp;#x30FB;Kepler&amp;#x306E;&amp;#x7531;&amp;#x6765;&amp;#x306F;&amp;#x3001;&amp;#x96D1;&amp;#x8A8C;&amp;#x300C;&amp;#x30CB;&amp;#x30E5;&amp;#x30FC;&amp;#x30C8;&amp;#x30F3;&amp;#x300D;&amp;#x306E;&amp;#x30B5;&amp;#x30A4;&amp;#x30C8;&amp;#x3092;&amp;#x4F5C;&amp;#x3063;&amp;#x305F;(&amp;#x624B;&amp;#x3092;&amp;#x52A0;&amp;#x3048;&amp;#x305F;)&amp;#x6642;&amp;#x306B;&amp;#x3001;&amp;#x30D7;&amp;#x30ED;&amp;#x30B8;&amp;#x30A7;&amp;#x30AF;&amp;#x30C8;&amp;#x6C4E;&amp;#x7528;&amp;#x306E;&amp;#x30AF;&amp;#x30E9;&amp;#x30B9;&amp;#x3084;&amp;#x30E2;&amp;#x30B8;&amp;#x30E5;&amp;#x30FC;&amp;#x30EB;&amp;#x3092;&amp;#x6253;&amp;#x3061;&amp;#x305F;&amp;#x3066;&amp;#x3088;&amp;#x3046;&amp;#x3068;&amp;#x3057;&amp;#x3066;&amp;#x540D;&amp;#x3065;&amp;#x3051;&amp;#x305F;&amp;#x6D12;&amp;#x843D;\n&amp;#x30FB;sub handler { my $r = shift; &amp;#x307E;&amp;#x3067;&amp;#x51FA;&amp;#x3055;&amp;#x305A;&amp;#x3059;&amp;#x307F;&amp;#x307E;&amp;#x305B;&amp;#x3093;&amp;#x3002;&amp;#x30D7;&amp;#x30EC;&amp;#x30BC;&amp;#x30F3;&amp;#x5F8C;&amp;#x306B;&amp;#x304A;&amp;#x898B;&amp;#x305B;&amp;#x3059;&amp;#x308B;&amp;#x3053;&amp;#x3068;&amp;#x306F;&amp;#x53EF;&amp;#x80FD;&amp;#x3002;CPAN&amp;#x306B;&amp;#x4E0A;&amp;#x3052;&amp;#x305F;&amp;#x3044;&amp;#x304F;&amp;#x3089;&amp;#x3044;&amp;#x3002;PAUSE&amp;#x306E;&amp;#x767B;&amp;#x9332;&amp;#x306E;&amp;#x3084;&amp;#x308A;&amp;#x304B;&amp;#x305F;&amp;#x6559;&amp;#x3048;&amp;#x3066;&amp;#x304F;&amp;#x3060;&amp;#x3055;&amp;#x3044;&amp;#x3002;\n&amp;#x30FB;Encode::NV&amp;#x306F;&amp;#x793E;&amp;#x5185;2003&amp;#x5E74;&amp;#x88FD;&amp;#x7D75;&amp;#x6587;&amp;#x5B57;&amp;#x30E2;&amp;#x30B8;&amp;#x30E5;&amp;#x30FC;&amp;#x30EB;&amp;#x3002;UCM&amp;#x66F8;&amp;#x304D;&amp;#x307E;&amp;#x3057;&amp;#x305F;&amp;#x3002;Encode::JP::Mobile&amp;#x306E;&amp;#x5148;&amp;#x99C6;&amp;#x304B;&amp;#x3082;\n
  • &amp;#x30FB;&amp;#x5148;&amp;#x7A0B;&amp;#x306E;&amp;#x56F3;&amp;#x306E;&amp;#x901A;&amp;#x308A;&amp;#x3001;PerlHandler / PerlResponseHandler &amp;#x4EE5;&amp;#x524D;&amp;#x306E;&amp;#x30D5;&amp;#x30A7;&amp;#x30FC;&amp;#x30BA;&amp;#x3067;&amp;#x30A8;&amp;#x30E9;&amp;#x30FC;&amp;#x306B;&amp;#x306A;&amp;#x3063;&amp;#x305F;&amp;#x5834;&amp;#x5408;&amp;#x3082;&amp;#x3001;PerlLogHandler&amp;#x306F;&amp;#x5B9F;&amp;#x884C;&amp;#x3055;&amp;#x308C;&amp;#x307E;&amp;#x3059;\n
  • \n
  • &amp;#x30FB;&amp;#x3088;&amp;#x3046;&amp;#x3084;&amp;#x304F;&amp;#x672C;&amp;#x984C;\n
  • &amp;#x30FB;response&amp;#x3067;&amp;#x306F;&amp;#x306A;&amp;#x3044;&amp;#x3068;&amp;#x601D;&amp;#x3044;&amp;#x307E;&amp;#x3059;&amp;#x304C; $r-&gt;print() (Apache2::RequestIO) &amp;#x306A;&amp;#x3069; response &amp;#x3067;&amp;#x3082;&amp;#x3042;&amp;#x308A;&amp;#x307E;&amp;#x3059;&amp;#x306D;\n
  • \n
  • &amp;#x30FB;&amp;#x307B;&amp;#x304B;&amp;#x3082;&amp;#x8208;&amp;#x5473;&amp;#x6DF1;&amp;#x3044;&amp;#x3067;&amp;#x3059;&amp;#x304C;&amp;#x3001;&amp;#x6642;&amp;#x9593;&amp;#x306E;&amp;#x90FD;&amp;#x5408;&amp;#x4E0A;&amp;#x5272;&amp;#x611B;\n&amp;#x30FB;&amp;#x9006;&amp;#x306B;mod_deflate&amp;#x306F;&amp;#x30D5;&amp;#x30A3;&amp;#x30EB;&amp;#x30BF;&amp;#x306E;&amp;#x5FDC;&amp;#x7528;&amp;#x4F8B;&amp;#x3067;&amp;#x3059;\n&amp;#x30FB;SSL&amp;#x3078;&amp;#x306E;&amp;#x5BFE;&amp;#x51E6;&amp;#x6CD5;&amp;#x306F;pound&amp;#x3084;LB&amp;#x304C;&amp;#x624B;&amp;#x524D;&amp;#x3067;&amp;#x307B;&amp;#x3069;&amp;#x304F;&amp;#x306A;&amp;#x3069;&amp;#x3001;&amp;#x4ED6;&amp;#x306B;&amp;#x3082;&amp;#x5BFE;&amp;#x51E6;&amp;#x6CD5;&amp;#x306F;&amp;#x3042;&amp;#x308B;&amp;#x3067;&amp;#x3057;&amp;#x3087;&amp;#x3046;\n
  • &amp;#x30FB;&amp;#x4ECA;&amp;#x56DE;&amp;#x306F;PerlProcessConnectionHandler&amp;#x306B;&amp;#x30D5;&amp;#x30A9;&amp;#x30FC;&amp;#x30AB;&amp;#x30B9;&amp;#x3092;&amp;#x5F53;&amp;#x3066;&amp;#x307E;&amp;#x3059;\n&amp;#x30FB;&amp;#x3053;&amp;#x308C;&amp;#x3089;&amp;#x3092;&amp;#x3072;&amp;#x3063;&amp;#x304F;&amp;#x308B;&amp;#x3081;&amp;#x3066;Connection&amp;#x30D5;&amp;#x30A7;&amp;#x30FC;&amp;#x30BA;&amp;#x3068;&amp;#x8A00;&amp;#x3063;&amp;#x305F;&amp;#x308A;&amp;#x3059;&amp;#x308B;&amp;#x3053;&amp;#x3068;&amp;#x3082;&amp;#x3042;&amp;#x308A;&amp;#x307E;&amp;#x3059;\n
  • &amp;#x30FB;PerlPreConnectionHandler&amp;#x306F;Apache&amp;#x51E6;&amp;#x7406;&amp;#x306E;&amp;#x672C;&amp;#x5F53;&amp;#x306B;&amp;#x5192;&amp;#x982D;&amp;#x3002;&amp;#x3053;&amp;#x3053;&amp;#x3067;IP&amp;#x30D6;&amp;#x30ED;&amp;#x30C3;&amp;#x30AF;&amp;#x306F;&amp;#x52B9;&amp;#x679C;&amp;#x5927;&amp;#x3068;&amp;#x3044;&amp;#x3063;&amp;#x305F;&amp;#x6D3B;&amp;#x7528;&amp;#x6CD5;\n&amp;#x30FB;mod_perl&amp;#x81EA;&amp;#x8EAB;&amp;#x304C;&amp;#x3001;&amp;#x3053;&amp;#x306E;pre_connection&amp;#x3067;&amp;#x30D5;&amp;#x30A3;&amp;#x30EB;&amp;#x30BF;&amp;#x3092;&amp;#x6E96;&amp;#x5099;&amp;#x3057;&amp;#x305F;&amp;#x308A;&amp;#x3057;&amp;#x3066;&amp;#x3044;&amp;#x307E;&amp;#x3059;&amp;#x3057;&amp;#x3001;Apache&amp;#x306F;&amp;#x30D7;&amp;#x30ED;&amp;#x30C8;&amp;#x30B3;&amp;#x30EB;&amp;#x975E;&amp;#x4F9D;&amp;#x5B58;&amp;#x306E;SSL&amp;#x51E6;&amp;#x7406;&amp;#x3092;&amp;#x884C;&amp;#x3063;&amp;#x3066;&amp;#x3044;&amp;#x307E;&amp;#x3059;\n\n
  • &amp;#x30FB;&amp;#x73FE;&amp;#x5728;&amp;#x30E6;&amp;#x30FC;&amp;#x30B6;&amp;#x6570;&amp;#x306F;&amp;#x5C11;&amp;#x306A;&amp;#x3044;&amp;#x3067;&amp;#x3059;&amp;#x304C;&amp;#x3001;&amp;#x5225;&amp;#x306E;&amp;#x7740;&amp;#x4FE1;&amp;#x901A;&amp;#x77E5;&amp;#x30D7;&amp;#x30ED;&amp;#x30B0;&amp;#x30E9;&amp;#x30E0;&amp;#x304C;Postfix pipe&amp;#x3092;&amp;#x4F7F;&amp;#x3063;&amp;#x3066;&amp;#x3044;&amp;#x3066;&amp;#x30B9;&amp;#x30B1;&amp;#x30FC;&amp;#x30EB;&amp;#x3057;&amp;#x3065;&amp;#x3089;&amp;#x3044;&amp;#x69CB;&amp;#x6210;&amp;#x306B;&amp;#x306A;&amp;#x3063;&amp;#x3066;&amp;#x3044;&amp;#x305F;&amp;#x306E;&amp;#x3067;&amp;#x3001;&amp;#x305D;&amp;#x308C;&amp;#x3092;&amp;#x89E3;&amp;#x6C7A;&amp;#x3059;&amp;#x308B;&amp;#x305F;&amp;#x3081;&amp;#x306E;&amp;#x5B9F;&amp;#x9A13;&amp;#x7684;&amp;#x610F;&amp;#x5473;&amp;#x5408;&amp;#x3044;&amp;#x3082;&amp;#x3042;&amp;#x308A;&amp;#x307E;&amp;#x3057;&amp;#x305F;\n&amp;#x30FB;\n
  • &amp;#x30FB;&amp;#x30E1;&amp;#x30EB;&amp;#x30DE;&amp;#x30AC;&amp;#x914D;&amp;#x4FE1;&amp;#x696D;&amp;#x8005;&amp;#x307B;&amp;#x3069;&amp;#x53F0;&amp;#x6570;&amp;#x306F;&amp;#x591A;&amp;#x304F;&amp;#x306A;&amp;#x3044;&amp;#x3067;&amp;#x3059;&amp;#x304C;&amp;#x3001;&amp;#x30B1;&amp;#x30FC;&amp;#x30BF;&amp;#x30A4;&amp;#x5411;&amp;#x3051;&amp;#x30A6;&amp;#x30A7;&amp;#x30D6;&amp;#x30E1;&amp;#x30FC;&amp;#x30EB;&amp;#x3092;&amp;#x904B;&amp;#x55B6;&amp;#x3057;&amp;#x3066;&amp;#x3044;&amp;#x308B;&amp;#x30B7;&amp;#x30B9;&amp;#x30C6;&amp;#x30E0;&amp;#x306A;&amp;#x3089;&amp;#x3067;&amp;#x306F;&amp;#x306E;&amp;#x914D;&amp;#x7F6E;&amp;#x306B;&amp;#x306A;&amp;#x3063;&amp;#x3066;&amp;#x3044;&amp;#x307E;&amp;#x3059;&amp;#x304C;&amp;#x5272;&amp;#x611B;&amp;#x3057;&amp;#x307E;&amp;#x3059;\n
  • &amp;#x30FB;TCP&amp;#x306E;&amp;#x30DD;&amp;#x30FC;&amp;#x30C8;&amp;#x756A;&amp;#x53F7;&amp;#x3001;&amp;#x5916;&amp;#x304B;&amp;#x3089;&amp;#x6700;&amp;#x521D;&amp;#x306E;Postfix&amp;#x53D7;&amp;#x3051;&amp;#x308B;&amp;#x3068;&amp;#x3053;&amp;#x308D;&amp;#x306F;25&amp;#x756A;&amp;#x3067;&amp;#x3059;&amp;#x304C;&amp;#x3001;Apache2 SMTP&amp;#x3068;&amp;#x3001;&amp;#x4E0B;&amp;#x306E;Postfix&amp;#x306F;&amp;#x5225;&amp;#x306E;&amp;#x756A;&amp;#x53F7;&amp;#x3067;SMTP&amp;#x3092;&amp;#x5F85;&amp;#x3061;&amp;#x53D7;&amp;#x3051;&amp;#x3066;&amp;#x3044;&amp;#x307E;&amp;#x3059;\n&amp;#x30FB;&amp;#x3084;&amp;#x3063;&amp;#x3064;&amp;#x3051;&amp;#x56F3;&amp;#x3067;&amp;#x3059;&amp;#x307F;&amp;#x307E;&amp;#x305B;&amp;#x3093;\n&amp;#x30FB;postfix master&amp;#x30D7;&amp;#x30ED;&amp;#x30BB;&amp;#x30B9;&amp;#x304C;2&amp;#x3064;&amp;#x3044;&amp;#x308B;&amp;#x308F;&amp;#x3051;&amp;#x3067;&amp;#x306F;&amp;#x3042;&amp;#x308A;&amp;#x307E;&amp;#x305B;&amp;#x3093;&amp;#x3002;1&amp;#x3064;&amp;#x306E;postfix&amp;#x304C;&amp;#x5225;&amp;#x3005;&amp;#x306B;2&amp;#x3064;&amp;#x306E;&amp;#x30DD;&amp;#x30FC;&amp;#x30C8;&amp;#x3067;&amp;#x5F85;&amp;#x3061;&amp;#x53D7;&amp;#x3051;&amp;#x308B;&amp;#x69CB;&amp;#x6210;&amp;#x306B;&amp;#x3057;&amp;#x3066;&amp;#x3044;&amp;#x307E;&amp;#x3059;\n
  • \n
  • &amp;#x30FB;&amp;#x5B9F;&amp;#x969B;&amp;#x306E;&amp;#x8A2D;&amp;#x5B9A;&amp;#x30D5;&amp;#x30A1;&amp;#x30A4;&amp;#x30EB;&amp;#x304B;&amp;#x3089;&amp;#x629C;&amp;#x7C8B;&amp;#x3057;&amp;#x307E;&amp;#x3057;&amp;#x305F;\n&amp;#x30FB;Apache::DBI&amp;#x3067;DB&amp;#x306E;&amp;#x6C38;&amp;#x7D9A;&amp;#x7684;&amp;#x306A;&amp;#x63A5;&amp;#x7D9A;&amp;#x3060;&amp;#x3063;&amp;#x3066;&amp;#x3067;&amp;#x304D;&amp;#x307E;&amp;#x3059;&amp;#x3002;pipe&amp;#x3067;DB&amp;#x306B;&amp;#x30A2;&amp;#x30AF;&amp;#x30BB;&amp;#x30B9;&amp;#x3057;&amp;#x305F;&amp;#x3089;&amp;#x30B3;&amp;#x30B9;&amp;#x30C8;&amp;#x5927;&amp;#x304D;&amp;#x3059;&amp;#x304E;&amp;#xFF01;\n&amp;#x30FB;(&amp;#x6B21;&amp;#x306B; GMFilter.pm &amp;#x629C;&amp;#x7C8B;1)\n
  • &amp;#x30FB;&amp;#x5B9F;&amp;#x969B;&amp;#x306E;&amp;#x8A2D;&amp;#x5B9A;&amp;#x30D5;&amp;#x30A1;&amp;#x30A4;&amp;#x30EB;&amp;#x304B;&amp;#x3089;&amp;#x629C;&amp;#x7C8B;&amp;#x3057;&amp;#x307E;&amp;#x3057;&amp;#x305F;\n&amp;#x30FB;Apache::DBI&amp;#x3067;DB&amp;#x306E;&amp;#x6C38;&amp;#x7D9A;&amp;#x7684;&amp;#x306A;&amp;#x63A5;&amp;#x7D9A;&amp;#x3060;&amp;#x3063;&amp;#x3066;&amp;#x3067;&amp;#x304D;&amp;#x307E;&amp;#x3059;&amp;#x3002;pipe&amp;#x3067;DB&amp;#x306B;&amp;#x30A2;&amp;#x30AF;&amp;#x30BB;&amp;#x30B9;&amp;#x3057;&amp;#x305F;&amp;#x3089;&amp;#x30B3;&amp;#x30B9;&amp;#x30C8;&amp;#x5927;&amp;#x304D;&amp;#x3059;&amp;#x304E;&amp;#xFF01;\n
  • &amp;#x30FB;&amp;#x5148;&amp;#x307B;&amp;#x3069;&amp;#x3082;&amp;#x51FA;&amp;#x3066;&amp;#x304D;&amp;#x305F;APR=Apache Portable Runtime\n
  • &amp;#x30FB;&amp;#x5B9F;&amp;#x969B;&amp;#x306E;&amp;#x8A2D;&amp;#x5B9A;&amp;#x30D5;&amp;#x30A1;&amp;#x30A4;&amp;#x30EB;&amp;#x304B;&amp;#x3089;&amp;#x629C;&amp;#x7C8B;&amp;#x3057;&amp;#x307E;&amp;#x3057;&amp;#x305F;\n&amp;#x30FB;Apache::DBI&amp;#x3067;DB&amp;#x306E;&amp;#x6C38;&amp;#x7D9A;&amp;#x7684;&amp;#x306A;&amp;#x63A5;&amp;#x7D9A;&amp;#x3060;&amp;#x3063;&amp;#x3066;&amp;#x3067;&amp;#x304D;&amp;#x307E;&amp;#x3059;&amp;#x3002;pipe&amp;#x3067;DB&amp;#x306B;&amp;#x30A2;&amp;#x30AF;&amp;#x30BB;&amp;#x30B9;&amp;#x3057;&amp;#x305F;&amp;#x3089;&amp;#x30B3;&amp;#x30B9;&amp;#x30C8;&amp;#x5927;&amp;#x304D;&amp;#x3059;&amp;#x304E;&amp;#xFF01;\n
  • &amp;#x30FB;&amp;#x5148;&amp;#x307B;&amp;#x3069;&amp;#x3082;&amp;#x51FA;&amp;#x3066;&amp;#x304D;&amp;#x305F;APR=Apache Portable Runtime\n
  • &amp;#x30FB;&amp;#x5148;&amp;#x307B;&amp;#x3069;&amp;#x3082;&amp;#x51FA;&amp;#x3066;&amp;#x304D;&amp;#x305F;APR=Apache Portable Runtime\n
  • \n
  • \n
  • &amp;#x30FB;&amp;#x5F53;&amp;#x6642;&amp;#x306E;&amp;#x30A4;&amp;#x30F3;&amp;#x30D5;&amp;#x30E9;&amp;#x62C5;&amp;#x5F53;&amp;#x8005;&amp;#x306B;&amp;#x8AAC;&amp;#x5F97;&amp;#x3067;&amp;#x304D;&amp;#x306A;&amp;#x304B;&amp;#x3063;&amp;#x305F;\n&amp;#x30FB;&amp;#x4ECA;&amp;#x56DE;&amp;#x306E;&amp;#x30B0;&amp;#x30EB;&amp;#x30FC;&amp;#x30D7;&amp;#x30E1;&amp;#x30FC;&amp;#x30EB;&amp;#x958B;&amp;#x767A;&amp;#x3092;&amp;#x901A;&amp;#x3057;&amp;#x3066;&amp;#x3001;Postfix pipe&amp;#x3067;&amp;#x52D5;&amp;#x4F5C;&amp;#x3057;&amp;#x3066;&amp;#x3044;&amp;#x308B;&amp;#x7740;&amp;#x4FE1;&amp;#x901A;&amp;#x77E5;&amp;#x30D7;&amp;#x30ED;&amp;#x30B0;&amp;#x30E9;&amp;#x30E0;&amp;#x3092;&amp;#x30DE;&amp;#x30A4;&amp;#x30B0;&amp;#x30EC;&amp;#x30FC;&amp;#x30B7;&amp;#x30E7;&amp;#x30F3;&amp;#x3067;&amp;#x304D;&amp;#x308C;&amp;#x3070;&amp;#x3001;&amp;#x30B5;&amp;#x30FC;&amp;#x30D0;&amp;#x53F0;&amp;#x6570;&amp;#x3092;&amp;#x534A;&amp;#x6E1B;&amp;#x3067;&amp;#x304D;&amp;#x308B;&amp;#x304F;&amp;#x3089;&amp;#x3044;&amp;#x306E;&amp;#x8A66;&amp;#x7B97;&amp;#x3092;&amp;#x3057;&amp;#x3066;&amp;#x3044;&amp;#x308B;\n
  • &amp;#x30FB;POE&amp;#x306F;&amp;#x6FC0;&amp;#x3057;&amp;#x3044;&amp;#x30C8;&amp;#x30E9;&amp;#x30D5;&amp;#x30A3;&amp;#x30C3;&amp;#x30AF;&amp;#x304C;&amp;#x3084;&amp;#x3063;&amp;#x3066;&amp;#x304F;&amp;#x308B;&amp;#x3068;&amp;#x3057;&amp;#x3070;&amp;#x3057;&amp;#x3070;&amp;#x7121;&amp;#x8A00;&amp;#x3067;&amp;#x6B7B;&amp;#x306B;&amp;#x307E;&amp;#x3059;\n&amp;#x30FB;&amp;#x4ECA;&amp;#x306F;AnyEvent&amp;#x3068;&amp;#x304B;&amp;#x5805;&amp;#x3044;&amp;#x3067;&amp;#x3059;&amp;#x3088;&amp;#x306D;\n\n
  • &amp;#x30FB;Apache2 Connection &amp;#x3067;&amp;#x52D5;&amp;#x304F;&amp;#x3057;&amp;#x3002;Experimental&amp;#x3060;&amp;#x3063;&amp;#x3066;&amp;#x53E4;&amp;#x3044;&amp;#x8CC7;&amp;#x6599;&amp;#x306B;&amp;#x306F;&amp;#x66F8;&amp;#x304B;&amp;#x308C;&amp;#x3066;&amp;#x3044;&amp;#x305F;&amp;#x3051;&amp;#x3069;\n&amp;#x30FB;AnyEvent&amp;#x30D9;&amp;#x30FC;&amp;#x30B9;&amp;#x306E;&amp;#x3082;&amp;#x306E;&amp;#x306F;&amp;#x6700;&amp;#x65B0;&amp;#x306E;&amp;#x306B;&amp;#x3082;&amp;#x7121;&amp;#x3044;&amp;#x3088;&amp;#x3046;&amp;#x3067;&amp;#x3059;&amp;#x304C;&amp;#x3001;&amp;#x4F5C;&amp;#x308B;&amp;#x3068;&amp;#x9762;&amp;#x767D;&amp;#x3044;&amp;#x304B;&amp;#x3082;&amp;#x3057;&amp;#x308C;&amp;#x307E;&amp;#x305B;&amp;#x3093;&amp;#x306D;\n
  • &amp;#x30FB;&amp;#x5148;&amp;#x307B;&amp;#x3069;&amp;#x306E;&amp;#x597D;&amp;#x5370;&amp;#x8C61;&amp;#x306E;&amp;#x7406;&amp;#x7531;&amp;#x304C;&amp;#x3053;&amp;#x308C;&amp;#x3067;&amp;#x3059;\n
  • \n
  • &amp;#x30FB;&amp;#x3059;&amp;#x3054;&amp;#x3044;&amp;#x7D50;&amp;#x8AD6;&amp;#x3067;&amp;#x3059;&amp;#x306D;\n
  • &amp;#x30FB;&amp;#x6700;&amp;#x521D;&amp;#x306E;&amp;#x307B;&amp;#x3046;&amp;#x306E;&amp;#x30CD;&amp;#x30C3;&amp;#x30C8;&amp;#x30AF;&amp;#x30E9;&amp;#x30D5;&amp;#x30C8;&amp;#x306E;&amp;#x30B0;&amp;#x30E9;&amp;#x30D5;&amp;#x3092;&amp;#x601D;&amp;#x3044;&amp;#x51FA;&amp;#x3057;&amp;#x3066;&amp;#x304F;&amp;#x3060;&amp;#x3055;&amp;#x3044;\n&amp;#x30FB;&amp;#x30E1;&amp;#x30FC;&amp;#x30EB;&amp;#x30D7;&amp;#x30ED;&amp;#x30AD;&amp;#x30B7;&amp;#x306A;&amp;#x3069;&amp;#x306E;&amp;#x6A5F;&amp;#x80FD;&amp;#x3082;&amp;#x3042;&amp;#x308B;&amp;#x307F;&amp;#x305F;&amp;#x3044;&amp;#x3067;&amp;#x3059;&amp;#x306D;\n
  • &amp;#x30FB;Apache&amp;#x306E; mod_perl &amp;#x306B;&amp;#x5BFE;&amp;#x5FDC;&amp;#x3059;&amp;#x308B;&amp;#x30E2;&amp;#x30B8;&amp;#x30E5;&amp;#x30FC;&amp;#x30EB;&amp;#x3068;&amp;#x3057;&amp;#x3066; EmbeddedPerlModule &amp;#x304C;&amp;#x76EE;&amp;#x7ACB;&amp;#x3064;&amp;#x3068;&amp;#x3053;&amp;#x308D;&amp;#x306B;&amp;#x3042;&amp;#x3052;&amp;#x3089;&amp;#x308C;&amp;#x3066;&amp;#x3044;&amp;#x307E;&amp;#x3059;\n
  • &amp;#x30FB;&amp;#x305D;&amp;#x3053;&amp;#x304B;&amp;#x3089;&amp;#x30B5;&amp;#x30F3;&amp;#x30D7;&amp;#x30EB;\n&amp;#x30FB;&amp;#x3042;&amp;#x308C;&amp;#xFF1F;&amp;#x3069;&amp;#x3053;&amp;#x304B;&amp;#x3067;&amp;#x307F;&amp;#x305F;&amp;#x3053;&amp;#x3068;&amp;#x304C;&amp;#x2026;\n
  • &amp;#x30FB;&amp;#x305D;&amp;#x3053;&amp;#x304B;&amp;#x3089;&amp;#x30B5;&amp;#x30F3;&amp;#x30D7;&amp;#x30EB;\n&amp;#x30FB;mod_perl1 &amp;#x3063;&amp;#x307D;&amp;#x3044;&amp;#xFF01;&amp;#x3068;&amp;#x3044;&amp;#x3046;&amp;#x304B;&amp;#x305D;&amp;#x306E;&amp;#x307E;&amp;#x307E;\n
  • &amp;#x30FB;Apache&amp;#x306E;MPM&amp;#x306E;&amp;#x3088;&amp;#x3046;&amp;#x306A;&amp;#x4ED5;&amp;#x7D44;&amp;#x307F;&amp;#x306F;&amp;#x306A;&amp;#x3044;&amp;#x304B;&amp;#x3089;&amp;#x3001;nginx&amp;#x3063;&amp;#x3066;worker=&amp;#x30B9;&amp;#x30EC;&amp;#x30C3;&amp;#x30C9;&amp;#x52D5;&amp;#x4F5C;&amp;#x306E;&amp;#x307F;&amp;#x306A;&amp;#x306E;&amp;#x304B;&amp;#x306A;\n&amp;#x30FB;FastCGI&amp;#x306E;&amp;#x307B;&amp;#x3046;&amp;#x304C;&amp;#x30CE;&amp;#x30A6;&amp;#x30CF;&amp;#x30A6;&amp;#x3042;&amp;#x308A;&amp;#x307E;&amp;#x3059;\n
  • &amp;#x30FB;&amp;#x6642;&amp;#x9593;&amp;#x306E;&amp;#x90FD;&amp;#x5408;&amp;#x4E0A;&amp;#x3001;&amp;#x8A73;&amp;#x7D30;&amp;#x306B;&amp;#x3042;&amp;#x307E;&amp;#x308A;&amp;#x89E6;&amp;#x308C;&amp;#x3089;&amp;#x308C;&amp;#x305A;&amp;#x3059;&amp;#x307F;&amp;#x307E;&amp;#x305B;&amp;#x3093;\n
  • &amp;#x30FB;&amp;#x6700;&amp;#x5F8C;&amp;#x306E;&amp;#x307B;&amp;#x3046;&amp;#x99C6;&amp;#x3051;&amp;#x8DB3;&amp;#x306B;&amp;#x306A;&amp;#x3063;&amp;#x3066;&amp;#x3057;&amp;#x307E;&amp;#x3044;&amp;#x307E;&amp;#x3057;&amp;#x305F;&amp;#x304C;&amp;#x2026;\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • &amp;#x30FB;&amp;#x8074;&amp;#x8B1B;&amp;#x8005;&amp;#x306E;&amp;#x7686;&amp;#x3055;&amp;#x3093;&amp;#x306B;&amp;#x611F;&amp;#x8B1D;&amp;#xFF01;\n
  • mod_perl温故知新 〜Perl CGIの高速化からメールサーバまで〜

    1. 1. mod_perl Perl CGI fonfun (OGATA Tetsuji) Twitter: @xtetsuji 2011/7/16
    2. 2. (1/2)• (OGATA Tetsuji) Twitter: @xtetsuji• http://post.tetsuji.jp/ ( )• ( ) 18
    3. 3. (2/2)• ( …)•( ) Perl 30• JavaScript / Shell Script(bash) // Emacs Lisp• :
    4. 4. (1/2)• fonfun( ) http://www.fonfun.co.jp/ • http://rmail.jp/• g15 http://g15.jp/
    5. 5. (2/2)• fonfun( : ) • 1999 ( : ) • 2003 4 (Perl + Apache/ mod_perl + Oracle + Postfix) •
    6. 6. •• YAPC::Asia2010• (@onagatani)• Hokkaido.pm•
    7. 7. Agenda
    8. 8. Agenda• I. mod_perl• II. mod_perl Apache• III. Apache2&mod_perl2 HTTP• IV. - qpsmtpd & nginx...•
    9. 9. I. mod_perl
    10. 10. Apache+mod_perl?• ※1 WAF PSGI/Plack Apache ※1. WAF=Web Application Framework•• Plack+mod_perl2 ※ http://subtech.g.hatena.ne.jp/cho45/20101221/1292941055
    11. 11. Apache+mod_perl?• Apache+mod_perl+WAF mod_perl … • •
    12. 12. Apache+mod_perl?• Apache• Linux Apache mod_perl ( )
    13. 13. Apache+mod_perl?• Apache• Apache 2011 7 65.86% (2011 6 64.88%) (http://news.netcraft.com/ archives/2011/07/08/ july-2011-web-server- Market Share for Top Servers Across All Domains survey.html ) August 1995 - June 2011• Apache
    14. 14. Apache+mod_perl?• WAF• Apache Perl CGI(or PHP)• ...
    15. 15. mod_perl• Apache1.3 → mod_perl1• Apache2.x → mod_perl2• 1 2 mod_perl• mod_perl1.99( )• ※ Apache1 deprecated mod_perl1
    16. 16. mod_perl• mod_perl1 first public release: 1996/3/25 (http://perl.apache.org/dist/mod_perl-1.0-current/Changes )• mod_perl2 first public release: 2002/4/6 (http://perl.apache.org/dist/mod_perl-2.0-current/Changes )
    17. 17. Perl CGI # ↓Apache Configurations• mod_perl1 AddHandler perl-script .pl PerlHandler Apache::Registry• mod_perl2 AddHandler perl-script .pl PerlResponseHandler ModPerl::Registry• ”.pl” Perl CGI
    18. 18. hello.pl
    19. 19. mod_perl1 Hello1.pm•• ($r) handler• http://hello.example.jp/ Content-Type: text/plain
    20. 20. mod_perl1 Hello1.pm # apache1.3 configuration <VirtualHost A.B.C.D:80> ServerName hello.example.jp SetHandler perl-script PerlHandler Hello1 </VirtualHost>
    21. 21. mod_perl1 Hello1.pm
    22. 22. mod_perl2 Hello2.pm•• mod_perl1•
    23. 23. mod_perl2 Hello2.pm # apache2.x configuration <VirtualHost A.B.C.D:80> ServerName hello.example.jp SetHandler perl-script PerlResponseHandler Hello2 </VirtualHost>
    24. 24. mod_perl2 Hello2.pm• PerlHandler → PerlResponseHandler• Hello2.pm
    25. 25. mod_perl2 Hello2.pm
    26. 26. mod_perl2 Hello2.pm• mod_perl1 mod_perl Apache::• mod_perl2 mod_perl Apache2:: ModPerl:: APR:: mod_perl1 (Apache object ) Mix-in
    27. 27. Hello ...• CGI WAF HTTP• ...
    28. 28. II. mod_perl Apache
    29. 29. mod_perl Apache• HTTP• mod_perl HTTP
    30. 30. Apache• MPM Prefork• (prefork)• HTTP• HTTP ...
    31. 31. Apache••• URL DocumentRoot• (BASIC )• MIME• ( )• ( )•
    32. 32. Apache•• →Apache Module mod_xxxxxx)• Apache Module Perl mod_perl• mod_perl
    33. 33. Apache/mod_perl• : ( )•• Apache/mod_perl 1 2• Apache/mod_perl 2
    34. 34. :mod_perl1 PerlChildInitHandler PerlPostReadRequestHandler PerlInitHandler PerlTransHandler PerlHeaderParserHandler PerlAccessHandler PerlAuthenHandler PerlAuthzHandler PerlTypeHandler PerlFixupHandler PerlFixupHandler PerlHandler PerlLogHandler PerlCleanupHandler PerlChildExitHandler ※http://perl.apache.org/docs/1.0/guide/config.html#toc_Perl_Handlers
    35. 35. :mod_perl1 ※ Practical mod_perl
    36. 36. :mod_perl2 PerlChildInitHandler PerlPostReadRequestHandler PerlInitHandler PerlTransHandler PerlMapToStorageHandler PerlHeaderParserHandler PerlAccessHandler PerlAuthenHandler PerlAuthzHandler PerlTypeHandler PerlFixupHandler PerlFixupHandler PerlResponseHandler PerlLogHandler PerlCleanupHandler PerlChildExitHandler※ http://perl.apache.org/docs/2.0/user/config/config.html
    37. 37. :mod_perl2 ※ Practical mod_perl
    38. 38.
    39. 39. : mod_rewrite• mod_rewrite• URL• ( )
    40. 40. : mod_rewrite• mod_rewrite URL PerlTransHandler•( ) Perl• mod_rewrite PerlTransHandler C API ※ PerlFixupHandler
    41. 41. : mod_rewrite# required “RewriteURL.pm”<VirtualHost A.B.C.D:80> ServerName hello.example.jp PerlTransHandler RewriteURL</VirtualHost>
    42. 42. : mod_rewrite
    43. 43. : mod_rewrite•• sub handler { my $r = shift; ... }•
    44. 44. ••
    45. 45. • PerlPostReadRequestHandler DDoS ( ) • return DONE; # cut off!• PerlAccessHandler• LB iptables
    46. 46. • PerlTransHandler• mod_rewrite PerlTransHandler• URL (return REDIRECT; )
    47. 47. • Perl{Authen,Authz}Handler PHP Cookie Perl• Access,Authen,Authz 3 3A
    48. 48. • HTML• User-Agent *.html Content-Type text/html application/xhtml+xml• PerlTypeHandler PerlFixupHandler ( : $r->headers_in, $r->headers_out)
    49. 49. • HTML </body> (ry• PerlHandler / PerlResponseHandler• $r->print(thiswork(slurp($r->filename())));
    50. 50. • i HTML HTML SBM (ry• PerlHandler / PerlResponseHandler
    51. 51. Kepler/Apache/ConvertEmoji.pm
    52. 52. • HTTP / PerlHandler / PerlResponseHandler ...• PerlLogHandler $r HTTP• DB
    53. 53. • mod_perl HTTP
    54. 54. III. Apache2&mod_perl2 HTTP
    55. 55. Apache2&mod_perl2 HTTP• mod_perl HTTP Request/Response • $r : Apache (mod_perl1) • $r : Apache2::RequestRec (mod_perl2)• $r r request/response r
    56. 56. Apache2/mod_perl2• Apache2 HTTP • ServerLifeCycle • Protocol / Connection • Filter • Thread• mod_perl2 HTTP ※ http://perl.apache.org/docs/2.0/user/config/config.html
    57. 57. Apache2/mod_perl2Connection• Connection• (HTTP )Protocol• Connection HTTP• Apache2 : mod_ssl
    58. 58. Connection PerlPreConnectionHandler PerlProcessConnectionHandler ※ Practical mod_perl
    59. 59. Connection•2 HTTP• PerlPreConnectionHandler • Apache• PerlProcessConnectionHandler • SMTP
    60. 60. Apache2 SMTP•• Postfix pipe Perl I/O fork• DB
    61. 61. Apache2 SMTP• : 2 (load balancing) • SMTP• Apache2 SMTP Postfix ...
    62. 62. Apache2 SMTP• SMTP• Postfix• Apache2 SMTP 1 Postfix
    63. 63. mod_perl2PerlProcessConnectionHandler•• $r $c (Apache2::Connection)• sub handler { my $c = shift; ... }• Apache •
    64. 64. PerlProcessConnectionHandler SMTPListen 10025 gmfilterAcceptFilter gmfilter none<VirtualHost 127.0.0.1:10025> TransferLog /var/log/httpd/gmfilter.log ErrorLog /var/log/httpd/gmfilter_error.log PerlModule Encode::NV ARM::G4::Apache2::GMFilter Apache::DBI PerlProcessConnectionHandler ARM::G4::Apache2::GMFilter</VirtualHost>
    65. 65. PerlProcessConnectionHandler SMTP ARM/G4/Apache2/GMFilter.pm 1:
    66. 66. PerlProcessConnectionHandler SMTP• use• $c use Apache2::Connection• Socket I/O APR::Socket, APR::Brigade, APR::Bucket use
    67. 67. PerlProcessConnectionHandler SMTP ARM/G4/Apache2/GMFilter.pm 2:handler
    68. 68. PerlProcessConnectionHandler SMTP• Socket I/O• Prefork chdir() OK
    69. 69. PerlProcessConnectionHandler SMTP• Postfix pipe Perl DB• : URL: http://rmail.jp/feature/4_5.html•
    70. 70. IV.qpsmtpd & nginx...
    71. 71. • Apache2 Connection SMTP••• qpsmtpd Perl SMTP
    72. 72. qpsmtpd• http://smtpd.develooper.com/•
    73. 73. qpsmtpd• Perl daemon ( POE )• qpsmtpd Engine•
    74. 74. qpsmtpd• qpsmtpd Engine=Transport • pipe (CGI like) • fork-server • prefork-server • Apache (Apache::Qpsmtpd) • async (Danga::Socket base?)
    75. 75. qpsmtpd• Apache::Qpsmtpd•
    76. 76. qpsmtpd• Danga::Socket qpsmtpd• Postfix pipe qpsmtpd
    77. 77. qpsmtpd• Apache SMTP qpsmtpd(Apache::Qpsmtpd)•
    78. 78. nginx• http://nginx.org/•• stable• FastCGI
    79. 79. nginxEmbeddedPerlModule ※ http://wiki.nginx.org/EmbeddedPerlModule
    80. 80. nginxEmbeddedPerlModule ※ http://wiki.nginx.org/EmbeddedPerlModule
    81. 81. nginx EmbeddedPerlModule• mod_perl1• mod_perl1•
    82. 82. nginx EmbeddedPerlModule• worker(single threaded process) I/O• (mod_perl )
    83. 83. nginx EmbeddedPerlModule•• mod_perl1• C10K Apache(mod_perl)
    84. 84. • mod_perl ( )• mod_perl• Apache2/mod_perl2 Connection HTTP (Apache ) Perl(mod_perl)• mod_perl
    85. 85. • Filter • mod_perl1 Filter Apache::Filter, Apache::OutputChain • mod_perl2 Filter Perl{Input,Output}FilterHandler
    86. 86. • mod_perl 3 • Practical mod_perl (Orelly 2003; http://modperlbook.org/) • The mod_perl Developer’s Cookbook (Sams Publishing 2002; http://www.modperlcookbook.org/) • mod_perl2 User’s Guide (Onyx Neon 2007; http://modperl2book.org/)
    87. 87. • Apache C API(mod_*.c) • Apache ( ) (Oreilly 2000; C API mod_perl ) • The Apache Modules Book (Prentice Hall 2007; C API )
    88. 88. • WEB+DB PRESS Vol.33 (2006/6) Recent Perl World 2 mod_perl 2.0• Net::DNS DNS http://gihyo.jp/magazine/wdpress/archive/2006/vol33

    ×