SlideShare a Scribd company logo
1 of 91
mod_perl
   Perl CGI


                fonfun
            (OGATA Tetsuji)
      Twitter: @xtetsuji
          2011/7/16
(1/2)
•              (OGATA Tetsuji)
    Twitter: @xtetsuji
• http://post.tetsuji.jp/ (           )



•                     (          )
                      18
(2/2)
•                       (               …)

•(         )        Perl                  30

• JavaScript / Shell Script(bash) // Emacs Lisp
• :
(1/2)
•               fonfun(           )
    http://www.fonfun.co.jp/
    •
        http://rmail.jp/
•               g15
    http://g15.jp/
(2/2)
•              fonfun(       :                    )

    •   1999
        (      :                 )

    •   2003       4                 (Perl + Apache/
        mod_perl + Oracle + Postfix)

    •
•
•   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 Framework

•


•    Plack+mod_perl2

             ※ http://subtech.g.hatena.ne.jp/cho45/20101221/1292941055
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/
    archives/2011/07/08/
    july-2011-web-server-        Market Share for Top Servers Across All Domains
    survey.html      )                      August 1995 - June 2011


•                         Apache
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 deprecated
        mod_perl1
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   )
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
hello.pl
mod_perl1 Hello1.pm
•
•
                        ($r)        handler



•   http://hello.example.jp/
         Content-Type: text/plain
mod_perl1 Hello1.pm

   # apache1.3 configuration
   <VirtualHost A.B.C.D:80>
      ServerName hello.example.jp
      SetHandler perl-script
      PerlHandler Hello1
   </VirtualHost>
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 perl-script
      PerlResponseHandler Hello2
   </VirtualHost>
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::
               mod_perl1
  (Apache object )   Mix-in
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
    PerlHeaderParserHandler
         PerlAccessHandler
        PerlAuthenHandler
         PerlAuthzHandler
          PerlTypeHandler
          PerlFixupHandler
          PerlFixupHandler
             PerlHandler
           PerlLogHandler
        PerlCleanupHandler
       PerlChildExitHandler
                   ※
http://perl.apache.org/docs/1.0/guide/config.html#toc_Perl_Handlers
:mod_perl1




  ※ Practical mod_perl
: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
:mod_perl2




  ※ Practical mod_perl
•
: mod_rewrite


•                  mod_rewrite

•       URL

•
    (          )
: mod_rewrite

• mod_rewrite                        URL
                  PerlTransHandler

•(            )                                Perl



• mod_rewrite               PerlTransHandler
      C API
       ※          PerlFixupHandler
: mod_rewrite



# required “RewriteURL.pm”
<VirtualHost A.B.C.D:80>
   ServerName hello.example.jp
   PerlTransHandler RewriteURL
</VirtualHost>
: mod_rewrite
: mod_rewrite



•

• sub handler { my $r = shift; ... }
•
•

•
• PerlPostReadRequestHandler
                    DDoS        (   )

    • return DONE; # cut off!
•          PerlAccessHandler

•              LB   iptables
• 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



•   PerlTypeHandler     PerlFixupHandler
    (                   : $r->headers_in, $r->headers_out)
•                                   HTML
              </body>
                      (ry

• PerlHandler / PerlResponseHandler

• $r->print(thiswork(slurp($r->filename())));
•    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)
    • $r : Apache2::RequestRec (mod_perl2)
•          $r    r    request/response   r
Apache2/mod_perl2
•   Apache2       HTTP

    •   ServerLifeCycle

    •   Protocol / Connection

    •   Filter

    •   Thread

•         mod_perl2                                 HTTP


                    ※ http://perl.apache.org/docs/2.0/user/config/config.html
Apache2/mod_perl2
Connection
•       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_perl2
PerlProcessConnectionHandler
•
•             $r         $c (Apache2::Connection)



•   sub handler { my $c = shift; ... }
•   Apache

    •
PerlProcessConnectionHandler
          SMTP
Listen 10025 gmfilter
AcceptFilter 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>
PerlProcessConnectionHandler
          SMTP




            ARM/G4/Apache2/GMFilter.pm   1:
PerlProcessConnectionHandler
          SMTP

•
    use

• $c            use Apache2::Connection

• Socket I/O                APR::Socket,
    APR::Brigade, APR::Bucket    use
