SlideShare una empresa de Scribd logo
1 de 11
mod_perlで簡単Apacheモジュール開発 Takayuki Hirayama 1 Copyright 2009  Fractalist inc. All rights reserved.
mod_perlって何者? よくある誤解 CGIの高速なやつ× Apacheに組み込んだPerlインタープリタ(例:PHP)× ApacheのAPIにPerlでアクセスできるようにし、Apacheのモジュール(プラグイン)を Perlで開発できるようにするもの 2 Copyright 2009  Fractalist inc. All rights reserved.
mod_perlの要素 mod_perlとmod_perl2がある mod_perl : Apache1.3系用 mod_perl2 : Apache2.x系用 Apacheから見たmod_perlハンドラ(mod_perl2) mod_perlハンドラ 完全にApacheモジュールとして開発する パラメータなどは全てAPIを通じて取得する 高速 cgi-scriptハンドラ プログラム側からCGI風にパラメータ取得できる %ENVパラメータにパラメータ格納 printで出力 開発環境ではCGIとして開発できるので開発しやすい ModPerl::Registry レスポンスハンドラでCGIとして書かれたプログラムを動かせる ただしグローバル変数などの挙動に制約あり 3 Copyright 2009  Fractalist inc. All rights reserved.
httpd.conf mod_perlハンドラ LoadModuleperl_module modules/mod_perl.so # MyApp::Apache2::HelloWorldモジュールにハンドラを実装する # /somewhere/perl/lib 以下に.pmファイルを置く PerlSwitches-I/somewhere/perl/lib # 事前ロード PerlModuleMyApp::Apache2::HelloWorld # 特定ロケーションにハンドラを設定 <Location /index> SetHandlermodperl PerlResponseHandlerMyApp::Apache2::HelloWorld </Location> cgi-script ハンドラ + ModPerl::Registry LoadModuleperl_modulemodules/mod_perl.so <Location “/index.cgi”>    # perl-scriptセットハンドラを指定して、    # PerlResponseHandlerにModPer::Registryを指定する SetHandlerperl-script PerlResponseHandlerModPerl::Registry </Location> 4 Copyright 2009  Fractalist inc. All rights reserved.
Apache2のHTTPリクエストライフサイクル デフォルトのハンドラを「上書きする」ハンドラをモジュールとして提供する ※ http://perl.apache.org/docs/2.0/user/handlers/http.html より引用 5 Copyright 2009  Fractalist inc. All rights reserved.
何が作れるの? レスポンスハンドラ(PerlResponseHandler) パラメータに応じたレスポンス (通常のWebアプリケーション) プロトコルハンドラ カスタム認証ハンドラ(PerlAuthzHandler) カスタムログ出力(PerlLogHandler) Input/Output Filterハンドラ 全てのリクエストに対し一定の処理をかける(PerlInputFilterHandler) 全てのレスポンスに対し事後的に一定の処理をかける(PerlOutputFilterHandler) 6 Copyright 2009  Fractalist inc. All rights reserved.
ソースはどんな感じ? #file:/somewhere/perl/lib/MyApp/Apache2/HelloWorld.pm #---------------------- package MyApp::Apache2::HelloWorld; use strict; use warnings; use Apache2::RequestRec (); use Apache2::RequestIO (); # 定数の宣言 use Apache2::Const -compile => qw(OK); # ハンドラメソッドの宣言 # これだけ! sub handler {     my $r = shift; # Apache2::RequestRecObjectが引数に入ってくる     $r->content_type(‘text/plain’); # HTTPヘッダの格納     $r->print( “Hello World!
” ); # 出力結果の格納     return Apache2::Const::OK; } 1; 7 Copyright 2009  Fractalist inc. All rights reserved. クラスメソッドとして定義することもできる 継承などが利用できるので開発効率大 開発用のオートリロードも可能
特徴1:高速+軽快! Apache起動時に実行イメージをロードする PHPでは基本的にインタプリタのみロード 必要最小限のモジュールのみ使用するようにできるので、実行イメージが小さくなる 必ずしも大きなWAFに頼る必要はない Ruby on RailsやCakePHPでは原則オールインワンで利用せざるを得ない ハンドラだけ定義できるので場合によっては限定的な影響範囲にのみ適用できる 8 Copyright 2009  Fractalist inc. All rights reserved.
特徴2:高い開発効率 C言語でなくPerlで記述できる リソースの垣根が低い 枯れた技術/モジュール等資産の再活用 多彩なCPANモジュールを利用できる CGI URI Encode Log::Log4perl HTTP::MobileAgent etc… ミドルウェアとの連携も容易 memcached DBI 9 Copyright 2009  Fractalist inc. All rights reserved.
特徴3:変数ライフサイクル Apache親プロセスと子プロセスでファイルロードタイミングなどを意識できる 10 Copyright 2009  Fractalist inc. All rights reserved. Apache 親プロセス リクエスト Apache 子プロセス fork(2) レスポンス Apache 子プロセス Apache 子プロセス Apache 子プロセス Apache 子プロセス Apacheのpreforkモデルのイメージ
まとめ 利用シチュエーション 広告配信 カスタムログ収集 その他小さいアプリケーションを短期間で開発したい場合 まとめ 11 Copyright 2009  Fractalist inc. All rights reserved. Webアプリケーションの開発要件に応じて 様々な形態から採用検討することが重要

