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
All impression of high skills on OpenResty/Lua programming along these 3 years.
OpenResty/Lua 70+ Advanced Programming Skills and Optimization tips
OpenResty/Lua 70+ Advanced Programming Skills and Optimization tips
Ho Kim
Каждый разработчик рано или поздно сталкивается с предметно-ориентированными языками (DSL). Мы разберемся, зачем же нам нужны DSL, и какие проблемы они нам помогают решать. Поймем, в каких случаях нам стоит разрабатывать свой язык, а в каких — использовать уже существующий. Попробуем провести грань и решить, где у нас просто библиотека, а где — предметно ориентированный язык. Придумаем свой DSL и сравним различные подходы к работе с ним в Python. Увидим, как работают лексический и синтаксический анализаторы. Обязательно поговорим про то, как облегчить жизнь пользователям нашего языка. Как сделать информативными сообщения об ошибках? Как тестировать сценарии, написанные на нашем языке? На эти вопросы мы сможем дать ответ.
PyconRu 2016. Осторожно, DSL!
PyconRu 2016. Осторожно, DSL!
Ivan Tsyganov
Boost.Asio в алгоритмической торговле
Тененёв Анатолий, Boost.Asio в алгоритмической торговле
Тененёв Анатолий, Boost.Asio в алгоритмической торговле
Platonov Sergey
На докладе вы узнаете: как ликвидировать Ахиллесову пяту ваших unit test’ов; о достоинствах и недостатках SinonJS в рамках современной теории unit test'ирования; почему теория - это по-настоящему важно; чем отличается SinonJS от других инструментов тестирования и для чего он вообще нужен; какими принципами стоит руководствоваться при создании заглушек независимо от test framework'а; как быстро и легко начать использовать SinonJS на вашем проекте уже сейчас. Know each horse in your castle!
Александра Калинина "Trojan War: SinonJS"
Александра Калинина "Trojan War: SinonJS"
Fwdays
LT会発表内容を展開する
Lightning talk second
Lightning talk second
ShinUsuda
大部分人對於編譯器印象停留在課堂上所教導的語法分析的理論以及實作, 而讓許多人對於編譯器技術相當怯步, 但在整個編譯過程中語法分析只是個開端, 但其實編譯器技術最有趣的部份在於中後端的最佳化技術, 其神秘的技術可讓程式加速許多, 在這次的分享中主要會介紹一些編譯器的基礎最佳化, 例如 Propagation, Dead Code Elimination, Inline, Common Subexpression Elimination 及 Loop Unrolling 等, 並透過 llvm 的一些小工具來輔助觀察這些最佳化的結果, 以此作為入門磚來了解編譯器如何運作。
淺談編譯器最佳化技術
淺談編譯器最佳化技術
Kito Cheng
Recommended
mod_perl hacks PHP
mod_perl hacks PHP
鉄次 尾形
Devel::NYTProf
Devel::NYTProf
clkao
All impression of high skills on OpenResty/Lua programming along these 3 years.
OpenResty/Lua 70+ Advanced Programming Skills and Optimization tips
OpenResty/Lua 70+ Advanced Programming Skills and Optimization tips
Ho Kim
Каждый разработчик рано или поздно сталкивается с предметно-ориентированными языками (DSL). Мы разберемся, зачем же нам нужны DSL, и какие проблемы они нам помогают решать. Поймем, в каких случаях нам стоит разрабатывать свой язык, а в каких — использовать уже существующий. Попробуем провести грань и решить, где у нас просто библиотека, а где — предметно ориентированный язык. Придумаем свой DSL и сравним различные подходы к работе с ним в Python. Увидим, как работают лексический и синтаксический анализаторы. Обязательно поговорим про то, как облегчить жизнь пользователям нашего языка. Как сделать информативными сообщения об ошибках? Как тестировать сценарии, написанные на нашем языке? На эти вопросы мы сможем дать ответ.
PyconRu 2016. Осторожно, DSL!
PyconRu 2016. Осторожно, DSL!
Ivan Tsyganov
Boost.Asio в алгоритмической торговле
Тененёв Анатолий, Boost.Asio в алгоритмической торговле
Тененёв Анатолий, Boost.Asio в алгоритмической торговле
Platonov Sergey
На докладе вы узнаете: как ликвидировать Ахиллесову пяту ваших unit test’ов; о достоинствах и недостатках SinonJS в рамках современной теории unit test'ирования; почему теория - это по-настоящему важно; чем отличается SinonJS от других инструментов тестирования и для чего он вообще нужен; какими принципами стоит руководствоваться при создании заглушек независимо от test framework'а; как быстро и легко начать использовать SinonJS на вашем проекте уже сейчас. Know each horse in your castle!
Александра Калинина "Trojan War: SinonJS"
Александра Калинина "Trojan War: SinonJS"
Fwdays
LT会発表内容を展開する
Lightning talk second
Lightning talk second
ShinUsuda
大部分人對於編譯器印象停留在課堂上所教導的語法分析的理論以及實作, 而讓許多人對於編譯器技術相當怯步, 但在整個編譯過程中語法分析只是個開端, 但其實編譯器技術最有趣的部份在於中後端的最佳化技術, 其神秘的技術可讓程式加速許多, 在這次的分享中主要會介紹一些編譯器的基礎最佳化, 例如 Propagation, Dead Code Elimination, Inline, Common Subexpression Elimination 及 Loop Unrolling 等, 並透過 llvm 的一些小工具來輔助觀察這些最佳化的結果, 以此作為入門磚來了解編譯器如何運作。
淺談編譯器最佳化技術
淺談編譯器最佳化技術
Kito Cheng
「ホスティング」というテーマをもとに、2013/06/15開催された Hachioji.pm#29 で発表したLTのスライドに若干の手直し(不備の修正)をしたものです。
mod_perlで動くアプリをどう置くか #hachiojipm
mod_perlで動くアプリをどう置くか #hachiojipm
鉄次 尾形
YAPC::Asia Tokyo 2012 の 2日目9月29日の夕方のトーク「モダンmod_perl入門」のスライドです。
モダン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ホームページ
キッズプログラミング教室 Gramin でスマートフォンアプリ開発クラス向けに作成した資料です。 Java で抽象クラス・インタフェースの理解に苦しむ方を対象にしています。身近な例(哺乳類・爬虫類)を使って抽象クラス・インタフェースの使い道を簡単に説明し、無名クラスについても簡単に触れています。 キッズプログラミング教室 Gramin http://gramin.makeall.net/
Java の抽象クラス・インタフェース・無名クラスを理解しよう
Java の抽象クラス・インタフェース・無名クラスを理解しよう
宗平 建矢
node.js x AWS SESを使ったメール配信について (@geechs night 3rd July)
1秒間に250通のメールをさばくAWSの使い方
1秒間に250通のメールをさばくAWSの使い方
Tokyo Otaku Mode Inc.
SICE MSCS2017でのOS「モデルベースト制御における機械学習とダイナミクスの融合」における発表(2017年3月7日)
省エネルギーのための自動制御と人工知能
省エネルギーのための自動制御と人工知能
Masaaki Nagahara
メール送信温故知新、今昔物語。
メールフォームからメールを送る近代的な方法 | YAPC::Kansai 2017 OSAKA
メールフォームからメールを送る近代的な方法 | YAPC::Kansai 2017 OSAKA
azumakuniyuki 🐈
2013/05/24に行われたPerlBeginners#8でトークした「メルマガシステム失敗談」のスライドです。当社が失敗したわけじゃないですよ、外注の失敗談です。当時の数々の縛りプレイの中、それを見事に復旧させた当時の当社のPerl Hacker達の凄まじい技術のお話です。
メルマガシステム失敗談 #perlbeginners
メルマガシステム失敗談 #perlbeginners
鉄次 尾形
2019/1/26に行われた YAPC::Tokyo 2019 で発表したLTのスライドです。
Perl入学式 2018年度の報告
Perl入学式 2018年度の報告
鉄次 尾形
2018/5/10に行われた「ガイアックス新卒エンジニア研修2018 AWS編」(社内教育・非公開イベント) で発表したトークのスライドです。
【公開版】AWS基礎 for 新卒エンジニア
【公開版】AWS基礎 for 新卒エンジニア
鉄次 尾形
2018/7/11に行われた こだわりの仕事スタイルLTソン で発表したLTのスライドです。
俺のこだわりデスクのその後
俺のこだわりデスクのその後
鉄次 尾形
2018/6/23に行われた Hokkaido.pm #14 で発表したLTのスライドです。
Hokkaido.pmと7年
Hokkaido.pmと7年
鉄次 尾形
2018/3/3に行われた YAPC::Okinawa 2018 ONNASON で発表したトークのスライドです。
WordPress 運用を支える Perl
WordPress 運用を支える Perl
鉄次 尾形
2017/9/26に行われた 【エンジニア交流会】〜 他社の障害対応、きにならNight! ~ で発表したトークのスライドです。
障害対応とその防止策
障害対応とその防止策
鉄次 尾形
2017/5/26に行われた 【エンジニア交流会】大公開!普段は見られない「社内ツール」の作成&活用ノウハウLT で発表したLTのスライドです。
働きやすい社内を目指す!二酸化炭素計測ツール
働きやすい社内を目指す!二酸化炭素計測ツール
鉄次 尾形
2017/3/4に行われた YAPC::Kansai 2017 OSAKA で発表したトークのスライドです。
Perl ウェブ開発の中世〜CGI と Plack の間〜
Perl ウェブ開発の中世〜CGI と Plack の間〜
鉄次 尾形
2017/1/19に行われた Gaiaxグループ社内勉強会 で発表したトークのスライドです。
コードの動的生成のお話
コードの動的生成のお話
鉄次 尾形
2016/9/14に行われた Gaiaxグループ社内勉強会 で発表したトークのスライドです。
三角関数の加法定理はなぜ難しいのか
三角関数の加法定理はなぜ難しいのか
鉄次 尾形
2016/8/27に行われた Okinawa.pm#2 で発表したトークのスライドです。
Perlで生きる10年
Perlで生きる10年
鉄次 尾形
2016/6/16に行われた Gaiaxグループ社内勉強会 で発表したトークのスライドです。
穏やかにファイルを削除する続き
穏やかにファイルを削除する続き
鉄次 尾形
2016/6/18に行われた Okinawa.pm #1 Perl入学式 in 沖縄 懇親会 で発表したLTのスライドです。 https://atnd.org/events/78358
日本全国ぶらりPerl旅
日本全国ぶらりPerl旅
鉄次 尾形
More Related Content
Viewers also liked
「ホスティング」というテーマをもとに、2013/06/15開催された Hachioji.pm#29 で発表したLTのスライドに若干の手直し(不備の修正)をしたものです。
mod_perlで動くアプリをどう置くか #hachiojipm
mod_perlで動くアプリをどう置くか #hachiojipm
鉄次 尾形
YAPC::Asia Tokyo 2012 の 2日目9月29日の夕方のトーク「モダンmod_perl入門」のスライドです。
モダン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ホームページ
キッズプログラミング教室 Gramin でスマートフォンアプリ開発クラス向けに作成した資料です。 Java で抽象クラス・インタフェースの理解に苦しむ方を対象にしています。身近な例(哺乳類・爬虫類)を使って抽象クラス・インタフェースの使い道を簡単に説明し、無名クラスについても簡単に触れています。 キッズプログラミング教室 Gramin http://gramin.makeall.net/
Java の抽象クラス・インタフェース・無名クラスを理解しよう
Java の抽象クラス・インタフェース・無名クラスを理解しよう
宗平 建矢
node.js x AWS SESを使ったメール配信について (@geechs night 3rd July)
1秒間に250通のメールをさばくAWSの使い方
1秒間に250通のメールをさばくAWSの使い方
Tokyo Otaku Mode Inc.
SICE MSCS2017でのOS「モデルベースト制御における機械学習とダイナミクスの融合」における発表(2017年3月7日)
省エネルギーのための自動制御と人工知能
省エネルギーのための自動制御と人工知能
Masaaki Nagahara
メール送信温故知新、今昔物語。
メールフォームからメールを送る近代的な方法 | YAPC::Kansai 2017 OSAKA
メールフォームからメールを送る近代的な方法 | YAPC::Kansai 2017 OSAKA
azumakuniyuki 🐈
2013/05/24に行われたPerlBeginners#8でトークした「メルマガシステム失敗談」のスライドです。当社が失敗したわけじゃないですよ、外注の失敗談です。当時の数々の縛りプレイの中、それを見事に復旧させた当時の当社のPerl Hacker達の凄まじい技術のお話です。
メルマガシステム失敗談 #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 鉄次 尾形
2019/1/26に行われた YAPC::Tokyo 2019 で発表したLTのスライドです。
Perl入学式 2018年度の報告
Perl入学式 2018年度の報告
鉄次 尾形
2018/5/10に行われた「ガイアックス新卒エンジニア研修2018 AWS編」(社内教育・非公開イベント) で発表したトークのスライドです。
【公開版】AWS基礎 for 新卒エンジニア
【公開版】AWS基礎 for 新卒エンジニア
鉄次 尾形
2018/7/11に行われた こだわりの仕事スタイルLTソン で発表したLTのスライドです。
俺のこだわりデスクのその後
俺のこだわりデスクのその後
鉄次 尾形
2018/6/23に行われた Hokkaido.pm #14 で発表したLTのスライドです。
Hokkaido.pmと7年
Hokkaido.pmと7年
鉄次 尾形
2018/3/3に行われた YAPC::Okinawa 2018 ONNASON で発表したトークのスライドです。
WordPress 運用を支える Perl
WordPress 運用を支える Perl
鉄次 尾形
2017/9/26に行われた 【エンジニア交流会】〜 他社の障害対応、きにならNight! ~ で発表したトークのスライドです。
障害対応とその防止策
障害対応とその防止策
鉄次 尾形
2017/5/26に行われた 【エンジニア交流会】大公開!普段は見られない「社内ツール」の作成&活用ノウハウLT で発表したLTのスライドです。
働きやすい社内を目指す!二酸化炭素計測ツール
働きやすい社内を目指す!二酸化炭素計測ツール
鉄次 尾形
2017/3/4に行われた YAPC::Kansai 2017 OSAKA で発表したトークのスライドです。
Perl ウェブ開発の中世〜CGI と Plack の間〜
Perl ウェブ開発の中世〜CGI と Plack の間〜
鉄次 尾形
2017/1/19に行われた Gaiaxグループ社内勉強会 で発表したトークのスライドです。
コードの動的生成のお話
コードの動的生成のお話
鉄次 尾形
2016/9/14に行われた Gaiaxグループ社内勉強会 で発表したトークのスライドです。
三角関数の加法定理はなぜ難しいのか
三角関数の加法定理はなぜ難しいのか
鉄次 尾形
2016/8/27に行われた Okinawa.pm#2 で発表したトークのスライドです。
Perlで生きる10年
Perlで生きる10年
鉄次 尾形
2016/6/16に行われた Gaiaxグループ社内勉強会 で発表したトークのスライドです。
穏やかにファイルを削除する続き
穏やかにファイルを削除する続き
鉄次 尾形
2016/6/18に行われた Okinawa.pm #1 Perl入学式 in 沖縄 懇親会 で発表したLTのスライドです。 https://atnd.org/events/78358
日本全国ぶらりPerl旅
日本全国ぶらりPerl旅
鉄次 尾形
2016/5/19に行われた Gaiaxグループ社内勉強会 で発表したトークのスライドです。 発表時の聴衆コメント → https://slas.la/slide/8
穏やかにファイルを削除する
穏やかにファイルを削除する
鉄次 尾形
2016/2/19に行われた Gaiaxグループ社内勉強会 で発表したトークのスライドです。
最近のメールまわりのお仕事のお話
最近のメールまわりのお仕事のお話
鉄次 尾形
2015/12/4に行われた Gaiaxグループエンジニア勉強会 #20 で発表したトークのスライドです。
再帰、漸化式、差分方程式とアルゴリズム Gx#20
再帰、漸化式、差分方程式とアルゴリズム Gx#20
鉄次 尾形
2015/11/20に行われた MySQL Casual Talks vol.8 で発表した基調講演のスライドです。
超小規模環境のMySQL #mysqlcasual
超小規模環境のMySQL #mysqlcasual
鉄次 尾形
2015/9/11に行われた YAPC::Asia Tokyo 2015 リジェクトコン! で発表したLTのスライドです。
mod_perlプログラマーがYAPCで語るレガシー開発論
mod_perlプログラマーがYAPCで語るレガシー開発論
鉄次 尾形
2015/5/16に行われた LOCAL Community Summit 2015 で発表したLTのスライドです。
東京近郊のPerlコミュニティのご紹介 #lcs2015
東京近郊のPerlコミュニティのご紹介 #lcs2015
鉄次 尾形
2015/4/16に行われた Tokachi Developer's Night #1 で発表したトークのスライドです。
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