PerlProcessConnectionHandler
          SMTP




            ARM/G4/Apache2/GMFilter.pm   2:handler
PerlProcessConnectionHandler
          SMTP


• Socket I/O
•           Prefork   chdir()   OK
PerlProcessConnectionHandler
          SMTP
•        Postfix pipe                                 Perl
        DB




•        :
             URL: http://rmail.jp/feature/4_5.html

•
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::Qpsmtpd)
 • async (Danga::Socket base?)
qpsmtpd

• Apache::Qpsmtpd
•
qpsmtpd
• Danga::Socket
    qpsmtpd

•         Postfix pipe
                        qpsmtpd
qpsmtpd

•               Apache         SMTP


    qpsmtpd(Apache::Qpsmtpd)



•
nginx

• http://nginx.org/
•
•              stable

• FastCGI
nginx
EmbeddedPerlModule




        ※ http://wiki.nginx.org/EmbeddedPerlModule
nginx
EmbeddedPerlModule




        ※ 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
                 (Apache              )
    Perl(mod_perl)

•                          mod_perl
• Filter
 • mod_perl1       Filter
   Apache::Filter, Apache::OutputChain
 • mod_perl2                Filter
   Perl{Input,Output}FilterHandler
•                                       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/)
• Apache C API(mod_*.c)
 • Apache            (                      )
    (Oreilly 2000; C API mod_perl
                           )


 • The Apache Modules Book
    (Prentice Hall 2007;            C API   )
•   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
mod_perl温故知新 〜Perl CGIの高速化からメールサーバまで〜

More Related Content

Viewers also liked

mod_perlで動くアプリをどう置くか #hachiojipm
mod_perlで動くアプリをどう置くか #hachiojipmmod_perlで動くアプリをどう置くか #hachiojipm
mod_perlで動くアプリをどう置くか #hachiojipm鉄次 尾形
 
モダンmod_perl入門 #yapcasia
モダンmod_perl入門 #yapcasiaモダンmod_perl入門 #yapcasia
モダンmod_perl入門 #yapcasia鉄次 尾形
 
How to Make Ruby CGI Script Faster - CGIを高速化する小手先テクニック -
How to Make Ruby CGI Script Faster - CGIを高速化する小手先テクニック -How to Make Ruby CGI Script Faster - CGIを高速化する小手先テクニック -
How to Make Ruby CGI Script Faster - CGIを高速化する小手先テクニック -kwatch
 
【ブログdeホームページ】メルマガ作成のポイント
【ブログdeホームページ】メルマガ作成のポイント【ブログdeホームページ】メルマガ作成のポイント
【ブログdeホームページ】メルマガ作成のポイントブログdeホームページ
 
Java の抽象クラス・インタフェース・無名クラスを理解しよう
Java の抽象クラス・インタフェース・無名クラスを理解しようJava の抽象クラス・インタフェース・無名クラスを理解しよう
Java の抽象クラス・インタフェース・無名クラスを理解しよう宗平 建矢
 
1秒間に250通のメールをさばくAWSの使い方
1秒間に250通のメールをさばくAWSの使い方1秒間に250通のメールをさばくAWSの使い方
1秒間に250通のメールをさばくAWSの使い方Tokyo Otaku Mode Inc.
 
省エネルギーのための自動制御と人工知能
省エネルギーのための自動制御と人工知能省エネルギーのための自動制御と人工知能
省エネルギーのための自動制御と人工知能Masaaki Nagahara
 
メールフォームからメールを送る近代的な方法 | YAPC::Kansai 2017 OSAKA
メールフォームからメールを送る近代的な方法 | YAPC::Kansai 2017 OSAKAメールフォームからメールを送る近代的な方法 | YAPC::Kansai 2017 OSAKA
メールフォームからメールを送る近代的な方法 | YAPC::Kansai 2017 OSAKAazumakuniyuki 🐈
 
メルマガシステム失敗談 #perlbeginners
メルマガシステム失敗談 #perlbeginnersメルマガシステム失敗談 #perlbeginners
メルマガシステム失敗談 #perlbeginners鉄次 尾形
 

Viewers also liked (9)