Más contenido relacionado

Destacado

素敵なjavascript ~Firefox編 ~
素敵なjavascript ~Firefox編 ~素敵なjavascript ~Firefox編 ~
素敵なjavascript ~Firefox編 ~ngi group.
 
素敵なjavascript ~google chrome編~
素敵なjavascript ~google chrome編~素敵なjavascript ~google chrome編~
素敵なjavascript ~google chrome編~ngi group.
 
20091119_sinatraを使ってみた
20091119_sinatraを使ってみた20091119_sinatraを使ってみた
20091119_sinatraを使ってみたngi group.
 
Git紹介~入門編~
Git紹介~入門編~Git紹介~入門編~
Git紹介~入門編~ngi group.
 
Html5 入門編 その2
Html5 入門編 その2Html5 入門編 その2
Html5 入門編 その2ngi group.
 
muninで簡単&自在サーバーモニタリング
muninで簡単&自在サーバーモニタリングmuninで簡単&自在サーバーモニタリング
muninで簡単&自在サーバーモニタリングngi group.
 
正規表現のススメ_20091217
正規表現のススメ_20091217正規表現のススメ_20091217
正規表現のススメ_20091217ngi group.
 
SvnからGitへの移行について
SvnからGitへの移行についてSvnからGitへの移行について
SvnからGitへの移行についてngi group.
 
軽量高機能webサーバーnginx
軽量高機能webサーバーnginx軽量高機能webサーバーnginx
軽量高機能webサーバーnginxngi group.
 
RubyとPost Gis
RubyとPost GisRubyとPost Gis
RubyとPost Gisngi group.
 
Mixiアプリで体験する Open Social
Mixiアプリで体験する Open SocialMixiアプリで体験する Open Social
Mixiアプリで体験する Open Socialngi group.
 
Zshって最強らしい
Zshって最強らしいZshって最強らしい
Zshって最強らしいngi group.
 
【プレゼン】見やすいプレゼン資料の作り方【初心者用】
【プレゼン】見やすいプレゼン資料の作り方【初心者用】【プレゼン】見やすいプレゼン資料の作り方【初心者用】
【プレゼン】見やすいプレゼン資料の作り方【初心者用】MOCKS | Yuta Morishige
 

Destacado (17)

素敵なjavascript ~Firefox編 ~
素敵なjavascript ~Firefox編 ~素敵なjavascript ~Firefox編 ~
素敵なjavascript ~Firefox編 ~
 
素敵なjavascript ~google chrome編~
素敵なjavascript ~google chrome編~素敵なjavascript ~google chrome編~
素敵なjavascript ~google chrome編~
 
