Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Newer
Older
100644 175 lines (135 sloc) 15.237 kB
37e8141 @miyagawa Initial commit
authored
1 <html>
2 <head>
89f438b @miyagawa utf-8
authored
3 <meta equiv="Cotent-Type" content="text/html;charset=utf-8"/>
3d31c99 @miyagawa make it plural!
authored
4 <title>PSGI/Plack - Perl Superglue for Web Frameworks and Web Servers</title>
4a65cf7 @miyagawa added ga
authored
5 <script type="text/javascript">
6 var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
7 document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
8 </script>
9 <script type="text/javascript">
10 try {
11 var pageTracker = _gat._getTracker("UA-52226-5");
12 pageTracker._trackPageview();
13 } catch(err) {}</script>
dfbb52e @miyagawa added framworks
authored
14 <link rel="stylesheet" href="http://plackperl.org/screen.css"/>
02c54f8 @miyagawa make the site more buzz compliant
authored
15 <style>
8c90659 @miyagawa changed title and added tagline
authored
16 h1 { margin-bottom: 0 }
17 p.tagline { color: #888; padding-bottom: 2em }
02c54f8 @miyagawa make the site more buzz compliant
authored
18 p.quote { padding-bottom: 0 }
19 p.quoted { text-align: right; padding: 0; font-style: italic; padding-bottom: 1em }
20 </style>
37e8141 @miyagawa Initial commit
authored
21 </head>
22 <body>
23 <div class="container">
24
25 <h1>PSGI/Plack</h1>
4c4ee9f @miyagawa update
authored
26 <p class="tagline">Superglue interface between perl web application frameworks and web servers, just like Perl is the duct tape of the internet.</p>
37e8141 @miyagawa Initial commit
authored
27
771c7a7 @miyagawa emphasis the words 'interface' and 'toolkit'
authored
28 <p>PSGI is an <strong>interface</strong> between Perl web applications and web servers. PSGI is inspired by Python's <a href="http://www.python.org/dev/peps/pep-0333/">WSGI</a> and Ruby's <a href="http://rack.rubyforge.org/">Rack</a>.</p>
7c798a6 @miyagawa Plack is not a server anymore
authored
29 <p>Plack is a Perl module and <strong>toolkit</strong> that contains PSGI middleware, utility modules and adapters to PSGI servers.</p>
37e8141 @miyagawa Initial commit
authored
30
f8f6cef @miyagawa update links
authored
31 <p class="inline">The <a href="http://search.cpan.org/perldoc?PSGI">PSGI specification</a> and <a href="http://search.cpan.org/perldoc?PSGI::FAQ">Frequently Asked Questions</a> are available.</p>
37e8141 @miyagawa Initial commit
authored
32
02c54f8 @miyagawa make the site more buzz compliant
authored
33 <h2 id="testimonials">What People Say</h2>
34
3b3d185 @miyagawa fixed links
authored
35 <p class="quote">&quot;I love this... I think it's exactly the right answer to what I was looking for, for a really simple webapp.&quot;</p><p class="quoted">-Benjamin Trott, CTO and Co-founder of Six Apart</p>
02c54f8 @miyagawa make the site more buzz compliant
authored
36
89f438b @miyagawa utf-8
authored
37 <p class="quote">&quot;Wow, this is nothing short of awesome. A big ++ to the entire PSGI/Plack team!&quot</p><p class="quoted">-Stevan Little, Infinity Interactive, Moose author</p>
02c54f8 @miyagawa make the site more buzz compliant
authored
38
3c4791c @miyagawa shorten
authored
39 <p class="quote">&quot;This is something we've needed for a long time: a clean and simple way to respond to HTTP requests without the cruft of CGI&quot;</p><p class="quoted">-Yuval Kogman, Infinity Interactive, KiokuDB developer</p>
02c54f8 @miyagawa make the site more buzz compliant
authored
40
41 <p class="quote">&quot;PSGI (is) an absurdly simple, manifestly beautiful specification for an interface between Perl web apps and web servers.&quot; </p><p class="quoted">-Patrick Donelan, WebGUI developer</p>
42
d03be47 @miyagawa Added POE
authored
43 <p class="quote">&quot;Thanks for including us! We're very excited about a future where we don't have to worry about web server support&quot;</p><p class="quoted">-Jonathan Swartz, Mason author</p>
22a8d6a @miyagawa added Mason
authored
44
7e5fd48 @miyagawa added lathos to testimonials
authored
45 <p class="quote">&quot;I \N{HEAVY BLACK HEART} PSGI.&quot;</p><p class="quoted">-Simon Cozens, the author of Advanced Perl Programming</p>
46
a1ec553 @miyagawa tweaked titles
authored
47 <p class="quote">&quot;miyagawa++ # fucking awesome&quot;</p><p class="quoted">-Matt S Trout, Shadowcat Systems, Catalyst and DBIx::Class developer</p>
02c54f8 @miyagawa make the site more buzz compliant
authored
48
49 <h2 id="repositories">Repositories</h2>
37e8141 @miyagawa Initial commit
authored
50 <ul>
51 <li><a href="http://github.com/miyagawa/psgi-specs">PSGI specifications</a></li>
52 <li><a href="http://github.com/miyagawa/Plack">Plack core</a></li>
53 </ul>
54
02c54f8 @miyagawa make the site more buzz compliant
authored
55 <h2 id="servers">Servers</h2>
37e8141 @miyagawa Initial commit
authored
56 <dl>
4f04e96 @miyagawa renamed AnyEvent to Twiggy. Added more handlers
authored
57 <dt><a href="http://search.cpan.org/dist/Plack">Plack</a> (web server adapters)</dt>
58 <dd>Plack core includes a CGI runner (for running any PSGI application as a CGI script), a FastCGI daemon and mod_perl handlers for Apache1 and 2.</dd>
37e8141 @miyagawa Initial commit
authored
59
4f04e96 @miyagawa renamed AnyEvent to Twiggy. Added more handlers
authored
60 <dt><a href="http://search.cpan.org/dist/Plack">HTTP::Server::PSGI</a></dt>
61 <dd>HTTP::Server::PSGI is a reference PSGI standalone web server implementation and is included in the Plack core distribution.</dd>
cb6e363 @miyagawa added HSS::PSGI
authored
62
63 <dt><a href="http://search.cpan.org/dist/HTTP-Server-Simple-PSGI">HTTP::Server::Simple::PSGI</a></dt>
64 <dd>HTTP::Server::Simple::PSGI is based on HTTP::Server::Simple and has zero dependency other than HTTP::Server::Simple, which itself doesn't have any dependencies. This is best for embedding to build a standalone web server or dependency free frameworks.</dd>
7c798a6 @miyagawa Plack is not a server anymore
authored
65
4f04e96 @miyagawa renamed AnyEvent to Twiggy. Added more handlers
authored
66 <dt><a href="http://github.com/miyagawa/Twiggy">Twiggy</a></dt>
67 <dd>Twiggy is an AnyEvent based non-blocking (asynchronous) and lightweight PSGI web server. Best to run AnyEvent based web applications to implement long-poll, server push or WebSockets etc., such as the one built on top of the <a href="http://github.com/miyagawa/Tatsumaki">Tatsumaki</a> framework.</dd>
68
69 <dt>Misc. web server adapters</dt>
70 <dd>There are many Perl web servers and adapters on CPAN and Plack handlers for them, to run PSGI applications on <a href="http://github.com/mala/Plack-Server-FCGI-EV">FCGI::EV</a>, <a href="http://github.com/typester/Plack-Server-Danga-Socket">Danga::Socket</a>, <a href="http://github.com/miyagawa/Plack-Server-Coro">Coro</a>, <a href="http://github.com/miyagawa/Plack-Handler-AnyEvent-HTTPD">AnyEvent::HTTPD</a>, <a href="http://github.com/miyagawa/Plack-Handler-SCGI">SCGI</a>, <a href="http://github.com/miyagawa/Plack-Handler-AnyEvent-SCGI">AnyEvent::SCGI</a> and <a href="http://github.com/frodwith/plack-server-poe">POE</a>. They are available as separate distributions.</dd>
71
0ed5eae @miyagawa s/Nomo/Starman/
authored
72 <dt><a href="http://github.com/miyagawa/Starman">Starman</a></dt>
ebc6262 @miyagawa fix
authored
73 <dd>Starman is a high-performance, preforking and PSGI compatible HTTP server that has unique features such as HTTP/1.1 support, multiple interfaces support including UNIX domain sockets, graceful restarts and dynamic worker pool configuration via signals.</dd>
c8ccea0 @miyagawa update links now that most dists are uploaded to CPAN
authored
74
75 <dt><a href="http://search.cpan.org/dist/Plack-Server-ReverseHTTP">ReverseHTTP</a></dt>
76 <dd>ReverseHTTP server allows you to run a PSGI application on your desktop or inside the firewall but allows external access via <a href="http://www.reversehttp.net/">reversehttp.net</a> gateway.</dd>
77
23e996a @miyagawa added mod_psgi
authored
78 <dt><a href="http://github.com/spiritloose/mod_psgi/">mod_psgi</a></dt>
de7ade7 @miyagawa added evhttpd
authored
79 <dd>mod_psgi is an Apache2 module that runs PSGI applications using an embedded Perl interpreter. Developed by Jiro Nishiguchi</dd>
80
81 <dt><a href="http://github.com/sekimura/evpsgi">evpsgi</a></dt>
4c4ee9f @miyagawa update
authored
82 <dd>evpsgi is an <a href="http://monkey.org/~provos/libevent/doxygen/evhttp_8h.html">evhttp</a> based http server that runs PSGI applications with the embedded Perl interpreter. Developed by Masayoshi Sekimura</dd>
23e996a @miyagawa added mod_psgi
authored
83
dfbb52e @miyagawa added framworks
authored
84 <dt><a href="http://www.danga.com/perlbal/">Perlbal</a></dt>
2b6ebb9 @miyagawa added a new link
authored
85 <dd><a href="http://github.com/miyagawa/Perlbal-Plugin-PSGI">Perlbal::Plugin::PSGI</a> allows you to run PSGI applications on Perlbal. Note that because Perlbal runs in a non-blocking event loop (Danga::Socket), your application is also <strong>not supposed to block</strong>. If your application blocks (with database acesss or network I/O), do not use this plugin and instead run your PSGI application with the prefork Plack server and reverse proxy to the backend as usual.</dd>
37e8141 @miyagawa Initial commit
authored
86
f572103 @miyagawa Added more warnings to perlbal/nginx gotcha
authored
87 <dt><a href="http://www.nginx.eu/">nginx embedded perl</a></dt>
88 <dd><a href="http://github.com/yappo/nginx-psgi-patchs">Kazuhiro Osawa's nginx patches</a> allows you to run PSGI applications on a Perl interpreter embedded <strong>inside</strong> nginx. This patch is considered <strong>highly experimental and not recommended</strong> for the production use. You're recommended to run your (possibly blocking) PSGI application with prefork/fastcgi servers and put nginx in front, and in that case you don't need this patch.</dd>
37e8141 @miyagawa Initial commit
authored
89
4c9514f @miyagawa added Continuity
authored
90 <!-- dt><a href="http://github.com/tokuhirom/p5-http-server-fast/">HTTP::Server::Fast</a></dt>
91 <dd>HTTP::Server::Fast is a complete XS-based HTTP daemon to run PSGI applications, written by Tokuhiro Matsuno.</dd -->
dfbb52e @miyagawa added framworks
authored
92
37e8141 @miyagawa Initial commit
authored
93 </dl>
94
02c54f8 @miyagawa make the site more buzz compliant
authored
95 <h2 id="frameworks">Frameworks</h2>
dfbb52e @miyagawa added framworks
authored
96
97 <dl>
98 <dt><a href="http://www.catalystframework.org/">Catalyst</a></dt>
41ab589 @miyagawa Added Catalyst and Jifty core branches info. Added more frameworks su…
authored
99 <dd>Catalyst is one of the most popular web application frameworks in Perl and has a support for PSGI through <a href="http://search.cpan.org/dist/Catalyst-Engine-PSGI">Catalyst::Engine::PSGI</a>. There's also <a href="http://dev.catalyst.perl.org/repos/Catalyst/Catalyst-Runtime/5.80/branches/psgi/">psgi branch</a> on Catalyst core to use PSGI by default.</dd>
100 <dt><a href="http://jifty.org/">Jifty</a></dt>
101 <dd>Jifty is a full-stack Perl web application framework that comes with continuations, form-based dispatch, ORM and A Pony. Jifty applications are now supposed to run on Plack <a href="http://lists.bestpractical.com/pipermail/jifty-devel/2010-February/002291.html">on plack-rebased branch</a>.</dd>
dfbb52e @miyagawa added framworks
authored
102 <dt><a href="http://cgi-app.org/">CGI::Application</a></dt>
1d10739 @miyagawa more comments
authored
103 <dd>CGI::Application is a CGI.pm-based lightweight web framework. Any CGI::Application based applications can run as a PSGI application using <a href="http://search.cpan.org/dist/CGI-PSGI">CGI::PSGI</a> and <a href="http://search.cpan.org/dist/CGI-Application-PSGI">CGI::Application::PSGI</a>.</dd>
dfbb52e @miyagawa added framworks
authored
104 <dt><a href="http://search.cpan.org/dist/HTTP-Engine">HTTP::Engine</a></dt>
1d10739 @miyagawa more comments
authored
105 <dd>HTTP::Engine is a micro web application framework and is a &quot;father of PSGI/Plack&quot; since we owe lots of code and ideas. HTTP::Engine itself now has PSGI Interface support as an adapter since 0.03 on CPAN.</dd>
9bbef9c @miyagawa update Dancer
authored
106 <dt><a href="http://dancer.sukria.net">Dancer</a></dt>
a56e167 @sartak Grammar fixes
sartak authored
107 <dd>Dancer is a Sinatra-like micro web application framework and has supported PSGI since version 0.9904.</dd>
636d93c @miyagawa Added Mason
authored
108 <dt><a href="http://www.masonhq.com/">Mason</a></dt>
109 <dd>Mason allows you to embed code in HTML templates and can now run on any PSGI supported web server using <a href="http://github.com/miyagawa/HTML-Mason-PSGIHandler">HTML::Mason::PSGIHandler</a></dd>
dfbb52e @miyagawa added framworks
authored
110 <dt><a href="http://search.cpan.org/~beppu/Squatting/">Squatting</a></dt>
1d10739 @miyagawa more comments
authored
111 <dd>Squatting is a Camping-inspired Web Microframework and has a support for PSGI through <a href="http://search.cpan.org/dist/Squatting-On-PSGI">Squatting::On::PSGI</a>.</dd>
cb27fcf @miyagawa update Continuity links
authored
112 <dt><a href="http://search.cpan.org/~awwaiid/Continuity/">Continuity</a></dt>
4c9514f @miyagawa added Continuity
authored
113 <dd>Continuity is a Coro based web application libary that supports Continuations to build statefull applications and support PSGI via Coro server since version 1.1.1 on CPAN.</dd>
3611a2f @miyagawa added Maypole
authored
114 <dt><a href="http://maypole.perl.org/">Maypole</a></dt>
1d10739 @miyagawa more comments
authored
115 <dd>Maypole is a Struts-inspired MVC web application frameworks built on top of Class::DBI ORM. Maypole applications can run as PSGI applications using <a href="http://github.com/miyagawa/Maypole-PSGI">Maypole::PSGI</a>.</dd>
ee5c8ca @miyagawa added Tatsumaki
authored
116 <dt><a href="http://github.com/miyagawa/Tatsumaki">Tatsumaki</a></dt>
e1b3f9f @miyagawa psgi.streaming -> psgi.nonblocking
authored
117 <dd>Tatsumaki is a web application framework built on top of Plack and AnyEvent: natively supports non-blocking I/O through psgi.streaming and psgi.nonblocking, non-blocking HTTP clients, long-poll Comet services and server push.</dd>
cb6e363 @miyagawa added HSS::PSGI
authored
118 <dt><a href="http://mojolicious.org/">Mojolicious</a></dt>
8ffd247 @miyagawa fix Mojo version
authored
119 <dd>Mojolicious is Merb and Sinatra inspired web framework and has zero dependencies to non-core Perl modules. It has a native PSGI adapter since 0.999920 on CPAN.</dd>
41ab589 @miyagawa Added Catalyst and Jifty core branches info. Added more frameworks su…
authored
120 <dt>Other frameworks</dt>
121 <dd>There are lots of other individual frameworks that supports PSGI and Plack. Some of them are not available on CPAN but are developed on github: <a href="http://search.cpan.org/dist/Web-Simple">Web::Simple</a>, <a href="http://github.com/dann/angelos">Angelos</a>, <a href="http://github.com/typester/ark-perl">Ark</a>, <a href="http://github.com/spiritloose/Schenker">Schenker</a>, <a href="http://github.com/yusukebe/Noe">Noe</a>, <a href="http://github.com/nekokak/p5-Kamui">Kamui</a> and <a href="http://github.com/zby/WebNano">WebNano</a>.</dd>
dfbb52e @miyagawa added framworks
authored
122
02c54f8 @miyagawa make the site more buzz compliant
authored
123 <h2 id="applications">Applications</h2>
7c5539b @miyagawa Added WebGUI
authored
124
125 <dl>
126 <dt><a href="http://www.webgui.org/">WebGUI</a></dt>
127 <dd><a href="http://blog.patspam.com/">Patrick Donelan</a> is working on <a href="http://blog.patspam.com/2009/plebgui-webgui-meets-plack">Plack support for WebGUI</a> on <a href="http://github.com/pdonelan/webgui">his github repo</a>.</dd>
128 </dl>
129
02c54f8 @miyagawa make the site more buzz compliant
authored
130 <h2 id="middlewares">Middleware and Utilities</h2>
37e8141 @miyagawa Initial commit
authored
131
dfbb52e @miyagawa added framworks
authored
132 <dl>
c8ccea0 @miyagawa update links now that most dists are uploaded to CPAN
authored
133 <dt><a href="http://search.cpan.org/dist/CGI-PSGI">CGI::PSGI</a></dt>
a56e167 @sartak Grammar fixes
sartak authored
134 <dd>CGI.pm subclass to handle PSGI env hash to provide a CGI.pm-compatible interface. Very useful to migrate CGI.pm-based web application frameworks to the PSGI interface.</dd>
c8ccea0 @miyagawa update links now that most dists are uploaded to CPAN
authored
135 <dt><a href="http://search.cpan.org/dist/Plack-Request">Plack::Request</a></dt>
136 <dd>Plack::Request and Plack::Response is a simple wrapper around PSGI environment hash and response array to access those values using an Object oriented API.</dd>
dfbb52e @miyagawa added framworks
authored
137 <dt><a href="http://search.cpan.org/~nuffin/IO-Handle-Util/">IO::Handle::Util</a></dt>
a56e167 @sartak Grammar fixes
sartak authored
138 <dd>Utility module to create an IO::Handle-like object instantly with a simple interface.</dd>
dfbb52e @miyagawa added framworks
authored
139 <dt><a href="http://search.cpan.org/~kazuho/HTTP-Parser-XS-0.02/">HTTP::Parser::XS</a></dt>
a56e167 @sartak Grammar fixes
sartak authored
140 <dd>Super fast XS-based PSGI compatible HTTP header parser, used in many Plack server implementations.</dd>
a357883 @miyagawa link to CGI::Compile
authored
141 <dt><a href="http://search.cpan.org/dist/CGI-Emulate-PSGI">CGI::Emulate::PSGI</a></dt>
142 <dd>Run any CGI scripts (whether it uses CGI.pm or not) as a PSGI application by emulating a CGI environment. It does the opposite of CGI runner PSGI server impementation (Plack::Server::CGI). Also take a look at <a href="http://search.cpan.org/dist/CGI-Compile">CGI::Compile</a> which compiles an existing CGI scripts into a callable subroutine reference, best to be used with CGI::Emulate::PSGI.</dd>
dfbb52e @miyagawa added framworks
authored
143
144 </dl>
145
02c54f8 @miyagawa make the site more buzz compliant
authored
146 <h2 id="slides">Slides and Blog Posts</h2>
37e8141 @miyagawa Initial commit
authored
147
306631e @miyagawa Added blog posts
authored
148 <p class="inline">Note that some materials and technical details might be outdated.</p>
dfbb52e @miyagawa added framworks
authored
149
a213c39 @miyagawa added para
authored
150 <dl>
81035a6 @miyagawa Added Advent calendar
authored
151 <dt><a href="http://advent.plackperl.org/">Plack Advent Calendar</a></dt>
152 <dd>24 days of Tips and tricks for PSGI and Plack</dd>
e600ba8 @miyagawa links to the LPW slides
authored
153 <dt><a href="http://www.slideshare.net/miyagawa/plack-lpw-2009">PSGI and Plack</a><dt>
154 <dd>Tatsuhiko Miyagawa at London Perl Workshop, December 2009</dd>
306631e @miyagawa Added blog posts
authored
155 <dt><a href="http://blog.patspam.com/2009/plebgui-webgui-meets-plack">PlebGUI: WebGUI meets Plack</a></dt>
2b6ebb9 @miyagawa added a new link
authored
156 <dd>Patrick Donelan writes a good introduction for PSGI and Plack from the web application developers point of view.</dd>
157 <dt><a href="http://www.simon-cozens.org/content/i-finally-get-psgi-and-plack">I finally get PSGI and Plack!</a></dt>
158 <dd>Simon Cozens writes a great post about what PSGI is, by comparing it with HTTP::Engine.</dd>
e600ba8 @miyagawa links to the LPW slides
authored
159 <dt><a href="http://www.slideshare.net/miyagawa/tatsumaki">Tatsumaki, Plack based non-blocking framework</a></dt>
160 <dd>Tatsuhiko Miyagawa explains psgi.streaming interface to enable asynchronous requests in web frameworks. Screencast in Japanese is also <a href="http://vimeo.com/7897566">available</a>.</dd>
8e5a995 @miyagawa format
authored
161 <dt><a href="http://tokuhirom.github.com/talks/20090910-yapcasia2009-psgi-plack/">PSGI/Plack</a></dt>
2b6ebb9 @miyagawa added a new link
authored
162 <dd>Tokuhiro Matsuno and Tatsuhiko Miyagawa at YAPC::Asia 2009 (Japanese).</dd>
a213c39 @miyagawa added para
authored
163 </dl>
dfbb52e @miyagawa added framworks
authored
164
02c54f8 @miyagawa make the site more buzz compliant
authored
165 <h2 id="community">Community</h2>
37e8141 @miyagawa Initial commit
authored
166
4382fb7 @miyagawa updated delicious links
authored
167 <p>Tatsuhiko Miyagawa's <a href="http://bulknews.typepad.com/">blog</a> and delicious bookmarks (<a href="http://delicious.com/miyagawa/psgi">PSGI</a> and <a href="http://delicious.com/miyagawa/plack">Plack</a>) have a lot of updated information and links to PSGI/Plack related entries. We're chatting on <a href="irc://irc.perl.org/#plack">#plack on irc.perl.org</a> and have a low-traffic <a href="http://groups.google.com/group/psgi-plack">mailing list</a>.
37e8141 @miyagawa Initial commit
authored
168
169 <div id="footer">
b2dd683 @sartak Fix link to the repository
sartak authored
170 The PSGI spec and Plack are written by <a href="http://bulknews.typepad.com/">Tatsuhiko Miyagawa</a> and many contributors.<br/>Source code for this site is available on <a href="http://github.com/miyagawa/plackperl.org">github</a>.
37e8141 @miyagawa Initial commit
authored
171 </div>
172
173 </div>
174 </body>
Something went wrong with that request. Please try again.