mod_perlで動くアプリをどう置くか #hachiojipm
mod_perlで動くアプリをどう置くか #hachiojipmmod_perlで動くアプリをどう置くか #hachiojipm
mod_perlで動くアプリをどう置くか #hachiojipm
 
モダンmod_perl入門 #yapcasia
モダンmod_perl入門 #yapcasiaモダンmod_perl入門 #yapcasia
モダンmod_perl入門 #yapcasia
 
How to Make Ruby CGI Script Faster - CGIを高速化する小手先テクニック -
How to Make Ruby CGI Script Faster - CGIを高速化する小手先テクニック -How to Make Ruby CGI Script Faster - CGIを高速化する小手先テクニック -
How to Make Ruby CGI Script Faster - CGIを高速化する小手先テクニック -
 
【ブログdeホームページ】メルマガ作成のポイント
【ブログdeホームページ】メルマガ作成のポイント【ブログdeホームページ】メルマガ作成のポイント
【ブログdeホームページ】メルマガ作成のポイント
 
Java の抽象クラス・インタフェース・無名クラスを理解しよう
Java の抽象クラス・インタフェース・無名クラスを理解しようJava の抽象クラス・インタフェース・無名クラスを理解しよう
Java の抽象クラス・インタフェース・無名クラスを理解しよう
 
1秒間に250通のメールをさばくAWSの使い方
1秒間に250通のメールをさばくAWSの使い方1秒間に250通のメールをさばくAWSの使い方
1秒間に250通のメールをさばくAWSの使い方
 
省エネルギーのための自動制御と人工知能
省エネルギーのための自動制御と人工知能省エネルギーのための自動制御と人工知能
省エネルギーのための自動制御と人工知能
 
メールフォームからメールを送る近代的な方法 | YAPC::Kansai 2017 OSAKA
メールフォームからメールを送る近代的な方法 | YAPC::Kansai 2017 OSAKAメールフォームからメールを送る近代的な方法 | YAPC::Kansai 2017 OSAKA
メールフォームからメールを送る近代的な方法 | YAPC::Kansai 2017 OSAKA
 
メルマガシステム失敗談 #perlbeginners
メルマガシステム失敗談 #perlbeginnersメルマガシステム失敗談 #perlbeginners
メルマガシステム失敗談 #perlbeginners
 

More from 鉄次 尾形

Perl入学式 2018年度の報告
Perl入学式 2018年度の報告Perl入学式 2018年度の報告
Perl入学式 2018年度の報告鉄次 尾形
 
【公開版】AWS基礎 for 新卒エンジニア
【公開版】AWS基礎 for 新卒エンジニア【公開版】AWS基礎 for 新卒エンジニア
【公開版】AWS基礎 for 新卒エンジニア鉄次 尾形
 
俺のこだわりデスクのその後
俺のこだわりデスクのその後俺のこだわりデスクのその後
俺のこだわりデスクのその後鉄次 尾形
 
WordPress 運用を支える Perl
WordPress 運用を支える PerlWordPress 運用を支える Perl
WordPress 運用を支える Perl鉄次 尾形
 
障害対応とその防止策
障害対応とその防止策障害対応とその防止策
障害対応とその防止策鉄次 尾形
 
働きやすい社内を目指す!二酸化炭素計測ツール
働きやすい社内を目指す!二酸化炭素計測ツール働きやすい社内を目指す!二酸化炭素計測ツール
働きやすい社内を目指す!二酸化炭素計測ツール鉄次 尾形
 
Perl ウェブ開発の中世〜CGI と Plack の間〜
Perl ウェブ開発の中世〜CGI と Plack の間〜Perl ウェブ開発の中世〜CGI と Plack の間〜
Perl ウェブ開発の中世〜CGI と Plack の間〜鉄次 尾形
 
コードの動的生成のお話
コードの動的生成のお話コードの動的生成のお話
コードの動的生成のお話鉄次 尾形
 
三角関数の加法定理はなぜ難しいのか
三角関数の加法定理はなぜ難しいのか三角関数の加法定理はなぜ難しいのか
三角関数の加法定理はなぜ難しいのか鉄次 尾形
 
Perlで生きる10年
Perlで生きる10年Perlで生きる10年
Perlで生きる10年鉄次 尾形
 