20091119_sinatraを使ってみた
20091119_sinatraを使ってみた20091119_sinatraを使ってみた
20091119_sinatraを使ってみた
 
Git紹介~入門編~
Git紹介~入門編~Git紹介~入門編~
Git紹介~入門編~
 
Html5 入門編 その2
Html5 入門編 その2Html5 入門編 その2
Html5 入門編 その2
 
Yii紹介
Yii紹介Yii紹介
Yii紹介
 
muninで簡単&自在サーバーモニタリング
muninで簡単&自在サーバーモニタリングmuninで簡単&自在サーバーモニタリング
muninで簡単&自在サーバーモニタリング
 
正規表現のススメ_20091217
正規表現のススメ_20091217正規表現のススメ_20091217
正規表現のススメ_20091217
 
The Royal Lagoon Bhubaneswar
The Royal Lagoon Bhubaneswar The Royal Lagoon Bhubaneswar
The Royal Lagoon Bhubaneswar
 
SvnからGitへの移行について
SvnからGitへの移行についてSvnからGitへの移行について
SvnからGitへの移行について
 
軽量高機能webサーバーnginx
軽量高機能webサーバーnginx軽量高機能webサーバーnginx
軽量高機能webサーバーnginx
 
RubyとPost Gis
RubyとPost GisRubyとPost Gis
RubyとPost Gis
 
Tokyo Cabinet
Tokyo CabinetTokyo Cabinet
Tokyo Cabinet
 
Mixiアプリで体験する Open Social
Mixiアプリで体験する Open SocialMixiアプリで体験する Open Social
Mixiアプリで体験する Open Social
 
Zshって最強らしい
Zshって最強らしいZshって最強らしい
Zshって最強らしい
 
しょぼいプレゼンをパワポのせいにするな! by @jessedee
しょぼいプレゼンをパワポのせいにするな! by @jessedeeしょぼいプレゼンをパワポのせいにするな! by @jessedee
しょぼいプレゼンをパワポのせいにするな! by @jessedee
 
【プレゼン】見やすいプレゼン資料の作り方【初心者用】
【プレゼン】見やすいプレゼン資料の作り方【初心者用】【プレゼン】見やすいプレゼン資料の作り方【初心者用】
【プレゼン】見やすいプレゼン資料の作り方【初心者用】
 

Similar a フラクタリスト技術知識共有会発表資料 090903

【13-A-2】 「Delphi for PHP のエバンジェリストが、日本の PHP エバンジェリストと、 PHP と IDE の今と未来を語る」~Em...
【13-A-2】 「Delphi for PHP のエバンジェリストが、日本の PHP エバンジェリストと、 PHP と IDE の今と未来を語る」~Em...【13-A-2】 「Delphi for PHP のエバンジェリストが、日本の PHP エバンジェリストと、 PHP と IDE の今と未来を語る」~Em...
【13-A-2】 「Delphi for PHP のエバンジェリストが、日本の PHP エバンジェリストと、 PHP と IDE の今と未来を語る」~Em...devsumi2009
 
[Oracle DBA & Developer Day 2014] しばちょう先生による特別講義! RMANの運用と高速化チューニング
[Oracle DBA & Developer Day 2014] しばちょう先生による特別講義! RMANの運用と高速化チューニング[Oracle DBA & Developer Day 2014] しばちょう先生による特別講義! RMANの運用と高速化チューニング
[Oracle DBA & Developer Day 2014] しばちょう先生による特別講義! RMANの運用と高速化チューニングオラクルエンジニア通信
 
Gorm @ gopher china
Gorm @ gopher chinaGorm @ gopher china
Gorm @ gopher chinaJinzhu
 
20090522 Candycane
20090522 Candycane20090522 Candycane
20090522 CandycaneYusuke Ando
 
Cloud era -『クラウド時代』マッシュアップ技術による地方からの世界発信
Cloud era -『クラウド時代』マッシュアップ技術による地方からの世界発信Cloud era -『クラウド時代』マッシュアップ技術による地方からの世界発信
Cloud era -『クラウド時代』マッシュアップ技術による地方からの世界発信Yusuke Kawasaki
 
