12
WSGI / Rack / PSGI なんぞ Katsuji Ishikawa <[email protected] >

WSGI / Rack / PSGI てなんぞ

Embed Size (px)

DESCRIPTION

社内自グループでの勉強会で使用。 WSGI, Rack, PSGI を聞いたことのない人向けの紹介。

Citation preview

Page 1: WSGI / Rack / PSGI てなんぞ

WSGI / Rack / PSGI てなんぞ

Katsuji Ishikawa <[email protected]>

Page 2: WSGI / Rack / PSGI てなんぞ

menu

• Web アプリケーションの実行環境

• WSGI について

• Rack について

• PSGI について

• Hello World サンプル

Page 3: WSGI / Rack / PSGI てなんぞ

Web アプリケーションの実行環境

• 注: Python, Ruby, Perl における主なもの

• CGI

• FastCGI

• SpeedyCGI (Perl)

• mod_言語名 (python, ruby, perl)

• mod_snake (Python)

• WSGI / Rack / PSGI

• ・・・などなど

Page 4: WSGI / Rack / PSGI てなんぞ

WSGI

• WSGI 以前

• Python では色々な Web アプリケーションフレームワーク(以下 WAF )が作られていた

• http://wiki.python.org/moin/WebFrameworks

• WAF を選ぶ = 利用できる Web サーバが決まってしまう、またその逆も

Page 5: WSGI / Rack / PSGI てなんぞ

WSGI

• WAF <=> Web サーバをつなぐ共通のインタフェースを定義しよう!

• これが WSGI (PEP 333)

• http://www.python.org/dev/peps/pep-0333/

• Python Web Server Gateway Interface

Page 6: WSGI / Rack / PSGI てなんぞ

WSGI

• WSGI 以降

• WAF, Web サーバ共に WSGI に対応すればおk

• 使いたいWAF, Web サーバが使える

• WSGI 対応してれば他のサーバへ変更も容易

• WSGI =「仕様」、wsgiref =「リファレンス実装」(Python 2.5 から標準添付)

• http://docs.python.org/2/library/wsgiref.html

Page 7: WSGI / Rack / PSGI てなんぞ

WSGI

Webサーバ WAF

Django

TurboGears

Pyramid

Flask

Bottle

web.py

Apache

nginx

Cherokee

lighttpd

Page 9: WSGI / Rack / PSGI てなんぞ

Rack

• Ruby には WSGI 相当のものがなかった

• 実行環境どうしよう

• Mongrel ? FastCGI ? Passenger ?

• 2007年ごろ: WSGI のようなのつくっちゃおう => Rack

• Rack: a Ruby Webserver Interface

• http://rack.github.io/

• Rack =「仕様」&「実装」

Page 10: WSGI / Rack / PSGI てなんぞ

PSGI

• Perl にも WSGI / Rack 相当のものがなかった

• 実行環境どうしよう

• mod_perl ? fastcgi ? speedycgi ?

• 2009年: WSGI / Rack のようなのつくっちゃおう => PSGI

• PSGI/Plack

• http://plackperl.org/

• PSGI =「仕様」、Plack =「(リファレンス)実装」

Page 11: WSGI / Rack / PSGI てなんぞ

参考URL• WSGIとPythonでスマートなWebアプリケーション開発を 第1回 

WSGIの概要

• http://gihyo.jp/dev/feature/01/wsgi/0001?page=1

• Ruby Freaks Lounge 第23回 Rackとは何か(1)Rackの生まれた背景

• http://gihyo.jp/dev/serial/01/ruby/0023

• Perl Hackers Hub 第1回 PSGI/Plack―フレームワークとサーバをつなぐエンジン (1)

• http://gihyo.jp/dev/serial/01/perl-hackers-hub/000101

Page 12: WSGI / Rack / PSGI てなんぞ

Hello World サンプル