穏やかにファイルを削除する続き
穏やかにファイルを削除する続き穏やかにファイルを削除する続き
穏やかにファイルを削除する続き鉄次 尾形
 
日本全国ぶらりPerl旅
日本全国ぶらりPerl旅日本全国ぶらりPerl旅
日本全国ぶらりPerl旅鉄次 尾形
 
穏やかにファイルを削除する
穏やかにファイルを削除する穏やかにファイルを削除する
穏やかにファイルを削除する鉄次 尾形
 
最近のメールまわりのお仕事のお話
最近のメールまわりのお仕事のお話最近のメールまわりのお仕事のお話
最近のメールまわりのお仕事のお話鉄次 尾形
 
再帰、漸化式、差分方程式とアルゴリズム Gx#20
再帰、漸化式、差分方程式とアルゴリズム   Gx#20再帰、漸化式、差分方程式とアルゴリズム   Gx#20
再帰、漸化式、差分方程式とアルゴリズム Gx#20鉄次 尾形
 
超小規模環境のMySQL #mysqlcasual
超小規模環境のMySQL #mysqlcasual超小規模環境のMySQL #mysqlcasual
超小規模環境のMySQL #mysqlcasual鉄次 尾形
 
mod_perlプログラマーがYAPCで語るレガシー開発論
mod_perlプログラマーがYAPCで語るレガシー開発論mod_perlプログラマーがYAPCで語るレガシー開発論
mod_perlプログラマーがYAPCで語るレガシー開発論鉄次 尾形
 
東京近郊のPerlコミュニティのご紹介 #lcs2015
東京近郊のPerlコミュニティのご紹介 #lcs2015東京近郊のPerlコミュニティのご紹介 #lcs2015
東京近郊のPerlコミュニティのご紹介 #lcs2015鉄次 尾形
 
4月16日だからFoursquare 位置情報とライフログ
4月16日だからFoursquare 位置情報とライフログ4月16日だからFoursquare 位置情報とライフログ
4月16日だからFoursquare 位置情報とライフログ鉄次 尾形
 

More from 鉄次 尾形 (20)

Perl入学式 2018年度の報告
Perl入学式 2018年度の報告Perl入学式 2018年度の報告
Perl入学式 2018年度の報告
 
【公開版】AWS基礎 for 新卒エンジニア
【公開版】AWS基礎 for 新卒エンジニア【公開版】AWS基礎 for 新卒エンジニア
【公開版】AWS基礎 for 新卒エンジニア
 
俺のこだわりデスクのその後
俺のこだわりデスクのその後俺のこだわりデスクのその後
俺のこだわりデスクのその後
 
Hokkaido.pmと7年
Hokkaido.pmと7年Hokkaido.pmと7年
Hokkaido.pmと7年
 
WordPress 運用を支える Perl
WordPress 運用を支える PerlWordPress 運用を支える Perl
WordPress 運用を支える Perl
 
障害対応とその防止策
障害対応とその防止策障害対応とその防止策
障害対応とその防止策
 
働きやすい社内を目指す!二酸化炭素計測ツール
働きやすい社内を目指す!二酸化炭素計測ツール働きやすい社内を目指す!二酸化炭素計測ツール
働きやすい社内を目指す!二酸化炭素計測ツール
 
Perl ウェブ開発の中世〜CGI と Plack の間〜
Perl ウェブ開発の中世〜CGI と Plack の間〜Perl ウェブ開発の中世〜CGI と Plack の間〜
Perl ウェブ開発の中世〜CGI と Plack の間〜
 
コードの動的生成のお話
コードの動的生成のお話コードの動的生成のお話
コードの動的生成のお話
 
三角関数の加法定理はなぜ難しいのか
三角関数の加法定理はなぜ難しいのか三角関数の加法定理はなぜ難しいのか
三角関数の加法定理はなぜ難しいのか
 
Perlで生きる10年
Perlで生きる10年Perlで生きる10年
Perlで生きる10年
 
穏やかにファイルを削除する続き
穏やかにファイルを削除する続き穏やかにファイルを削除する続き
穏やかにファイルを削除する続き
 
日本全国ぶらりPerl旅
日本全国ぶらりPerl旅日本全国ぶらりPerl旅
日本全国ぶらりPerl旅
 