20090313 Cakephpstudy
20090313 Cakephpstudy20090313 Cakephpstudy
20090313 CakephpstudyYusuke Ando
 
【13-C-4】 「もう業務はとまらない!オフライン機能を使った業務アプリケーションの実例と最新 Curl 情報」
【13-C-4】 「もう業務はとまらない!オフライン機能を使った業務アプリケーションの実例と最新 Curl 情報」【13-C-4】 「もう業務はとまらない!オフライン機能を使った業務アプリケーションの実例と最新 Curl 情報」
【13-C-4】 「もう業務はとまらない!オフライン機能を使った業務アプリケーションの実例と最新 Curl 情報」devsumi2009
 
Tcl/Tk+ハッシュリスト
Tcl/Tk+ハッシュリストTcl/Tk+ハッシュリスト
Tcl/Tk+ハッシュリストHiromu Shioya
 
2007 0822 Antelope Php
2007 0822 Antelope Php2007 0822 Antelope Php
2007 0822 Antelope Phpgmaxsonic
 
Web技術勉強会 第19回
Web技術勉強会 第19回Web技術勉強会 第19回
Web技術勉強会 第19回龍一 田中
 
Development toolsforteamdevelopment
Development toolsforteamdevelopmentDevelopment toolsforteamdevelopment
Development toolsforteamdevelopmentTakao Tetsuro
 
Hoppyではじめよう!リアルタイムweb
Hoppyではじめよう!リアルタイムwebHoppyではじめよう!リアルタイムweb
Hoppyではじめよう!リアルタイムwebtakeshi miki
 
Linux Commands
Linux CommandsLinux Commands
Linux Commandsiwata
 
20090418 イケテルRails勉強会 第2部Air編 解説
20090418 イケテルRails勉強会 第2部Air編 解説20090418 イケテルRails勉強会 第2部Air編 解説
20090418 イケテルRails勉強会 第2部Air編 解説mochiko AsTech
 
技術トレンディセミナー フレームワークとしてのTrac
技術トレンディセミナー フレームワークとしてのTrac技術トレンディセミナー フレームワークとしてのTrac
技術トレンディセミナー フレームワークとしてのTracterada
 

Similar a フラクタリスト技術知識共有会発表資料 090903 (20)

【13-A-2】 「Delphi for PHP のエバンジェリストが、日本の PHP エバンジェリストと、 PHP と IDE の今と未来を語る」~Em...
【13-A-2】 「Delphi for PHP のエバンジェリストが、日本の PHP エバンジェリストと、 PHP と IDE の今と未来を語る」~Em...【13-A-2】 「Delphi for PHP のエバンジェリストが、日本の PHP エバンジェリストと、 PHP と IDE の今と未来を語る」~Em...
【13-A-2】 「Delphi for PHP のエバンジェリストが、日本の PHP エバンジェリストと、 PHP と IDE の今と未来を語る」~Em...
 
PHP超入門@LL温泉
PHP超入門@LL温泉PHP超入門@LL温泉
PHP超入門@LL温泉
 
[Oracle DBA & Developer Day 2014] しばちょう先生による特別講義! RMANの運用と高速化チューニング
[Oracle DBA & Developer Day 2014] しばちょう先生による特別講義! RMANの運用と高速化チューニング[Oracle DBA & Developer Day 2014] しばちょう先生による特別講義! RMANの運用と高速化チューニング
[Oracle DBA & Developer Day 2014] しばちょう先生による特別講義! RMANの運用と高速化チューニング
 
Gorm @ gopher china
Gorm @ gopher chinaGorm @ gopher china
Gorm @ gopher china
 
20090522 Candycane
20090522 Candycane20090522 Candycane
20090522 Candycane
 
Cloud era -『クラウド時代』マッシュアップ技術による地方からの世界発信
Cloud era -『クラウド時代』マッシュアップ技術による地方からの世界発信Cloud era -『クラウド時代』マッシュアップ技術による地方からの世界発信
Cloud era -『クラウド時代』マッシュアップ技術による地方からの世界発信
 
