wsgi / rack / psgi てなんぞ
DESCRIPTION
社内自グループでの勉強会で使用。 WSGI, Rack, PSGI を聞いたことのない人向けの紹介。TRANSCRIPT
WSGI / Rack / PSGI てなんぞ
Katsuji Ishikawa <[email protected]>
menu
• Web アプリケーションの実行環境
• WSGI について
• Rack について
• PSGI について
• Hello World サンプル
Web アプリケーションの実行環境
• 注: Python, Ruby, Perl における主なもの
• CGI
• FastCGI
• SpeedyCGI (Perl)
• mod_言語名 (python, ruby, perl)
• mod_snake (Python)
• WSGI / Rack / PSGI
• ・・・などなど
WSGI
• WSGI 以前
• Python では色々な Web アプリケーションフレームワーク(以下 WAF )が作られていた
• http://wiki.python.org/moin/WebFrameworks
• WAF を選ぶ = 利用できる Web サーバが決まってしまう、またその逆も
WSGI
• WAF <=> Web サーバをつなぐ共通のインタフェースを定義しよう!
• これが WSGI (PEP 333)
• http://www.python.org/dev/peps/pep-0333/
• Python Web Server Gateway Interface
WSGI
• WSGI 以降
• WAF, Web サーバ共に WSGI に対応すればおk
• 使いたいWAF, Web サーバが使える
• WSGI 対応してれば他のサーバへ変更も容易
• WSGI =「仕様」、wsgiref =「リファレンス実装」(Python 2.5 から標準添付)
• http://docs.python.org/2/library/wsgiref.html
WSGI
Webサーバ WAF
Django
TurboGears
Pyramid
Flask
Bottle
web.py
Apache
nginx
Cherokee
lighttpd
お断り
• 前の図は http://gihyo.jp/dev/serial/01/perl-
hackers-hub/000101 を真似ました
Rack
• Ruby には WSGI 相当のものがなかった
• 実行環境どうしよう
• Mongrel ? FastCGI ? Passenger ?
• 2007年ごろ: WSGI のようなのつくっちゃおう => Rack
• Rack: a Ruby Webserver Interface
• http://rack.github.io/
• Rack =「仕様」&「実装」
PSGI
• Perl にも WSGI / Rack 相当のものがなかった
• 実行環境どうしよう
• mod_perl ? fastcgi ? speedycgi ?
• 2009年: WSGI / Rack のようなのつくっちゃおう => PSGI
• PSGI/Plack
• http://plackperl.org/
• PSGI =「仕様」、Plack =「(リファレンス)実装」
参考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
Hello World サンプル