穏やかにファイルを削除する
穏やかにファイルを削除する穏やかにファイルを削除する
穏やかにファイルを削除する
 
最近のメールまわりのお仕事のお話
最近のメールまわりのお仕事のお話最近のメールまわりのお仕事のお話
最近のメールまわりのお仕事のお話
 
再帰、漸化式、差分方程式とアルゴリズム Gx#20
再帰、漸化式、差分方程式とアルゴリズム   Gx#20再帰、漸化式、差分方程式とアルゴリズム   Gx#20
再帰、漸化式、差分方程式とアルゴリズム Gx#20
 
超小規模環境のMySQL #mysqlcasual
超小規模環境のMySQL #mysqlcasual超小規模環境のMySQL #mysqlcasual
超小規模環境のMySQL #mysqlcasual
 
mod_perlプログラマーがYAPCで語るレガシー開発論
mod_perlプログラマーがYAPCで語るレガシー開発論mod_perlプログラマーがYAPCで語るレガシー開発論
mod_perlプログラマーがYAPCで語るレガシー開発論
 
東京近郊のPerlコミュニティのご紹介 #lcs2015
東京近郊のPerlコミュニティのご紹介 #lcs2015東京近郊のPerlコミュニティのご紹介 #lcs2015
東京近郊のPerlコミュニティのご紹介 #lcs2015
 