20090313 Cakephpstudy
20090313 Cakephpstudy20090313 Cakephpstudy
20090313 Cakephpstudy
 
【13-C-4】 「もう業務はとまらない!オフライン機能を使った業務アプリケーションの実例と最新 Curl 情報」
【13-C-4】 「もう業務はとまらない!オフライン機能を使った業務アプリケーションの実例と最新 Curl 情報」【13-C-4】 「もう業務はとまらない!オフライン機能を使った業務アプリケーションの実例と最新 Curl 情報」
【13-C-4】 「もう業務はとまらない!オフライン機能を使った業務アプリケーションの実例と最新 Curl 情報」
 
Tcl/Tk+ハッシュリスト
Tcl/Tk+ハッシュリストTcl/Tk+ハッシュリスト
Tcl/Tk+ハッシュリスト
 
2007 0822 Antelope Php
2007 0822 Antelope Php2007 0822 Antelope Php
2007 0822 Antelope Php
 
Spring Framework勉強会
Spring  Framework勉強会Spring  Framework勉強会
Spring Framework勉強会
 
Web技術勉強会 第19回
Web技術勉強会 第19回Web技術勉強会 第19回
Web技術勉強会 第19回
 
LT openpear@LL温泉
LT openpear@LL温泉LT openpear@LL温泉
LT openpear@LL温泉
 
Development toolsforteamdevelopment
Development toolsforteamdevelopmentDevelopment toolsforteamdevelopment
Development toolsforteamdevelopment
 
Hoppyではじめよう!リアルタイムweb
Hoppyではじめよう!リアルタイムwebHoppyではじめよう!リアルタイムweb
Hoppyではじめよう!リアルタイムweb
 
Linux Commands
Linux CommandsLinux Commands
Linux Commands
 
20090418 イケテルRails勉強会 第2部Air編 解説
20090418 イケテルRails勉強会 第2部Air編 解説20090418 イケテルRails勉強会 第2部Air編 解説
20090418 イケテルRails勉強会 第2部Air編 解説
 
Revisited
RevisitedRevisited
Revisited
 
技術トレンディセミナー フレームワークとしてのTrac
技術トレンディセミナー フレームワークとしてのTrac技術トレンディセミナー フレームワークとしてのTrac
技術トレンディセミナー フレームワークとしてのTrac
 
Install Moodle
Install MoodleInstall Moodle
Install Moodle
 

Último

From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?XfilesPro
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 

Último (20)

From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 

