Submit Search
Upload
mod_perl温故知新 〜Perl CGIの高速化からメールサーバまで〜
•
8 likes
•
9,344 views
鉄次 尾形
Follow
Technology
Report
Share
Report
Share
1 of 91
Recommended
mod_perl hacks PHP
mod_perl hacks PHP
鉄次 尾形
Devel::NYTProf
Devel::NYTProf
clkao
OpenResty/Lua 70+ Advanced Programming Skills and Optimization tips
OpenResty/Lua 70+ Advanced Programming Skills and Optimization tips
Ho Kim
PyconRu 2016. Осторожно, DSL!
PyconRu 2016. Осторожно, DSL!
Ivan Tsyganov
Тененёв Анатолий, Boost.Asio в алгоритмической торговле
Тененёв Анатолий, Boost.Asio в алгоритмической торговле
Platonov Sergey
Александра Калинина "Trojan War: SinonJS"
Александра Калинина "Trojan War: SinonJS"
Fwdays
Lightning talk second
Lightning talk second
ShinUsuda
淺談編譯器最佳化技術
淺談編譯器最佳化技術
Kito Cheng
Recommended
mod_perl hacks PHP
mod_perl hacks PHP
鉄次 尾形
Devel::NYTProf
Devel::NYTProf
clkao
OpenResty/Lua 70+ Advanced Programming Skills and Optimization tips
OpenResty/Lua 70+ Advanced Programming Skills and Optimization tips
Ho Kim
PyconRu 2016. Осторожно, DSL!
PyconRu 2016. Осторожно, DSL!
Ivan Tsyganov
Тененёв Анатолий, Boost.Asio в алгоритмической торговле
Тененёв Анатолий, Boost.Asio в алгоритмической торговле
Platonov Sergey
Александра Калинина "Trojan War: SinonJS"
Александра Калинина "Trojan War: SinonJS"
Fwdays
Lightning talk second
Lightning talk second
ShinUsuda
淺談編譯器最佳化技術
淺談編譯器最佳化技術
Kito Cheng
mod_perlで動くアプリをどう置くか #hachiojipm
mod_perlで動くアプリをどう置くか #hachiojipm
鉄次 尾形
モダンmod_perl入門 #yapcasia
モダンmod_perl入門 #yapcasia
鉄次 尾形
How to Make Ruby CGI Script Faster - CGIを高速化する小手先テクニック -
How to Make Ruby CGI Script Faster - CGIを高速化する小手先テクニック -
kwatch
【ブログdeホームページ】メルマガ作成のポイント
【ブログdeホームページ】メルマガ作成のポイント
ブログdeホームページ
Java の抽象クラス・インタフェース・無名クラスを理解しよう
Java の抽象クラス・インタフェース・無名クラスを理解しよう
宗平 建矢
1秒間に250通のメールをさばくAWSの使い方
1秒間に250通のメールをさばくAWSの使い方
Tokyo Otaku Mode Inc.
省エネルギーのための自動制御と人工知能
省エネルギーのための自動制御と人工知能
Masaaki Nagahara
メールフォームからメールを送る近代的な方法 | YAPC::Kansai 2017 OSAKA
メールフォームからメールを送る近代的な方法 | YAPC::Kansai 2017 OSAKA
azumakuniyuki 🐈
メルマガシステム失敗談 #perlbeginners
メルマガシステム失敗談 #perlbeginners
鉄次 尾形
Perl入学式 2018年度の報告
Perl入学式 2018年度の報告
鉄次 尾形
【公開版】AWS基礎 for 新卒エンジニア
【公開版】AWS基礎 for 新卒エンジニア
鉄次 尾形
俺のこだわりデスクのその後
俺のこだわりデスクのその後
鉄次 尾形
Hokkaido.pmと7年
Hokkaido.pmと7年
鉄次 尾形
WordPress 運用を支える Perl
WordPress 運用を支える Perl
鉄次 尾形
障害対応とその防止策
障害対応とその防止策
鉄次 尾形
働きやすい社内を目指す!二酸化炭素計測ツール
働きやすい社内を目指す!二酸化炭素計測ツール
鉄次 尾形
Perl ウェブ開発の中世〜CGI と Plack の間〜
Perl ウェブ開発の中世〜CGI と Plack の間〜
鉄次 尾形
コードの動的生成のお話
コードの動的生成のお話
鉄次 尾形
三角関数の加法定理はなぜ難しいのか
三角関数の加法定理はなぜ難しいのか
鉄次 尾形
Perlで生きる10年
Perlで生きる10年
鉄次 尾形
穏やかにファイルを削除する続き
穏やかにファイルを削除する続き
鉄次 尾形
日本全国ぶらりPerl旅
日本全国ぶらりPerl旅
鉄次 尾形
More Related Content
Viewers also liked
mod_perlで動くアプリをどう置くか #hachiojipm
mod_perlで動くアプリをどう置くか #hachiojipm
鉄次 尾形
モダンmod_perl入門 #yapcasia
モダンmod_perl入門 #yapcasia
鉄次 尾形
How to Make Ruby CGI Script Faster - CGIを高速化する小手先テクニック -
How to Make Ruby CGI Script Faster - CGIを高速化する小手先テクニック -
kwatch
【ブログdeホームページ】メルマガ作成のポイント
【ブログdeホームページ】メルマガ作成のポイント
ブログdeホームページ
Java の抽象クラス・インタフェース・無名クラスを理解しよう
Java の抽象クラス・インタフェース・無名クラスを理解しよう
宗平 建矢
1秒間に250通のメールをさばくAWSの使い方
1秒間に250通のメールをさばくAWSの使い方
Tokyo Otaku Mode Inc.
省エネルギーのための自動制御と人工知能
省エネルギーのための自動制御と人工知能
Masaaki Nagahara
メールフォームからメールを送る近代的な方法 | YAPC::Kansai 2017 OSAKA
メールフォームからメールを送る近代的な方法 | YAPC::Kansai 2017 OSAKA
azumakuniyuki 🐈
メルマガシステム失敗談 #perlbeginners
メルマガシステム失敗談 #perlbeginners
鉄次 尾形
Viewers also liked
(9)
mod_perlで動くアプリをどう置くか #hachiojipm
mod_perlで動くアプリをどう置くか #hachiojipm
モダンmod_perl入門 #yapcasia
モダンmod_perl入門 #yapcasia
How to Make Ruby CGI Script Faster - CGIを高速化する小手先テクニック -
How to Make Ruby CGI Script Faster - CGIを高速化する小手先テクニック -
【ブログdeホームページ】メルマガ作成のポイント
【ブログdeホームページ】メルマガ作成のポイント
Java の抽象クラス・インタフェース・無名クラスを理解しよう
Java の抽象クラス・インタフェース・無名クラスを理解しよう
1秒間に250通のメールをさばくAWSの使い方
1秒間に250通のメールをさばくAWSの使い方
省エネルギーのための自動制御と人工知能
省エネルギーのための自動制御と人工知能
メールフォームからメールを送る近代的な方法 | YAPC::Kansai 2017 OSAKA
メールフォームからメールを送る近代的な方法 | YAPC::Kansai 2017 OSAKA
メルマガシステム失敗談 #perlbeginners
メルマガシステム失敗談 #perlbeginners
More from 鉄次 尾形
Perl入学式 2018年度の報告
Perl入学式 2018年度の報告
鉄次 尾形
【公開版】AWS基礎 for 新卒エンジニア
【公開版】AWS基礎 for 新卒エンジニア
鉄次 尾形
俺のこだわりデスクのその後
俺のこだわりデスクのその後
鉄次 尾形
Hokkaido.pmと7年
Hokkaido.pmと7年
鉄次 尾形
WordPress 運用を支える Perl
WordPress 運用を支える Perl
鉄次 尾形
障害対応とその防止策
障害対応とその防止策
鉄次 尾形
働きやすい社内を目指す!二酸化炭素計測ツール
働きやすい社内を目指す!二酸化炭素計測ツール
鉄次 尾形
Perl ウェブ開発の中世〜CGI と Plack の間〜
Perl ウェブ開発の中世〜CGI と Plack の間〜
鉄次 尾形
コードの動的生成のお話
コードの動的生成のお話
鉄次 尾形
三角関数の加法定理はなぜ難しいのか
三角関数の加法定理はなぜ難しいのか
鉄次 尾形
Perlで生きる10年
Perlで生きる10年
鉄次 尾形
穏やかにファイルを削除する続き
穏やかにファイルを削除する続き
鉄次 尾形
日本全国ぶらりPerl旅
日本全国ぶらりPerl旅
鉄次 尾形
穏やかにファイルを削除する
穏やかにファイルを削除する
鉄次 尾形
最近のメールまわりのお仕事のお話
最近のメールまわりのお仕事のお話
鉄次 尾形
再帰、漸化式、差分方程式とアルゴリズム Gx#20
再帰、漸化式、差分方程式とアルゴリズム Gx#20
鉄次 尾形
超小規模環境のMySQL #mysqlcasual
超小規模環境のMySQL #mysqlcasual
鉄次 尾形
mod_perlプログラマーがYAPCで語るレガシー開発論
mod_perlプログラマーがYAPCで語るレガシー開発論
鉄次 尾形
東京近郊のPerlコミュニティのご紹介 #lcs2015
東京近郊のPerlコミュニティのご紹介 #lcs2015
鉄次 尾形
4月16日だからFoursquare 位置情報とライフログ
4月16日だからFoursquare 位置情報とライフログ
鉄次 尾形
More from 鉄次 尾形
(20)
Perl入学式 2018年度の報告
Perl入学式 2018年度の報告
【公開版】AWS基礎 for 新卒エンジニア
【公開版】AWS基礎 for 新卒エンジニア
俺のこだわりデスクのその後
俺のこだわりデスクのその後
Hokkaido.pmと7年
Hokkaido.pmと7年
WordPress 運用を支える Perl
WordPress 運用を支える Perl
障害対応とその防止策
障害対応とその防止策
働きやすい社内を目指す!二酸化炭素計測ツール
働きやすい社内を目指す!二酸化炭素計測ツール
Perl ウェブ開発の中世〜CGI と Plack の間〜
Perl ウェブ開発の中世〜CGI と Plack の間〜
コードの動的生成のお話
コードの動的生成のお話
三角関数の加法定理はなぜ難しいのか
三角関数の加法定理はなぜ難しいのか
Perlで生きる10年
Perlで生きる10年
穏やかにファイルを削除する続き
穏やかにファイルを削除する続き
日本全国ぶらりPerl旅
日本全国ぶらりPerl旅
穏やかにファイルを削除する
穏やかにファイルを削除する
最近のメールまわりのお仕事のお話
最近のメールまわりのお仕事のお話
再帰、漸化式、差分方程式とアルゴリズム Gx#20
再帰、漸化式、差分方程式とアルゴリズム Gx#20
超小規模環境のMySQL #mysqlcasual
超小規模環境のMySQL #mysqlcasual
mod_perlプログラマーがYAPCで語るレガシー開発論
mod_perlプログラマーがYAPCで語るレガシー開発論
東京近郊のPerlコミュニティのご紹介 #lcs2015
東京近郊のPerlコミュニティのご紹介 #lcs2015
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 •
8.
Agenda
9.
Agenda • I. mod_perl •
II. mod_perl Apache • III. Apache2&mod_perl2 HTTP • IV. - qpsmtpd & nginx... •
10.
I. mod_perl
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
12.
Apache+mod_perl? • Apache+mod_perl+WAF
mod_perl … • •
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
19.
hello.pl
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>
22.
mod_perl1 Hello1.pm
23.
mod_perl2 Hello2.pm • •
mod_perl1 •
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
26.
mod_perl2 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>
43.
: mod_rewrite
44.
: mod_rewrite • • sub
handler { my $r = shift; ... } •
45.
• •
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
52.
Kepler/Apache/ConvertEmoji.pm
53.
• HTTP
/ PerlHandler / PerlResponseHandler ... • PerlLogHandler $r HTTP • DB
54.
•
mod_perl HTTP
55.
III. Apache2&mod_perl2
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 •
71.
IV. qpsmtpd & nginx...
72.
• Apache2 Connection
SMTP • • • qpsmtpd Perl SMTP
73.
qpsmtpd • http://smtpd.develooper.com/ •
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?)
76.
qpsmtpd • Apache::Qpsmtpd •
77.
qpsmtpd • Danga::Socket
qpsmtpd • Postfix pipe qpsmtpd
78.
qpsmtpd •
Apache SMTP qpsmtpd(Apache::Qpsmtpd) •
79.
nginx • http://nginx.org/ • •
stable • FastCGI
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
&#x3088;&#x308D;&#x3057;&#x304F;&#x304A;&#x9858;&#x3044;&#x3057;&#x307E;&#x3059;\n
\n
&#x4ECA;&#x56DE;&#x306E;&#x69D8;&#x306A;&#x30AB;&#x30F3;&#x30D5;&#x30A1;&#x30EC;&#x30F3;&#x30B9;&#x3084;&#x52C9;&#x5F37;&#x4F1A;&#x306B;&#x51FA;&#x305F;&#x611F;&#x60F3;&#x3092;&#x767A;&#x8868;&#x3059;&#x308B;&#x305F;&#x3081;&#x306B;&#x30D6;&#x30ED;&#x30B0;&#x3092;&#x4F5C;&#x3063;&#x3066;&#x307F;&#x307E;&#x3057;&#x305F;\n
\n
(&#x3053;&#x3053;&#x3067;&#x306F;&#x5927;&#x5B66;&#x304B;&#x3089;&#x5165;&#x793E;&#x307E;&#x3067;&#x306E;&#x3053;&#x3068;&#x3092;&#x8AAC;&#x660E;&#x3057;&#x3066;&#x3001;&#x4ED6;&#x306E;&#x8AAC;&#x660E;&#x306F;&#x5F8C;&#x306B;&#x56DE;&#x3059;)\nG15&#x306F;OSS&#x6D3B;&#x52D5;&#x304C;&#x6D3B;&#x767A;&#x306A;&#x4EBA;&#x304C;&#x96C6;&#x307E;&#x3063;&#x3066;&#x3001;&#x4E3B;&#x306B;DebianJP&#x306E;&#x30DB;&#x30B9;&#x30C6;&#x30A3;&#x30F3;&#x30B0;&#x3092;&#x30B5;&#x30DD;&#x30FC;&#x30C8;&#x3057;&#x3066;&#x3044;&#x308B;&#x7D44;&#x7E54;\nfonfun&#x3082;&#x30B5;&#x30FC;&#x30D0;&#x8CC7;&#x6E90;&#x3092;&#x63D0;&#x4F9B;&#x3057;&#x3066;&#x3044;&#x308B;&#x7E4B;&#x304C;&#x308A;&#x304C;&#x3042;&#x308A;&#x307E;&#x3059;\n
\n
&#x793E;&#x540D;&#x5909;&#x66F4;&#x304B;&#x3089;5&#x5E74;&#x307B;&#x3069;&#x7D4C;&#x3064;&#x304C;&#x3001;&#x30CD;&#x30C3;&#x30C8;&#x30D3;&#x30EC;&#x30C3;&#x30B8;&#x306E;&#x307B;&#x3046;&#x304C;&#x901A;&#x308A;&#x304C;&#x3088;&#x3044;&#x5834;&#x5408;&#x3082;&#x3042;&#x308B;(Debian&#x95A2;&#x9023;)\n&#x30EA;&#x30E2;&#x30FC;&#x30C8;&#x30E1;&#x30FC;&#x30EB;&#x306E;&#x4E2D;&#x8EAB;&#x306F;&#x3001;&#x4ECA;&#x3082;&#x591A;&#x304F;&#x306F;&#x30EC;&#x30AC;&#x30B7;&#x30FC;\n&#x7B2C;1&#x4E16;&#x4EE3;&#x306F;&#x30B5;&#x30FC;&#x30D0;1&#x53F0;&#x3002;Load Average3&#x6841;&#x3068;&#x304B;&#x5E73;&#x6C17;\n&#x4ED6;&#x6848;&#x4EF6;&#x3067;WAF+DBIC+TT&#x3084;&#x3063;&#x305F;&#x3053;&#x3068;&#x3042;&#x308B;&#x304C;&#x305D;&#x306E;&#x7A0B;&#x5EA6;&#x3067;&#x3059;\n
&#x30FB;YAPC::Asia2010&#x306E;&#x5730;&#x57DF;pm&#x306E;&#x30BB;&#x30C3;&#x30B7;&#x30E7;&#x30F3;&#x306F;&#x3001;&#x884C;&#x3063;&#x305F;&#x3089;&#x6E80;&#x5E2D;&#x3067;&#x8074;&#x3051;&#x306A;&#x304B;&#x3063;&#x305F;&#x3067;&#x3059;\n
\n
\n
\n
Plack&#x3068;&#x3044;&#x3046;&#x3088;&#x308A;mod_perl&#x306E;&#x6319;&#x52D5;&#x304C;&#x8907;&#x96D1;\n
&#x3053;&#x308C;&#x306F;&#x534A;&#x5E74;&#x524D;&#x306E;&#x8A71;&#x984C;\nYAPC::Asia2010&#x3067;&#x6620;&#x753B;&#x306E;&#x3088;&#x3046;&#x306A;&#x30CF;&#x30C3;&#x30AB;&#x30FC;&#x306B;&#x306A;&#x308A;&#x305F;&#x304B;&#x3063;&#x305F;&#x65B9;\n&#x5F15;&#x7528;&#x306E;&#x8A31;&#x53EF;&#x306F;&#x5F97;&#x3066;&#x3044;&#x307E;&#x305B;&#x3093;&#x304C;&#x2026;\n&#x958B;&#x767A;&#x304C;&#x6D3B;&#x767A;&#x306A;Plack&#x3060;&#x304C;&#x3001;&#x307E;&#x3060;&#x300C;&#x3053;&#x306A;&#x308C;&#x3066;&#x3044;&#x306A;&#x3044;&#x300D;&#x90E8;&#x5206;&#x3082;&#x3042;&#x308B;&#x306E;&#x304B;&#x3082;&#x3057;&#x308C;&#x307E;&#x305B;&#x3093;&#x306D;\n&#x307F;&#x306A;&#x3055;&#x3093;&#x304C;mod_perl2&#x3067;&#x305D;&#x306E;&#x30D0;&#x30B0;&#x3092;&#x8E0F;&#x3093;&#x3067;&#x30D0;&#x30C3;&#x30C9;&#x30CE;&#x30A6;&#x30CF;&#x30A6;&#x3092;&#x958B;&#x62D3;&#x3057;&#x3066;&#x3044;&#x304F;&#x53EF;&#x80FD;&#x6027;&#x3082;\n
WAF&#x3092;&#x4ED6;&#x306E;&#x30A6;&#x30A7;&#x30D6;&#x30B5;&#x30FC;&#x30D0;&#x3067;&#x52D5;&#x4F5C;&#x3055;&#x305B;&#x308C;&#x3070;&#x3088;&#x3044;&#x3068;&#x3044;&#x3046;&#x4EBA;&#x3082;&#x3044;&#x308B;&#x3067;&#x3057;&#x3087;&#x3046;&#x304C;&#x3001;Apache+mod_perl&#x3067;&#x52D5;&#x4F5C;&#x3055;&#x305B;&#x308B;&#x30B1;&#x30FC;&#x30B9;&#x304C;&#x591A;&#x3044;&#x306E;&#x3067;&#x306F;&#xFF1F;\nApache&#x306E;&#x30B7;&#x30A7;&#x30A2;&#x306B;&#x3064;&#x3044;&#x3066;&#x5F8C;&#x307B;&#x3069;&#x898B;&#x3066;&#x3044;&#x304D;&#x307E;&#x3059;\n
\n
IIS&#x98DF;&#x3063;&#x3066;&#x6210;&#x9577;&#x4E2D;\n2009&#x5E74;&#x306E;&#x304F;&#x307C;&#x307F;&#x3068;Other&#x304C;&#x3088;&#x304F;&#x5206;&#x304B;&#x3089;&#x306A;&#x304B;&#x3063;&#x305F;(lighttpd&#x3067;&#x306F;&#x306A;&#x3044;&#x307F;&#x305F;&#x3044;)\nnginx&#x306E;&#x4F38;&#x3073;&#x304C;&#x9762;&#x767D;&#x3044;&#x3067;&#x3059;&#x306D;\n
IIS&#x98DF;&#x3063;&#x3066;&#x6210;&#x9577;&#x4E2D;\n2009&#x5E74;&#x306E;&#x304F;&#x307C;&#x307F;&#x3068;Other&#x304C;&#x3088;&#x304F;&#x5206;&#x304B;&#x3089;&#x306A;&#x304B;&#x3063;&#x305F;(lighttpd&#x3067;&#x306F;&#x306A;&#x3044;&#x307F;&#x305F;&#x3044;)\nnginx&#x306E;&#x4F38;&#x3073;&#x304C;&#x9762;&#x767D;&#x3044;&#x3067;&#x3059;&#x306D;\n
mod_perl&#x3067;PHP&#x30D7;&#x30ED;&#x30B0;&#x30E9;&#x30E0;&#x3092;&#x3044;&#x3058;&#x3089;&#x305A;&#x3068;&#x3082;&#x8A8D;&#x8A3C;&#x3092;&#x5165;&#x308C;&#x308B;&#x3053;&#x3068;&#x3059;&#x3089;&#x53EF;&#x80FD;\nPerl CGI&#x306E;&#x30EC;&#x30AC;&#x30B7;&#x30FC;&#x30B3;&#x30F3;&#x30C6;&#x30F3;&#x30C4;&#x3092;&#x6E21;&#x3055;&#x308C;&#x3066;&#x3001;&#x305D;&#x308C;&#x3092;mod_perl&#x3067;&#x52D5;&#x4F5C;&#x3055;&#x305B;&#x308B;&#x30DE;&#x30A4;&#x30B0;&#x30EC;&#x30FC;&#x30B7;&#x30E7;&#x30F3;&#x80FD;&#x529B;&#x304C;&#x3042;&#x308B;&#x3060;&#x3051;&#x3067;&#x3082;&#x826F;&#x3044;&#x5834;&#x5408;&#x304C;&#x3042;&#x308B;&#x306E;&#x3067;&#x306F;&#xFF1F;\n
[&#x5F8C;&#x8FF0;]&#x6587;&#x6CD5;&#x306E;&#x9055;&#x3044;&#x3068;&#x3044;&#x3046;&#x304B;&#x3001;mod_perl1&#x306E;&#x5DE8;&#x5927;&#x306A;&#x30AF;&#x30E9;&#x30B9;&#x69CB;&#x9020;&#x304C;mod_perl2&#x3067;&#x5C0F;&#x3055;&#x304F;&#x5206;&#x5272;&#x3055;&#x308C;&#x305F;\nmod_perl1.99&#x306F;Apache2&#x306E;&#x30D9;&#x30FC;&#x30BF;&#x7248;&#x306E;&#x6642;&#x306B;&#x4E00;&#x77AC;&#x4F5C;&#x3089;&#x308C;&#x305F;mod_perl\nmod_perl1.99&#x306F;mod_perl{1,2}&#x306E;&#x5408;&#x3044;&#x306E;&#x5B50;&#x306E;&#x4E0D;&#x601D;&#x8B70;&#x306A;&#x6587;&#x6CD5;&#x3067;&#x89E6;&#x308B;&#x306A;&#x5371;&#x967A;\n&#x6614;&#x3053;&#x308C;&#x306B;&#x5F53;&#x305F;&#x3063;&#x3066;&#x9177;&#x3044;&#x76EE;&#x306B;&#x3042;&#x3063;&#x305F;&#x3053;&#x3068;&#x304C;&#x3042;&#x308A;&#x307E;&#x3059;\nCatalyst::Engine&#x3082;Plack&#x3082;mod_perl1.99&#x306B;&#x306F;&#x5BFE;&#x5FDC;&#x3057;&#x3066;&#x3044;&#x306A;&#x3044;&#x306F;&#x305A;\n
&#x5F53;&#x7136;Apache1&#x3068;Apache2&#x306E;&#x6B74;&#x53F2;&#x306F;&#x305D;&#x308C;&#x3088;&#x308A;&#x524D;\n2003&#x5E74;&#x306B;&#x306F;Apache2/mod_perl2&#x304C;&#x51FA;&#x3066;&#x3044;&#x305F;&#x3051;&#x3069;&#x3001;&#x5F53;&#x6642;&#x306F;&#x307E;&#x3060;&#x3053;&#x306A;&#x308C;&#x3066;&#x3044;&#x306A;&#x304B;&#x3063;&#x305F;&#x306E;&#x3067;&#x3001;2003&#x5E74;&#x306E;&#x30EA;&#x30E2;&#x30FC;&#x30C8;&#x30E1;&#x30FC;&#x30EB;&#x7B2C;4&#x4E16;&#x4EE3;&#x306F;Apache1.3/mod_perl1&#x3067;&#x4F5C;&#x6210;&#x3057;&#x307E;&#x3057;&#x305F;\n
&#x66F8;&#x3044;&#x305F;&#x3053;&#x3068;&#x304C;&#x3042;&#x308B;&#x65B9;&#x3082;&#x591A;&#x3044;&#x3001;&#x57FA;&#x672C;&#x3067;&#x3059;&#x306D;\n&#x30B9;&#x30DA;&#x30FC;&#x30B9;&#x306E;&#x90FD;&#x5408;&#x3067;&#x6539;&#x884C;&#x3092; \\ &#x3067;&#x30A8;&#x30B9;&#x30B1;&#x30FC;&#x30D7;&#x3057;&#x3066;&#x3044;&#x307E;&#x3059;&#x3002;&#x5B9F;&#x969B;&#x306B;&#x3053;&#x3046;&#x3044;&#x3046;&#x66F8;&#x304D;&#x65B9;&#x3082;&#x3067;&#x304D;&#x307E;&#x3059;\n
&#x30FB;&#x4ECA;&#x56DE;&#x306E;&#x30D7;&#x30EC;&#x30BC;&#x30F3;&#x3044;&#x308D;&#x3044;&#x308D;&#x60A9;&#x307F;&#x307E;&#x3057;&#x305F;&#x3002;&#x8074;&#x8B1B;&#x8005;&#x306E;&#x30B9;&#x30AD;&#x30EB;&#x306A;&#x3069;&#x3082;&#x3002;\n&#x30FB;&#x5C0F;&#x3055;&#x3044;&#x6587;&#x5B57;&#x3092;&#x898B;&#x305B;&#x7D9A;&#x3051;&#x308B;&#x306E;&#x3082;&#x6C17;&#x304C;&#x5F15;&#x3051;&#x308B;&#x306E;&#x3067;&#x3001;&#x4ECA;&#x56DE;&#x306F;&#x30B3;&#x30FC;&#x30C9;&#x306F;&#x5927;&#x80C6;&#x306B;&#x629C;&#x7C8B;&#x3057;&#x3066;&#x304A;&#x9001;&#x308A;&#x3057;&#x307E;&#x3059;\n&#x30FB;&#x8074;&#x8B1B;&#x8005;&#x306E;&#x30B9;&#x30AD;&#x30EB;&#x306F;&#x4ECA;&#x56DE;&#x9AD8;&#x3044;&#x3067;&#x3059;&#x306D;&#x2026;&#x3002;&#x524D;&#x56DE; #4 &#x306E;&#x8CC7;&#x6599;&#x3092;&#x898B;&#x3066;&#x3082;&#x3046;&#x3061;&#x3087;&#x3063;&#x3068;&#x521D;&#x5FC3;&#x8005;&#x304C;&#x6765;&#x308B;&#x3068;&#x601D;&#x3063;&#x3066;&#x3044;&#x305F;&#x7BC0;&#x304C;&#x3042;&#x308A;&#x307E;&#x3059;\n&#x30FB;&#x5B9F;&#x306F;CGI.pm&#x306F;mod_perl&#x5BFE;&#x5FDC;&#x3057;&#x3066;&#x3044;&#x307E;&#x3059;&#x3002;&#x8208;&#x5473;&#x304C;&#x3042;&#x308B;&#x65B9;&#x306F;&#x30BD;&#x30FC;&#x30B9;&#x30B3;&#x30FC;&#x30C9;&#x3092;&#x3002;\n
\n
\n
&#x30FB;&#x3056;&#x3063;&#x304F;&#x308A;&#x3044;&#x308D;&#x3044;&#x308D;&#x7701;&#x7565;&#x3057;&#x3066;&#x3044;&#x307E;&#x3059; (VirutualHost&#x4EE5;&#x524D;&#x3001;Hello1.pm&#x306B;&#x30D1;&#x30B9;&#x901A;&#x3059;&#x306A;&#x3069;)\n&#x30FB;&#x30D1;&#x30B9;&#x306E;&#x901A;&#x3057;&#x65B9;&#x306F;PerlSwitches&#x65B9;&#x6CD5;&#x3082;&#x3042;&#x308A;&#x307E;&#x3059;&#x304C;&#x3001;@INC&#x4EE5;&#x4E0B;&#x306B;&#x914D;&#x7F6E;&#x3057;&#x3066;&#x3057;&#x307E;&#x3046;&#x306E;&#x304C;&#x500B;&#x4EBA;&#x7684;&#x306B;&#x597D;&#x304D;\n
\n
\n
\n
&#x300C;&#x660E;&#x5FEB;&#x306B;&#x306A;&#x3063;&#x305F;&#x300D;&#x3068;&#x3044;&#x3046;&#x3068;&#x3053;&#x308D;&#x306F;&#x5F8C;&#x3067;&#x5206;&#x304B;&#x308B;&#x3068;&#x3053;&#x308D;&#x3067;&#x3059;\n
\n
&#x5148;&#x307B;&#x3069;&#x3082;&#x3001;mod_perl2&#x3067;&#x306F;$r->print()&#x306E;&#x305F;&#x3081;&#x306B;Apache2::RequestIO&#x3092;use&#x3057;&#x305F;&#x308A;&#x3057;&#x3066;&#x3044;&#x307E;&#x3057;&#x305F;&#x306D;\n
\n
\n
\n
&#x30FB;worker&#x3059;&#x306A;&#x308F;&#x3061;&#x30B9;&#x30EC;&#x30C3;&#x30C9;&#x3068;&#x3044;&#x3046;&#x3082;&#x306E;&#x3082;&#x3042;&#x308A;&#x307E;&#x3059;&#x304C;&#x3001;&#x30B9;&#x30EC;&#x30C3;&#x30C9;&#x30BB;&#x30FC;&#x30D5;&#x306A;Perl&#x30D7;&#x30ED;&#x30B0;&#x30E9;&#x30E0;(&#x3044;&#x3084;&#x3001;Perl&#x306B;&#x9650;&#x3089;&#x305A;)&#x306F;&#x96E3;&#x3057;&#x3044;&#x306E;&#x3067;&#x907F;&#x3051;&#x307E;&#x3059;\n
\n
\n
&#x30FB;&#x5358;&#x306B;&#x300C;&#x30D5;&#x30A7;&#x30FC;&#x30BA;&#x300D;&#x3068;&#x3082;&#x8A00;&#x3044;&#x307E;&#x3059;\n
&#x30FB;&#x7686;&#x3055;&#x3093;&#x306E;&#x8208;&#x5473;&#x306E;&#x3042;&#x308B;&#x30EC;&#x30B9;&#x30DD;&#x30F3;&#x30B9;&#x51E6;&#x7406;&#x3092;&#x30AA;&#x30EC;&#x30F3;&#x30B8;&#x3067;&#x5857;&#x3063;&#x3066;&#x3044;&#x307E;&#x3059;\n&#x30FB;PerlHandler Apache::Registry &#x3068;&#x306F;&#x30B3;&#x30EC;\n
&#x30FB;&#x51E6;&#x7406;&#x30D5;&#x30A7;&#x30FC;&#x30BA;&#x3092;&#x4E00;&#x5DE1;&#x3057;&#x305F;&#x30EA;&#x30AF;&#x30A8;&#x30B9;&#x30C8;&#x30B5;&#x30A4;&#x30AF;&#x30EB;&#x306E;&#x56F3;&#x3067;&#x3059;\n&#x30FB;&#x3053;&#x308C;&#x306F;Apache1&#x306E;&#x56F3;&#x306A;&#x306E;&#x3067;&#x3001;Perl*Handler&#x3067;&#x306F;&#x306A;&#x304F;&#x5F79;&#x5272;&#x540D;&#x306E;&#x82F1;&#x5358;&#x8A9E;&#x306B;&#x306A;&#x3063;&#x3066;&#x3044;&#x307E;&#x3059;\n&#x30FB;&#x7C21;&#x5358;&#x306B;&#x8AAD;&#x307F;&#x66FF;&#x3048;&#x3067;&#x304D;&#x307E;&#x3059;\n&#x30FB;&#x5404;&#x30D5;&#x30A7;&#x30FC;&#x30BA;&#x3067;&#x30A8;&#x30E9;&#x30FC;&#x3092;return&#x3059;&#x308B;&#x3068;&#x3001;&#x305D;&#x3053;&#x3067;response&#x3092;&#x3082;&#x3052;&#x3063;&#x3066;logging&#x306B;&#x884C;&#x304D;&#x307E;&#x3059;\n
&#x30FB;PerlHandler &#x2192; PerlResponseHandler\n&#x30FB;PerlResponseHandler ModPerl::Registry &#x306F;&#x3053;&#x308C;&#x3067;&#x3059;\n&#x30FB;PerlMapToStorageHandler &#x306F; mod_perl1 &#x306E; PerlTransHandler &#x306E;&#x4ED5;&#x4E8B;&#x3092;&#x5206;&#x696D;&#x3059;&#x308B;&#x305F;&#x3081;&#x306B;&#x51FA;&#x6765;&#x305F;&#x65B0;&#x3057;&#x3044;&#x30D5;&#x30A7;&#x30FC;&#x30BA;\n
&#x30FB;&#x30D5;&#x30A3;&#x30EB;&#x30BF;&#x306B;&#x3064;&#x3044;&#x3066;&#x306F;&#x5272;&#x611B;&#x3057;&#x307E;&#x3059;\n
\n
\n
\n
\n
&#x30FB;Perl&#x306A;&#x3093;&#x3067;mod_rewrite&#x306B;&#x5BB9;&#x6613;&#x306B;&#x3067;&#x304D;&#x306A;&#x3044;&#x3053;&#x3068;&#x3001;DB&#x3055;&#x3048;&#x5F15;&#x3051;&#x307E;&#x3059;\n&#x30FB;DECLINED&#x3068;&#x3044;&#x3046;&#x3082;&#x306E;&#x3082;&#x3042;&#x308A;&#x307E;&#x3059;&#x3002;&#x5F8C;&#x7D9A;&#x306E;&#x51E6;&#x7406;&#x306E;&#x305F;&#x3081;&#x3001;&#x5B9F;&#x969B;&#x306F;&#x4F55;&#x3082;&#x3059;&#x308B;&#x3053;&#x3068;&#x304C;&#x306A;&#x304B;&#x3063;&#x305F;&#x3068;&#x300C;&#x5618;&#x3092;&#x4ED8;&#x304F;&#x300D;&#x5E38;&#x5957;&#x53E5;&#x3067;&#x3059;\n
&#x30FB;Perl&#x306A;&#x3093;&#x3067;mod_rewrite&#x306B;&#x5BB9;&#x6613;&#x306B;&#x3067;&#x304D;&#x306A;&#x3044;&#x3053;&#x3068;&#x3001;DB&#x3055;&#x3048;&#x5F15;&#x3051;&#x307E;&#x3059;\n&#x30FB;DECLINED&#x3068;&#x3044;&#x3046;&#x3082;&#x306E;&#x3082;&#x3042;&#x308A;&#x307E;&#x3059;&#x3002;&#x5F8C;&#x7D9A;&#x306E;&#x51E6;&#x7406;&#x306E;&#x305F;&#x3081;&#x3001;&#x5B9F;&#x969B;&#x306F;&#x4F55;&#x3082;&#x3059;&#x308B;&#x3053;&#x3068;&#x304C;&#x306A;&#x304B;&#x3063;&#x305F;&#x3068;&#x300C;&#x5618;&#x3092;&#x4ED8;&#x304F;&#x300D;&#x5E38;&#x5957;&#x53E5;&#x3067;&#x3059;\n
\n
&#x30FB;&#x975E;&#x5E38;&#x306B;&#x65E9;&#x3044;&#x30D5;&#x30A7;&#x30FC;&#x30BA;&#x3067;&#x51E6;&#x7406;&#x3092;&#x6253;&#x3061;&#x5207;&#x308B;&#x3068;&#x3044;&#x3046;&#x3068;&#x3053;&#x308D;&#x306B;&#x918D;&#x9190;&#x5473;&#x304C;&#x3042;&#x308B;\n&#x30FB;&#x3055;&#x3089;&#x306B; return DONE; &#x3068;&#x3044;&#x3046;&#x5B9A;&#x6570;&#x3092;&#x8FD4;&#x3057;&#x3066;&#x3084;&#x308B;&#x3068;request/response&#x3092;&#x4E00;&#x5207;&#x305B;&#x305A;&#x3001;HTTP&#x306E;&#x51E6;&#x7406;&#x3059;&#x3089;&#x3076;&#x3063;&#x305F;&#x65AC;&#x308B;&#x3068;&#x3044;&#x3046;&#x8352;&#x696D;&#x307E;&#x3067;&#x3067;&#x304D;&#x307E;&#x3059;(&#x3084;&#x308A;&#x307E;&#x3057;&#x305F;)\n&#x30FB;&#x5F0A;&#x793E;&#x306E;&#x30B1;&#x30FC;&#x30B9;&#x3067;&#x306F;&#x3001;&#x30A4;&#x30F3;&#x30D5;&#x30E9;&#x62C5;&#x5F53;&#x8005;&#x306E;&#x6E96;&#x5099;&#x304C;&#x6574;&#x3044;&#x6B21;&#x7B2C;iptables&#x3067;&#x906E;&#x65AD;&#x3057;&#x307E;&#x3057;&#x305F;\n
\n
&#x30FB;DB&#x30A2;&#x30AF;&#x30BB;&#x30B9;&#x3060;&#x3063;&#x3066;&#x51FA;&#x6765;&#x3061;&#x3083;&#x3046;\n&#x30FB;Apache::DBI&#x306A;&#x3069;&#x4F7F;&#x3048;&#x3070;&#x6C38;&#x7D9A;&#x7684;&#x63A5;&#x7D9A;&#x304C;&#x4FDD;&#x3066;&#x308B;\n
&#x30FB;Apache&#x3067;&#x306F;&#x3053;&#x3053;&#x306B;&#x5F53;&#x305F;&#x308B;&#x30D5;&#x30A7;&#x30FC;&#x30BA;&#x3067;BASIC&#x8A8D;&#x8A3C;&#x306A;&#x3069;&#x3092;&#x3084;&#x3063;&#x3066;&#x307E;&#x3059;\n
&#x30FB;PerlFixupHandler&#x306F;&#x3001;response&#x76F4;&#x524D;&#x3067;&#x3061;&#x3087;&#x3063;&#x3068;&#x4F55;&#x304B;&#x3084;&#x308A;&#x305F;&#x3044;&#x6642;&#x306B;&#x3046;&#x3063;&#x3066;&#x3064;&#x3051;\n
&#x30FB;&#x65E2;&#x306B;&#x5B58;&#x5728;&#x3059;&#x308B;&#x5DE8;&#x5927;&#x306A;&#x9759;&#x7684;&#x30B5;&#x30A4;&#x30C8;&#x306B;&#x52D5;&#x7684;&#x306A;&#x30B9;&#x30D1;&#x30A4;&#x30B9;&#x3092;&#x52A0;&#x3048;&#x308B;\n&#x30FB;&#x3069;&#x3046;&#x300C;&#x304B;&#x3076;&#x305B;&#x308B;&#x300D;&#x304B;&#x3002;&#x305D;&#x306E;&#x304B;&#x3076;&#x305B;&#x65B9;&#x3002;CGI/PHP/WAF&#x3067;&#x306F;&#x306A;&#x3044;mod_perl&#x306A;&#x3089;&#x3067;&#x306F;&#x306E;&#x8EFD;&#x91CF;&#x306A;&#x3084;&#x308A;&#x304B;&#x305F;&#x3068;&#x601D;&#x3063;&#x3066;&#x3082;&#x3089;&#x3048;&#x308C;&#x3070;\n
&#x30FB;&#x7D75;&#x6587;&#x5B57;&#x5909;&#x63DB;&#x306F;&#x6614;&#x304B;&#x3089;Perl&#x304C;&#x5F97;&#x610F;&#x3067;&#x3059;&#x3088;&#x306D;\n
&#x30FB;Kepler&#x306E;&#x7531;&#x6765;&#x306F;&#x3001;&#x96D1;&#x8A8C;&#x300C;&#x30CB;&#x30E5;&#x30FC;&#x30C8;&#x30F3;&#x300D;&#x306E;&#x30B5;&#x30A4;&#x30C8;&#x3092;&#x4F5C;&#x3063;&#x305F;(&#x624B;&#x3092;&#x52A0;&#x3048;&#x305F;)&#x6642;&#x306B;&#x3001;&#x30D7;&#x30ED;&#x30B8;&#x30A7;&#x30AF;&#x30C8;&#x6C4E;&#x7528;&#x306E;&#x30AF;&#x30E9;&#x30B9;&#x3084;&#x30E2;&#x30B8;&#x30E5;&#x30FC;&#x30EB;&#x3092;&#x6253;&#x3061;&#x305F;&#x3066;&#x3088;&#x3046;&#x3068;&#x3057;&#x3066;&#x540D;&#x3065;&#x3051;&#x305F;&#x6D12;&#x843D;\n&#x30FB;sub handler { my $r = shift; &#x307E;&#x3067;&#x51FA;&#x3055;&#x305A;&#x3059;&#x307F;&#x307E;&#x305B;&#x3093;&#x3002;&#x30D7;&#x30EC;&#x30BC;&#x30F3;&#x5F8C;&#x306B;&#x304A;&#x898B;&#x305B;&#x3059;&#x308B;&#x3053;&#x3068;&#x306F;&#x53EF;&#x80FD;&#x3002;CPAN&#x306B;&#x4E0A;&#x3052;&#x305F;&#x3044;&#x304F;&#x3089;&#x3044;&#x3002;PAUSE&#x306E;&#x767B;&#x9332;&#x306E;&#x3084;&#x308A;&#x304B;&#x305F;&#x6559;&#x3048;&#x3066;&#x304F;&#x3060;&#x3055;&#x3044;&#x3002;\n&#x30FB;Encode::NV&#x306F;&#x793E;&#x5185;2003&#x5E74;&#x88FD;&#x7D75;&#x6587;&#x5B57;&#x30E2;&#x30B8;&#x30E5;&#x30FC;&#x30EB;&#x3002;UCM&#x66F8;&#x304D;&#x307E;&#x3057;&#x305F;&#x3002;Encode::JP::Mobile&#x306E;&#x5148;&#x99C6;&#x304B;&#x3082;\n
&#x30FB;&#x5148;&#x7A0B;&#x306E;&#x56F3;&#x306E;&#x901A;&#x308A;&#x3001;PerlHandler / PerlResponseHandler &#x4EE5;&#x524D;&#x306E;&#x30D5;&#x30A7;&#x30FC;&#x30BA;&#x3067;&#x30A8;&#x30E9;&#x30FC;&#x306B;&#x306A;&#x3063;&#x305F;&#x5834;&#x5408;&#x3082;&#x3001;PerlLogHandler&#x306F;&#x5B9F;&#x884C;&#x3055;&#x308C;&#x307E;&#x3059;\n
\n
&#x30FB;&#x3088;&#x3046;&#x3084;&#x304F;&#x672C;&#x984C;\n
&#x30FB;response&#x3067;&#x306F;&#x306A;&#x3044;&#x3068;&#x601D;&#x3044;&#x307E;&#x3059;&#x304C; $r->print() (Apache2::RequestIO) &#x306A;&#x3069; response &#x3067;&#x3082;&#x3042;&#x308A;&#x307E;&#x3059;&#x306D;\n
\n
&#x30FB;&#x307B;&#x304B;&#x3082;&#x8208;&#x5473;&#x6DF1;&#x3044;&#x3067;&#x3059;&#x304C;&#x3001;&#x6642;&#x9593;&#x306E;&#x90FD;&#x5408;&#x4E0A;&#x5272;&#x611B;\n&#x30FB;&#x9006;&#x306B;mod_deflate&#x306F;&#x30D5;&#x30A3;&#x30EB;&#x30BF;&#x306E;&#x5FDC;&#x7528;&#x4F8B;&#x3067;&#x3059;\n&#x30FB;SSL&#x3078;&#x306E;&#x5BFE;&#x51E6;&#x6CD5;&#x306F;pound&#x3084;LB&#x304C;&#x624B;&#x524D;&#x3067;&#x307B;&#x3069;&#x304F;&#x306A;&#x3069;&#x3001;&#x4ED6;&#x306B;&#x3082;&#x5BFE;&#x51E6;&#x6CD5;&#x306F;&#x3042;&#x308B;&#x3067;&#x3057;&#x3087;&#x3046;\n
&#x30FB;&#x4ECA;&#x56DE;&#x306F;PerlProcessConnectionHandler&#x306B;&#x30D5;&#x30A9;&#x30FC;&#x30AB;&#x30B9;&#x3092;&#x5F53;&#x3066;&#x307E;&#x3059;\n&#x30FB;&#x3053;&#x308C;&#x3089;&#x3092;&#x3072;&#x3063;&#x304F;&#x308B;&#x3081;&#x3066;Connection&#x30D5;&#x30A7;&#x30FC;&#x30BA;&#x3068;&#x8A00;&#x3063;&#x305F;&#x308A;&#x3059;&#x308B;&#x3053;&#x3068;&#x3082;&#x3042;&#x308A;&#x307E;&#x3059;\n
&#x30FB;PerlPreConnectionHandler&#x306F;Apache&#x51E6;&#x7406;&#x306E;&#x672C;&#x5F53;&#x306B;&#x5192;&#x982D;&#x3002;&#x3053;&#x3053;&#x3067;IP&#x30D6;&#x30ED;&#x30C3;&#x30AF;&#x306F;&#x52B9;&#x679C;&#x5927;&#x3068;&#x3044;&#x3063;&#x305F;&#x6D3B;&#x7528;&#x6CD5;\n&#x30FB;mod_perl&#x81EA;&#x8EAB;&#x304C;&#x3001;&#x3053;&#x306E;pre_connection&#x3067;&#x30D5;&#x30A3;&#x30EB;&#x30BF;&#x3092;&#x6E96;&#x5099;&#x3057;&#x305F;&#x308A;&#x3057;&#x3066;&#x3044;&#x307E;&#x3059;&#x3057;&#x3001;Apache&#x306F;&#x30D7;&#x30ED;&#x30C8;&#x30B3;&#x30EB;&#x975E;&#x4F9D;&#x5B58;&#x306E;SSL&#x51E6;&#x7406;&#x3092;&#x884C;&#x3063;&#x3066;&#x3044;&#x307E;&#x3059;\n\n
&#x30FB;&#x73FE;&#x5728;&#x30E6;&#x30FC;&#x30B6;&#x6570;&#x306F;&#x5C11;&#x306A;&#x3044;&#x3067;&#x3059;&#x304C;&#x3001;&#x5225;&#x306E;&#x7740;&#x4FE1;&#x901A;&#x77E5;&#x30D7;&#x30ED;&#x30B0;&#x30E9;&#x30E0;&#x304C;Postfix pipe&#x3092;&#x4F7F;&#x3063;&#x3066;&#x3044;&#x3066;&#x30B9;&#x30B1;&#x30FC;&#x30EB;&#x3057;&#x3065;&#x3089;&#x3044;&#x69CB;&#x6210;&#x306B;&#x306A;&#x3063;&#x3066;&#x3044;&#x305F;&#x306E;&#x3067;&#x3001;&#x305D;&#x308C;&#x3092;&#x89E3;&#x6C7A;&#x3059;&#x308B;&#x305F;&#x3081;&#x306E;&#x5B9F;&#x9A13;&#x7684;&#x610F;&#x5473;&#x5408;&#x3044;&#x3082;&#x3042;&#x308A;&#x307E;&#x3057;&#x305F;\n&#x30FB;\n
&#x30FB;&#x30E1;&#x30EB;&#x30DE;&#x30AC;&#x914D;&#x4FE1;&#x696D;&#x8005;&#x307B;&#x3069;&#x53F0;&#x6570;&#x306F;&#x591A;&#x304F;&#x306A;&#x3044;&#x3067;&#x3059;&#x304C;&#x3001;&#x30B1;&#x30FC;&#x30BF;&#x30A4;&#x5411;&#x3051;&#x30A6;&#x30A7;&#x30D6;&#x30E1;&#x30FC;&#x30EB;&#x3092;&#x904B;&#x55B6;&#x3057;&#x3066;&#x3044;&#x308B;&#x30B7;&#x30B9;&#x30C6;&#x30E0;&#x306A;&#x3089;&#x3067;&#x306F;&#x306E;&#x914D;&#x7F6E;&#x306B;&#x306A;&#x3063;&#x3066;&#x3044;&#x307E;&#x3059;&#x304C;&#x5272;&#x611B;&#x3057;&#x307E;&#x3059;\n
&#x30FB;TCP&#x306E;&#x30DD;&#x30FC;&#x30C8;&#x756A;&#x53F7;&#x3001;&#x5916;&#x304B;&#x3089;&#x6700;&#x521D;&#x306E;Postfix&#x53D7;&#x3051;&#x308B;&#x3068;&#x3053;&#x308D;&#x306F;25&#x756A;&#x3067;&#x3059;&#x304C;&#x3001;Apache2 SMTP&#x3068;&#x3001;&#x4E0B;&#x306E;Postfix&#x306F;&#x5225;&#x306E;&#x756A;&#x53F7;&#x3067;SMTP&#x3092;&#x5F85;&#x3061;&#x53D7;&#x3051;&#x3066;&#x3044;&#x307E;&#x3059;\n&#x30FB;&#x3084;&#x3063;&#x3064;&#x3051;&#x56F3;&#x3067;&#x3059;&#x307F;&#x307E;&#x305B;&#x3093;\n&#x30FB;postfix master&#x30D7;&#x30ED;&#x30BB;&#x30B9;&#x304C;2&#x3064;&#x3044;&#x308B;&#x308F;&#x3051;&#x3067;&#x306F;&#x3042;&#x308A;&#x307E;&#x305B;&#x3093;&#x3002;1&#x3064;&#x306E;postfix&#x304C;&#x5225;&#x3005;&#x306B;2&#x3064;&#x306E;&#x30DD;&#x30FC;&#x30C8;&#x3067;&#x5F85;&#x3061;&#x53D7;&#x3051;&#x308B;&#x69CB;&#x6210;&#x306B;&#x3057;&#x3066;&#x3044;&#x307E;&#x3059;\n
\n
&#x30FB;&#x5B9F;&#x969B;&#x306E;&#x8A2D;&#x5B9A;&#x30D5;&#x30A1;&#x30A4;&#x30EB;&#x304B;&#x3089;&#x629C;&#x7C8B;&#x3057;&#x307E;&#x3057;&#x305F;\n&#x30FB;Apache::DBI&#x3067;DB&#x306E;&#x6C38;&#x7D9A;&#x7684;&#x306A;&#x63A5;&#x7D9A;&#x3060;&#x3063;&#x3066;&#x3067;&#x304D;&#x307E;&#x3059;&#x3002;pipe&#x3067;DB&#x306B;&#x30A2;&#x30AF;&#x30BB;&#x30B9;&#x3057;&#x305F;&#x3089;&#x30B3;&#x30B9;&#x30C8;&#x5927;&#x304D;&#x3059;&#x304E;&#xFF01;\n&#x30FB;(&#x6B21;&#x306B; GMFilter.pm &#x629C;&#x7C8B;1)\n
&#x30FB;&#x5B9F;&#x969B;&#x306E;&#x8A2D;&#x5B9A;&#x30D5;&#x30A1;&#x30A4;&#x30EB;&#x304B;&#x3089;&#x629C;&#x7C8B;&#x3057;&#x307E;&#x3057;&#x305F;\n&#x30FB;Apache::DBI&#x3067;DB&#x306E;&#x6C38;&#x7D9A;&#x7684;&#x306A;&#x63A5;&#x7D9A;&#x3060;&#x3063;&#x3066;&#x3067;&#x304D;&#x307E;&#x3059;&#x3002;pipe&#x3067;DB&#x306B;&#x30A2;&#x30AF;&#x30BB;&#x30B9;&#x3057;&#x305F;&#x3089;&#x30B3;&#x30B9;&#x30C8;&#x5927;&#x304D;&#x3059;&#x304E;&#xFF01;\n
&#x30FB;&#x5148;&#x307B;&#x3069;&#x3082;&#x51FA;&#x3066;&#x304D;&#x305F;APR=Apache Portable Runtime\n
&#x30FB;&#x5B9F;&#x969B;&#x306E;&#x8A2D;&#x5B9A;&#x30D5;&#x30A1;&#x30A4;&#x30EB;&#x304B;&#x3089;&#x629C;&#x7C8B;&#x3057;&#x307E;&#x3057;&#x305F;\n&#x30FB;Apache::DBI&#x3067;DB&#x306E;&#x6C38;&#x7D9A;&#x7684;&#x306A;&#x63A5;&#x7D9A;&#x3060;&#x3063;&#x3066;&#x3067;&#x304D;&#x307E;&#x3059;&#x3002;pipe&#x3067;DB&#x306B;&#x30A2;&#x30AF;&#x30BB;&#x30B9;&#x3057;&#x305F;&#x3089;&#x30B3;&#x30B9;&#x30C8;&#x5927;&#x304D;&#x3059;&#x304E;&#xFF01;\n
&#x30FB;&#x5148;&#x307B;&#x3069;&#x3082;&#x51FA;&#x3066;&#x304D;&#x305F;APR=Apache Portable Runtime\n
&#x30FB;&#x5148;&#x307B;&#x3069;&#x3082;&#x51FA;&#x3066;&#x304D;&#x305F;APR=Apache Portable Runtime\n
\n
\n
&#x30FB;&#x5F53;&#x6642;&#x306E;&#x30A4;&#x30F3;&#x30D5;&#x30E9;&#x62C5;&#x5F53;&#x8005;&#x306B;&#x8AAC;&#x5F97;&#x3067;&#x304D;&#x306A;&#x304B;&#x3063;&#x305F;\n&#x30FB;&#x4ECA;&#x56DE;&#x306E;&#x30B0;&#x30EB;&#x30FC;&#x30D7;&#x30E1;&#x30FC;&#x30EB;&#x958B;&#x767A;&#x3092;&#x901A;&#x3057;&#x3066;&#x3001;Postfix pipe&#x3067;&#x52D5;&#x4F5C;&#x3057;&#x3066;&#x3044;&#x308B;&#x7740;&#x4FE1;&#x901A;&#x77E5;&#x30D7;&#x30ED;&#x30B0;&#x30E9;&#x30E0;&#x3092;&#x30DE;&#x30A4;&#x30B0;&#x30EC;&#x30FC;&#x30B7;&#x30E7;&#x30F3;&#x3067;&#x304D;&#x308C;&#x3070;&#x3001;&#x30B5;&#x30FC;&#x30D0;&#x53F0;&#x6570;&#x3092;&#x534A;&#x6E1B;&#x3067;&#x304D;&#x308B;&#x304F;&#x3089;&#x3044;&#x306E;&#x8A66;&#x7B97;&#x3092;&#x3057;&#x3066;&#x3044;&#x308B;\n
&#x30FB;POE&#x306F;&#x6FC0;&#x3057;&#x3044;&#x30C8;&#x30E9;&#x30D5;&#x30A3;&#x30C3;&#x30AF;&#x304C;&#x3084;&#x3063;&#x3066;&#x304F;&#x308B;&#x3068;&#x3057;&#x3070;&#x3057;&#x3070;&#x7121;&#x8A00;&#x3067;&#x6B7B;&#x306B;&#x307E;&#x3059;\n&#x30FB;&#x4ECA;&#x306F;AnyEvent&#x3068;&#x304B;&#x5805;&#x3044;&#x3067;&#x3059;&#x3088;&#x306D;\n\n
&#x30FB;Apache2 Connection &#x3067;&#x52D5;&#x304F;&#x3057;&#x3002;Experimental&#x3060;&#x3063;&#x3066;&#x53E4;&#x3044;&#x8CC7;&#x6599;&#x306B;&#x306F;&#x66F8;&#x304B;&#x308C;&#x3066;&#x3044;&#x305F;&#x3051;&#x3069;\n&#x30FB;AnyEvent&#x30D9;&#x30FC;&#x30B9;&#x306E;&#x3082;&#x306E;&#x306F;&#x6700;&#x65B0;&#x306E;&#x306B;&#x3082;&#x7121;&#x3044;&#x3088;&#x3046;&#x3067;&#x3059;&#x304C;&#x3001;&#x4F5C;&#x308B;&#x3068;&#x9762;&#x767D;&#x3044;&#x304B;&#x3082;&#x3057;&#x308C;&#x307E;&#x305B;&#x3093;&#x306D;\n
&#x30FB;&#x5148;&#x307B;&#x3069;&#x306E;&#x597D;&#x5370;&#x8C61;&#x306E;&#x7406;&#x7531;&#x304C;&#x3053;&#x308C;&#x3067;&#x3059;\n
\n
&#x30FB;&#x3059;&#x3054;&#x3044;&#x7D50;&#x8AD6;&#x3067;&#x3059;&#x306D;\n
&#x30FB;&#x6700;&#x521D;&#x306E;&#x307B;&#x3046;&#x306E;&#x30CD;&#x30C3;&#x30C8;&#x30AF;&#x30E9;&#x30D5;&#x30C8;&#x306E;&#x30B0;&#x30E9;&#x30D5;&#x3092;&#x601D;&#x3044;&#x51FA;&#x3057;&#x3066;&#x304F;&#x3060;&#x3055;&#x3044;\n&#x30FB;&#x30E1;&#x30FC;&#x30EB;&#x30D7;&#x30ED;&#x30AD;&#x30B7;&#x306A;&#x3069;&#x306E;&#x6A5F;&#x80FD;&#x3082;&#x3042;&#x308B;&#x307F;&#x305F;&#x3044;&#x3067;&#x3059;&#x306D;\n
&#x30FB;Apache&#x306E; mod_perl &#x306B;&#x5BFE;&#x5FDC;&#x3059;&#x308B;&#x30E2;&#x30B8;&#x30E5;&#x30FC;&#x30EB;&#x3068;&#x3057;&#x3066; EmbeddedPerlModule &#x304C;&#x76EE;&#x7ACB;&#x3064;&#x3068;&#x3053;&#x308D;&#x306B;&#x3042;&#x3052;&#x3089;&#x308C;&#x3066;&#x3044;&#x307E;&#x3059;\n
&#x30FB;&#x305D;&#x3053;&#x304B;&#x3089;&#x30B5;&#x30F3;&#x30D7;&#x30EB;\n&#x30FB;&#x3042;&#x308C;&#xFF1F;&#x3069;&#x3053;&#x304B;&#x3067;&#x307F;&#x305F;&#x3053;&#x3068;&#x304C;&#x2026;\n
&#x30FB;&#x305D;&#x3053;&#x304B;&#x3089;&#x30B5;&#x30F3;&#x30D7;&#x30EB;\n&#x30FB;mod_perl1 &#x3063;&#x307D;&#x3044;&#xFF01;&#x3068;&#x3044;&#x3046;&#x304B;&#x305D;&#x306E;&#x307E;&#x307E;\n
&#x30FB;Apache&#x306E;MPM&#x306E;&#x3088;&#x3046;&#x306A;&#x4ED5;&#x7D44;&#x307F;&#x306F;&#x306A;&#x3044;&#x304B;&#x3089;&#x3001;nginx&#x3063;&#x3066;worker=&#x30B9;&#x30EC;&#x30C3;&#x30C9;&#x52D5;&#x4F5C;&#x306E;&#x307F;&#x306A;&#x306E;&#x304B;&#x306A;\n&#x30FB;FastCGI&#x306E;&#x307B;&#x3046;&#x304C;&#x30CE;&#x30A6;&#x30CF;&#x30A6;&#x3042;&#x308A;&#x307E;&#x3059;\n
&#x30FB;&#x6642;&#x9593;&#x306E;&#x90FD;&#x5408;&#x4E0A;&#x3001;&#x8A73;&#x7D30;&#x306B;&#x3042;&#x307E;&#x308A;&#x89E6;&#x308C;&#x3089;&#x308C;&#x305A;&#x3059;&#x307F;&#x307E;&#x305B;&#x3093;\n
&#x30FB;&#x6700;&#x5F8C;&#x306E;&#x307B;&#x3046;&#x99C6;&#x3051;&#x8DB3;&#x306B;&#x306A;&#x3063;&#x3066;&#x3057;&#x307E;&#x3044;&#x307E;&#x3057;&#x305F;&#x304C;&#x2026;\n
\n
\n
\n
\n
\n
&#x30FB;&#x8074;&#x8B1B;&#x8005;&#x306E;&#x7686;&#x3055;&#x3093;&#x306B;&#x611F;&#x8B1D;&#xFF01;\n