Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100644 172 lines (133 sloc) 13.789 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>
7c798a6 @miyagawa Plack is not a server anymore
authored
57 <dt><a href="http://search.cpan.org/dist/Plack">Plack</a> (adapters)</dt>
58 <dd>Plack core includes HTTP::Server::PSGI, the standalone (prefork) HTTP server, a CGI runner (for running any PSGI application as a CGI script), a FastCGI daemon and Apache1 and 2 mod_perl handler.</dd>
37e8141 @miyagawa Initial commit
authored
59
7c798a6 @miyagawa Plack is not a server anymore
authored
60 <dt>Misc Plack::Server adapters</dt>
cb6e363 @miyagawa added HSS::PSGI
authored
61 <dd>There are other PSGI server implementations and Plack adapters for them, to run PSGI applications on <a href="http://github.com/miyagawa/Plack-Server-AnyEvent">AnyEvent</a>, <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> and <a href="http://github.com/frodwith/plack-server-poe">POE</a>. They are available as separate distributions.</dd>
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
66 <dt><a href="http://github.com/miyagawa/Nomo">Nomo</a></dt>
4c4ee9f @miyagawa update
authored
67 <dd>Nomo is a high-performance, superdaemon aware, preforking HTTP server that is compatible to PSGI. Using supervisors such as Server::Starter and ControlFreak, Nomo can benefit from features such as hot-deploy, graceful restart, dynamic worker pool configuration and UNIX socket sharing.</dd>
c8ccea0 @miyagawa update links now that most dists are uploaded to CPAN
authored
68
69 <dt><a href="http://search.cpan.org/dist/Plack-Server-ReverseHTTP">ReverseHTTP</a></dt>
70 <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>
71
23e996a @miyagawa added mod_psgi
authored
72 <dt><a href="http://github.com/spiritloose/mod_psgi/">mod_psgi</a></dt>
de7ade7 @miyagawa added evhttpd
authored
73 <dd>mod_psgi is an Apache2 module that runs PSGI applications using an embedded Perl interpreter. Developed by Jiro Nishiguchi</dd>
74
75 <dt><a href="http://github.com/sekimura/evpsgi">evpsgi</a></dt>
4c4ee9f @miyagawa update
authored
76 <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
77
dfbb52e @miyagawa added framworks
authored
78 <dt><a href="http://www.danga.com/perlbal/">Perlbal</a></dt>
2b6ebb9 @miyagawa added a new link
authored
79 <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
80
f572103 @miyagawa Added more warnings to perlbal/nginx gotcha
authored
81 <dt><a href="http://www.nginx.eu/">nginx embedded perl</a></dt>
82 <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
83
dfbb52e @miyagawa added framworks
authored
84 <dt><a href="http://github.com/tokuhirom/p5-http-server-fast/">HTTP::Server::Fast</a></dt>
a56e167 @sartak Grammar fixes
sartak authored
85 <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
86
37e8141 @miyagawa Initial commit
authored
87 </dl>
88
02c54f8 @miyagawa make the site more buzz compliant
authored
89 <h2 id="frameworks">Frameworks</h2>
dfbb52e @miyagawa added framworks
authored
90
91 <dl>
92 <dt><a href="http://www.catalystframework.org/">Catalyst</a></dt>
c8ccea0 @miyagawa update links now that most dists are uploaded to CPAN
authored
93 <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>.</dd>
dfbb52e @miyagawa added framworks
authored
94 <dt><a href="http://cgi-app.org/">CGI::Application</a></dt>
1d10739 @miyagawa more comments
authored
95 <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
96 <dt><a href="http://search.cpan.org/dist/HTTP-Engine">HTTP::Engine</a></dt>
1d10739 @miyagawa more comments
authored
97 <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
98 <dt><a href="http://dancer.sukria.net">Dancer</a></dt>
a56e167 @sartak Grammar fixes
sartak authored
99 <dd>Dancer is a Sinatra-like micro web application framework and has supported PSGI since version 0.9904.</dd>
636d93c @miyagawa Added Mason
authored
100 <dt><a href="http://www.masonhq.com/">Mason</a></dt>
101 <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
102 <dt><a href="http://search.cpan.org/~beppu/Squatting/">Squatting</a></dt>
1d10739 @miyagawa more comments
authored
103 <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
104 <dt><a href="http://search.cpan.org/~awwaiid/Continuity/">Continuity</a></dt>
3b3d185 @miyagawa fixed links
authored
105 <dd>Continuity is a Coro based web server that supports Continuations. The <a href="http://github.com/awwaiid/Continuity/">Github repo</a> has an experimental Plack support.</dd>
3611a2f @miyagawa added Maypole
authored
106 <dt><a href="http://maypole.perl.org/">Maypole</a></dt>
1d10739 @miyagawa more comments
authored
107 <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
108 <dt><a href="http://github.com/miyagawa/Tatsumaki">Tatsumaki</a></dt>
e1b3f9f @miyagawa psgi.streaming -> psgi.nonblocking
authored
109 <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
110 <dt><a href="http://mojolicious.org/">Mojolicious</a></dt>
4c4ee9f @miyagawa update
authored
111 <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.999915 on CPAN.</dd>
6612be1 @miyagawa hide frameworks that aren't on CPAN
authored
112 <!-- dt><a href="http://github.com/dann/angelos">Angelos</a></dt>
dfbb52e @miyagawa added framworks
authored
113 <dt><a href="http://github.com/typester/ark-perl">Ark</a></dt>
114 <dt><a href="http://github.com/spiritloose/Schenker">Schenker</a></dt>
115 <dt><a href="http://github.com/yusukebe/Noe">Noe</a></dt>
6612be1 @miyagawa hide frameworks that aren't on CPAN
authored
116 <dt><a href="http://github.com/nekokak/p5-Kamui">Kamui</a></dt -->
dfbb52e @miyagawa added framworks
authored
117
118 </dt>
119
02c54f8 @miyagawa make the site more buzz compliant
authored
120 <h2 id="applications">Applications</h2>
7c5539b @miyagawa Added WebGUI
authored
121
122 <dl>
123 <dt><a href="http://www.webgui.org/">WebGUI</a></dt>
124 <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>
125 </dl>
126
02c54f8 @miyagawa make the site more buzz compliant
authored
127 <h2 id="middlewares">Middleware and Utilities</h2>
37e8141 @miyagawa Initial commit
authored
128
dfbb52e @miyagawa added framworks
authored
129 <dl>
c8ccea0 @miyagawa update links now that most dists are uploaded to CPAN
authored
130 <dt><a href="http://search.cpan.org/dist/CGI-PSGI">CGI::PSGI</a></dt>
a56e167 @sartak Grammar fixes
sartak authored
131 <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
132 <dt><a href="http://search.cpan.org/dist/Plack-Request">Plack::Request</a></dt>
133 <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
134 <dt><a href="http://search.cpan.org/~nuffin/IO-Handle-Util/">IO::Handle::Util</a></dt>
a56e167 @sartak Grammar fixes
sartak authored
135 <dd>Utility module to create an IO::Handle-like object instantly with a simple interface.</dd>
dfbb52e @miyagawa added framworks
authored
136 <dt><a href="http://search.cpan.org/~kazuho/HTTP-Parser-XS-0.02/">HTTP::Parser::XS</a></dt>
a56e167 @sartak Grammar fixes
sartak authored
137 <dd>Super fast XS-based PSGI compatible HTTP header parser, used in many Plack server implementations.</dd>
a357883 @miyagawa link to CGI::Compile
authored
138 <dt><a href="http://search.cpan.org/dist/CGI-Emulate-PSGI">CGI::Emulate::PSGI</a></dt>
139 <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
140
141 </dl>
142
02c54f8 @miyagawa make the site more buzz compliant
authored
143 <h2 id="slides">Slides and Blog Posts</h2>
37e8141 @miyagawa Initial commit
authored
144
306631e @miyagawa Added blog posts
authored
145 <p class="inline">Note that some materials and technical details might be outdated.</p>
dfbb52e @miyagawa added framworks
authored
146
a213c39 @miyagawa added para
authored
147 <dl>
81035a6 @miyagawa Added Advent calendar
authored
148 <dt><a href="http://advent.plackperl.org/">Plack Advent Calendar</a></dt>
149 <dd>24 days of Tips and tricks for PSGI and Plack</dd>
e600ba8 @miyagawa links to the LPW slides
authored
150 <dt><a href="http://www.slideshare.net/miyagawa/plack-lpw-2009">PSGI and Plack</a><dt>
151 <dd>Tatsuhiko Miyagawa at London Perl Workshop, December 2009</dd>
306631e @miyagawa Added blog posts
authored
152 <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
153 <dd>Patrick Donelan writes a good introduction for PSGI and Plack from the web application developers point of view.</dd>
154 <dt><a href="http://www.simon-cozens.org/content/i-finally-get-psgi-and-plack">I finally get PSGI and Plack!</a></dt>
155 <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
156 <dt><a href="http://www.slideshare.net/miyagawa/tatsumaki">Tatsumaki, Plack based non-blocking framework</a></dt>
157 <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
158 <dt><a href="http://tokuhirom.github.com/talks/20090910-yapcasia2009-psgi-plack/">PSGI/Plack</a></dt>
2b6ebb9 @miyagawa added a new link
authored
159 <dd>Tokuhiro Matsuno and Tatsuhiko Miyagawa at YAPC::Asia 2009 (Japanese).</dd>
a213c39 @miyagawa added para
authored
160 </dl>
dfbb52e @miyagawa added framworks
authored
161
02c54f8 @miyagawa make the site more buzz compliant
authored
162 <h2 id="community">Community</h2>
37e8141 @miyagawa Initial commit
authored
163
4382fb7 @miyagawa updated delicious links
authored
164 <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
165
166 <div id="footer">
b2dd683 @sartak Fix link to the repository
sartak authored
167 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
168 </div>
169
170 </div>
171 </body>
Something went wrong with that request. Please try again.