フラクタリスト技術知識共有会発表資料 090903

  • 1. mod_perlで簡単Apacheモジュール開発 Takayuki Hirayama 1 Copyright 2009  Fractalist inc. All rights reserved.
  • 2. mod_perlって何者? よくある誤解 CGIの高速なやつ× Apacheに組み込んだPerlインタープリタ(例:PHP)× ApacheのAPIにPerlでアクセスできるようにし、Apacheのモジュール(プラグイン)を Perlで開発できるようにするもの 2 Copyright 2009  Fractalist inc. All rights reserved.
  • 3. mod_perlの要素 mod_perlとmod_perl2がある mod_perl : Apache1.3系用 mod_perl2 : Apache2.x系用 Apacheから見たmod_perlハンドラ(mod_perl2) mod_perlハンドラ 完全にApacheモジュールとして開発する パラメータなどは全てAPIを通じて取得する 高速 cgi-scriptハンドラ プログラム側からCGI風にパラメータ取得できる %ENVパラメータにパラメータ格納 printで出力 開発環境ではCGIとして開発できるので開発しやすい ModPerl::Registry レスポンスハンドラでCGIとして書かれたプログラムを動かせる ただしグローバル変数などの挙動に制約あり 3 Copyright 2009  Fractalist inc. All rights reserved.
  • 4. httpd.conf mod_perlハンドラ LoadModuleperl_module modules/mod_perl.so # MyApp::Apache2::HelloWorldモジュールにハンドラを実装する # /somewhere/perl/lib 以下に.pmファイルを置く PerlSwitches-I/somewhere/perl/lib # 事前ロード PerlModuleMyApp::Apache2::HelloWorld # 特定ロケーションにハンドラを設定 <Location /index> SetHandlermodperl PerlResponseHandlerMyApp::Apache2::HelloWorld </Location> cgi-script ハンドラ + ModPerl::Registry LoadModuleperl_modulemodules/mod_perl.so <Location “/index.cgi”> # perl-scriptセットハンドラを指定して、 # PerlResponseHandlerにModPer::Registryを指定する SetHandlerperl-script PerlResponseHandlerModPerl::Registry </Location> 4 Copyright 2009  Fractalist inc. All rights reserved.
  • 5. Apache2のHTTPリクエストライフサイクル デフォルトのハンドラを「上書きする」ハンドラをモジュールとして提供する ※ http://perl.apache.org/docs/2.0/user/handlers/http.html より引用 5 Copyright 2009  Fractalist inc. All rights reserved.
  • 6. 何が作れるの? レスポンスハンドラ(PerlResponseHandler) パラメータに応じたレスポンス (通常のWebアプリケーション) プロトコルハンドラ カスタム認証ハンドラ(PerlAuthzHandler) カスタムログ出力(PerlLogHandler) Input/Output Filterハンドラ 全てのリクエストに対し一定の処理をかける(PerlInputFilterHandler) 全てのレスポンスに対し事後的に一定の処理をかける(PerlOutputFilterHandler) 6 Copyright 2009  Fractalist inc. All rights reserved.
  • 7. ソースはどんな感じ? #file:/somewhere/perl/lib/MyApp/Apache2/HelloWorld.pm #---------------------- package MyApp::Apache2::HelloWorld; use strict; use warnings; use Apache2::RequestRec (); use Apache2::RequestIO (); # 定数の宣言 use Apache2::Const -compile => qw(OK); # ハンドラメソッドの宣言 # これだけ! sub handler { my $r = shift; # Apache2::RequestRecObjectが引数に入ってくる $r->content_type(‘text/plain’); # HTTPヘッダの格納 $r->print( “Hello World! ” ); # 出力結果の格納 return Apache2::Const::OK; } 1; 7 Copyright 2009  Fractalist inc. All rights reserved. クラスメソッドとして定義することもできる 継承などが利用できるので開発効率大 開発用のオートリロードも可能
  • 8. 特徴1:高速+軽快! Apache起動時に実行イメージをロードする PHPでは基本的にインタプリタのみロード 必要最小限のモジュールのみ使用するようにできるので、実行イメージが小さくなる 必ずしも大きなWAFに頼る必要はない Ruby on RailsやCakePHPでは原則オールインワンで利用せざるを得ない ハンドラだけ定義できるので場合によっては限定的な影響範囲にのみ適用できる 8 Copyright 2009  Fractalist inc. All rights reserved.
  • 9. 特徴2:高い開発効率 C言語でなくPerlで記述できる リソースの垣根が低い 枯れた技術/モジュール等資産の再活用 多彩なCPANモジュールを利用できる CGI URI Encode Log::Log4perl HTTP::MobileAgent etc… ミドルウェアとの連携も容易 memcached DBI 9 Copyright 2009  Fractalist inc. All rights reserved.
  • 10. 特徴3:変数ライフサイクル Apache親プロセスと子プロセスでファイルロードタイミングなどを意識できる 10 Copyright 2009  Fractalist inc. All rights reserved. Apache 親プロセス リクエスト Apache 子プロセス fork(2) レスポンス Apache 子プロセス Apache 子プロセス Apache 子プロセス Apache 子プロセス Apacheのpreforkモデルのイメージ
  • 11. まとめ 利用シチュエーション 広告配信 カスタムログ収集 その他小さいアプリケーションを短期間で開発したい場合 まとめ 11 Copyright 2009  Fractalist inc. All rights reserved. Webアプリケーションの開発要件に応じて 様々な形態から採用検討することが重要