4月16日だからFoursquare 位置情報とライフログ
4月16日だからFoursquare 位置情報とライフログ4月16日だからFoursquare 位置情報とライフログ
4月16日だからFoursquare 位置情報とライフログ
 

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

  • 1. mod_perl Perl CGI fonfun (OGATA Tetsuji) Twitter: @xtetsuji 2011/7/16
  • 2.
  • 3. (1/2) • (OGATA Tetsuji) Twitter: @xtetsuji • http://post.tetsuji.jp/ ( ) • ( ) 18
  • 4. (2/2) • ( …) •( ) Perl 30 • JavaScript / Shell Script(bash) // Emacs Lisp • :
  • 5. (1/2) • fonfun( ) http://www.fonfun.co.jp/ • http://rmail.jp/ • g15 http://g15.jp/
  • 6. (2/2) • fonfun( : ) • 1999 ( : ) • 2003 4 (Perl + Apache/ mod_perl + Oracle + Postfix) •
  • 7. • • YAPC::Asia2010 • (@onagatani) • Hokkaido.pm •
  • 9. Agenda • I. mod_perl • II. mod_perl Apache • III. Apache2&mod_perl2 HTTP • IV. - qpsmtpd & nginx... •
  • 11. 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
  • 13. Apache+mod_perl? • Apache • Linux Apache mod_perl ( )
  • 14. 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
  • 15. Apache+mod_perl? • WAF • Apache Perl CGI(or PHP) • ...
  • 16. mod_perl • Apache1.3 → mod_perl1 • Apache2.x → mod_perl2 • 1 2 mod_perl • mod_perl1.99( ) • ※ Apache1 deprecated mod_perl1
  • 17. 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 )
  • 18. 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
  • 20. mod_perl1 Hello1.pm • • ($r) handler • http://hello.example.jp/ Content-Type: text/plain
  • 21. mod_perl1 Hello1.pm # apache1.3 configuration <VirtualHost A.B.C.D:80> ServerName hello.example.jp SetHandler perl-script PerlHandler Hello1 </VirtualHost>
  • 24. mod_perl2 Hello2.pm # apache2.x configuration <VirtualHost A.B.C.D:80> ServerName hello.example.jp SetHandler perl-script PerlResponseHandler Hello2 </VirtualHost>
  • 25. mod_perl2 Hello2.pm • PerlHandler → PerlResponseHandler • Hello2.pm
  • 27. mod_perl2 Hello2.pm • mod_perl1 mod_perl Apache:: • mod_perl2 mod_perl Apache2:: ModPerl:: APR:: mod_perl1 (Apache object ) Mix-in
  • 28. Hello ... • CGI WAF HTTP • ...
  • 29. II. mod_perl Apache
  • 30. mod_perl Apache • HTTP • mod_perl HTTP
  • 31. Apache • MPM Prefork • (prefork) • HTTP • HTTP ...
  • 32. Apache • • • URL DocumentRoot • (BASIC ) • MIME • ( ) • ( ) •
  • 33. Apache • • →Apache Module mod_xxxxxx) • Apache Module Perl mod_perl • mod_perl
  • 34. Apache/mod_perl • : ( ) • • Apache/mod_perl 1 2 • Apache/mod_perl 2
  • 35. :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
  • 36. :mod_perl1 ※ Practical mod_perl
  • 37. :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
  • 38. :mod_perl2 ※ Practical mod_perl
  • 39.
  • 40. : mod_rewrite • mod_rewrite • URL • ( )
  • 41. : mod_rewrite • mod_rewrite URL PerlTransHandler •( ) Perl • mod_rewrite PerlTransHandler C API ※ PerlFixupHandler
  • 42. : mod_rewrite # required “RewriteURL.pm” <VirtualHost A.B.C.D:80> ServerName hello.example.jp PerlTransHandler RewriteURL </VirtualHost>
  • 44. : mod_rewrite • • sub handler { my $r = shift; ... } •
  • 46. • PerlPostReadRequestHandler DDoS ( ) • return DONE; # cut off! • PerlAccessHandler • LB iptables
  • 47. • PerlTransHandler • mod_rewrite PerlTransHandler • URL (return REDIRECT; )
  • 48. • Perl{Authen,Authz}Handler PHP Cookie Perl • Access,Authen,Authz 3 3A
  • 49. HTML • User-Agent *.html Content-Type text/html application/xhtml+xml • PerlTypeHandler PerlFixupHandler ( : $r->headers_in, $r->headers_out)
  • 50. HTML </body> (ry • PerlHandler / PerlResponseHandler • $r->print(thiswork(slurp($r->filename())));
  • 51. i HTML HTML SBM (ry • PerlHandler / PerlResponseHandler
  • 53. • HTTP / PerlHandler / PerlResponseHandler ... • PerlLogHandler $r HTTP • DB
  • 54. mod_perl HTTP
  • 56. Apache2&mod_perl2 HTTP • mod_perl HTTP Request/Response • $r : Apache (mod_perl1) • $r : Apache2::RequestRec (mod_perl2) • $r r request/response r
  • 57. Apache2/mod_perl2 • Apache2 HTTP • ServerLifeCycle • Protocol / Connection • Filter • Thread • mod_perl2 HTTP ※ http://perl.apache.org/docs/2.0/user/config/config.html
  • 58. Apache2/mod_perl2 Connection • Connection • (HTTP )Protocol • Connection HTTP • Apache2 : mod_ssl
  • 59. Connection PerlPreConnectionHandler PerlProcessConnectionHandler ※ Practical mod_perl
  • 60. Connection •2 HTTP • PerlPreConnectionHandler • Apache • PerlProcessConnectionHandler • SMTP
  • 61. Apache2 SMTP • • Postfix pipe Perl I/O fork • DB
  • 62. Apache2 SMTP • : 2 (load balancing) • SMTP • Apache2 SMTP Postfix ...
  • 63. Apache2 SMTP • SMTP • Postfix • Apache2 SMTP 1 Postfix
  • 64. mod_perl2 PerlProcessConnectionHandler • • $r $c (Apache2::Connection) • sub handler { my $c = shift; ... } • Apache •
  • 65. PerlProcessConnectionHandler SMTP Listen 10025 gmfilter AcceptFilter 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>
  • 66. PerlProcessConnectionHandler SMTP ARM/G4/Apache2/GMFilter.pm 1:
  • 67. PerlProcessConnectionHandler SMTP • use • $c use Apache2::Connection • Socket I/O APR::Socket, APR::Brigade, APR::Bucket use
  • 68. PerlProcessConnectionHandler SMTP ARM/G4/Apache2/GMFilter.pm 2:handler
  • 69. PerlProcessConnectionHandler SMTP • Socket I/O • Prefork chdir() OK
  • 70. PerlProcessConnectionHandler SMTP • Postfix pipe Perl DB • : URL: http://rmail.jp/feature/4_5.html •
  • 72. • Apache2 Connection SMTP • • • qpsmtpd Perl SMTP
  • 74. qpsmtpd • Perl daemon ( POE ) • qpsmtpd Engine •
  • 75. qpsmtpd • qpsmtpd Engine=Transport • pipe (CGI like) • fork-server • prefork-server • Apache (Apache::Qpsmtpd) • async (Danga::Socket base?)
  • 77. qpsmtpd • Danga::Socket qpsmtpd • Postfix pipe qpsmtpd
  • 78. qpsmtpd • Apache SMTP qpsmtpd(Apache::Qpsmtpd) •
  • 80. nginx EmbeddedPerlModule ※ http://wiki.nginx.org/EmbeddedPerlModule
  • 81. nginx EmbeddedPerlModule ※ http://wiki.nginx.org/EmbeddedPerlModule
  • 82. nginx EmbeddedPerlModule • mod_perl1 • mod_perl1 •
  • 83. nginx EmbeddedPerlModule • worker(single threaded process) I/O • (mod_perl )
  • 84. nginx EmbeddedPerlModule • • mod_perl1 • C10K Apache(mod_perl)
  • 85.
  • 86. mod_perl ( ) • mod_perl • Apache2/mod_perl2 Connection HTTP (Apache ) Perl(mod_perl) • mod_perl
  • 87. • Filter • mod_perl1 Filter Apache::Filter, Apache::OutputChain • mod_perl2 Filter Perl{Input,Output}FilterHandler
  • 88. 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/)
  • 89. • Apache C API(mod_*.c) • Apache ( ) (Oreilly 2000; C API mod_perl ) • The Apache Modules Book (Prentice Hall 2007; C API )
  • 90. 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

Editor's Notes

  1. &amp;#x3088;&amp;#x308D;&amp;#x3057;&amp;#x304F;&amp;#x304A;&amp;#x9858;&amp;#x3044;&amp;#x3057;&amp;#x307E;&amp;#x3059;\n
  2. \n
  3. &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
  4. \n
  5. (&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
  6. \n
  7. &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
  8. &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
  9. \n
  10. \n
  11. \n
  12. 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
  13. &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
  14. 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
  15. \n
  16. 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
  17. 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
  18. 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
  19. [&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
  20. &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
  21. &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
  22. &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
  23. \n
  24. \n
  25. &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
  26. \n
  27. \n
  28. \n
  29. &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
  30. \n
  31. &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
  32. \n
  33. \n
  34. \n
  35. &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
  36. \n
  37. \n
  38. &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
  39. &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
  40. &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
  41. &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
  42. &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
  43. \n
  44. \n
  45. \n
  46. \n
  47. &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
  48. &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
  49. \n
  50. &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
  51. \n
  52. &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
  53. &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
  54. &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
  55. &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
  56. &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
  57. &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
  58. &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
  59. \n
  60. &amp;#x30FB;&amp;#x3088;&amp;#x3046;&amp;#x3084;&amp;#x304F;&amp;#x672C;&amp;#x984C;\n
  61. &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
  62. \n
  63. &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
  64. &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
  65. &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
  66. &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
  67. &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
  68. &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
  69. \n
  70. &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
  71. &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
  72. &amp;#x30FB;&amp;#x5148;&amp;#x307B;&amp;#x3069;&amp;#x3082;&amp;#x51FA;&amp;#x3066;&amp;#x304D;&amp;#x305F;APR=Apache Portable Runtime\n
  73. &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
  74. &amp;#x30FB;&amp;#x5148;&amp;#x307B;&amp;#x3069;&amp;#x3082;&amp;#x51FA;&amp;#x3066;&amp;#x304D;&amp;#x305F;APR=Apache Portable Runtime\n
  75. &amp;#x30FB;&amp;#x5148;&amp;#x307B;&amp;#x3069;&amp;#x3082;&amp;#x51FA;&amp;#x3066;&amp;#x304D;&amp;#x305F;APR=Apache Portable Runtime\n
  76. \n
  77. \n
  78. &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
  79. &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
  80. &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
  81. &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
  82. \n
  83. &amp;#x30FB;&amp;#x3059;&amp;#x3054;&amp;#x3044;&amp;#x7D50;&amp;#x8AD6;&amp;#x3067;&amp;#x3059;&amp;#x306D;\n
  84. &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
  85. &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
  86. &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
  87. &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
  88. &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
  89. &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
  90. &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
  91. \n
  92. \n
  93. \n
  94. \n
  95. \n
  96. &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