「PSGI」の版間の差分
編集の要約なし |
|||
9行目: | 9行目: | ||
以下は、最も単純なPSGIアプリケーションの例である: |
以下は、最も単純なPSGIアプリケーションの例である: |
||
< |
<syntaxhighlight lang="perl"> |
||
my $app = sub { |
my $app = sub { |
||
return [200, ['Content-Type' => 'text/plain'], ["hello, world\n"]]; |
return [200, ['Content-Type' => 'text/plain'], ["hello, world\n"]]; |
||
} |
} |
||
</syntaxhighlight> |
|||
</source> |
|||
これをPSGIサーバの1つであるPlackで実行するには、<tt>hello.psgi</tt>として保存して、コマンドラインシェルで<tt>plackup hello.psgi</tt>を実行すればよい。 |
これをPSGIサーバの1つであるPlackで実行するには、<tt>hello.psgi</tt>として保存して、コマンドラインシェルで<tt>plackup hello.psgi</tt>を実行すればよい。 |
2020年7月5日 (日) 23:05時点における版
PSGI(Perl Web Server Gateway Interface)は、プログラミング言語Perlで使われる、WebアプリケーションとWebサーバを接続するインタフェースの1つであり、PerlにおけるWebアプリケーション用標準インタフェースとして使われることが意図されている。
動機および概要
Perlスクリプトは、実行ファイル形式またはモジュール形式を用いてウェブアプリケーションとして実行できる。そのための枠組みの例として、CGI, FastCGI, SpeedyCGI, mod_perl, ISAPIなどが従来から存在する。これらのうちCGIが最も古典的でシンプルな実行方法として知られているが、クライアントからのリクエストのたびにプロセスの起動・破棄を行うため、サーバへの負担が大きく、ユーザへのレスポンスにも時間がかかる。また、このような起動形態ではデータベースとの接続といった必要な初期化も毎回行わなければならない。これらの問題を解決するために、FastCGI, SpeedyCGI, mod_perlなどが考案された。これらの環境では、Webアプリケーションプロセスを起動したままにして、リクエスト毎にこのプロセスがWebサーバと何らかのインタフェースで通信することで、プロセス起動や各種の初期化にかかるオーバーヘッドを排除している。しかしながら、これらの実行環境 (FastCGI, mod_perl, etc.) はそれぞれインタフェイスが異なるため、ウェブアプリケーションフレームワークごとに、それらの差異を吸収するためのコードが繰り返し再発明されていた。
この問題を解決すべく、宮川達彦氏を主導として、PythonのWSGIやRubyのRackから着想を得た、PSGIというウェブアプリケーション用の規格が策定された[1]。また、同時にPSGIのリファレンス実装であるPlackも発表された。PlackはCPANからダウンロードできる。PSGIの登場と普及により、具体的な実行環境を意識することなくウェブアプリケーションを作成できるようになった。2010年現在では、ほとんどのPerl製WebアプリケーションフレームワークがPSGIに対応している。
PSGIアプリケーションの例
以下は、最も単純なPSGIアプリケーションの例である:
my $app = sub {
return [200, ['Content-Type' => 'text/plain'], ["hello, world\n"]];
}
これをPSGIサーバの1つであるPlackで実行するには、hello.psgiとして保存して、コマンドラインシェルでplackup hello.psgiを実行すればよい。
PSGIに対応しているWebフレームワーク
- Catalyst
- Jifty
- CGI::Application
- HTTP::Engine
- Dancer
- Mason
- Squatting
- Continuity
- Maypole
- Tatsumaki
- Mojolicious
実行環境
具体的にどの実行環境を使用するかはオペレーティングシステムやウェブサーバによって異なるが、次のような利用方法がある。
- UNIX系
- lighttpd
-
- CGI
- FastCGI
- Nginx
-
- uWSGI
- FastCGI
- Windows
- IIS
-
- CGI
- ISAPI
- Apache
-
- CGI
- FastCGI
- SpeedyCGI
- mod_perl
- ISAPI
- AN HTTPD
-
- CGI
- ISAPI
脚注
- ^ http://gihyo.jp/news/report/01/yapcasia2009/0001 YAPC::Asia Tokyo 2009 スペシャルレポート