Plack Handbook - Using plackupSunday, September 7, 2014, 9:33 PM
Day 3: Using plackup
In the Day 2 article I used the plackup command to run the Hello World PSGI application.
plackup is a command line launcher of PSGI applications inspired by Rack's rackup command. It can be used to run any PSGI application saved in a .psgi file with one of the PSGI web server backends using Plack handlers. The usage is simple: just pass a .psgi file path to the command:
> plackup hello.psgi HTTP::Server::PSGI: Accepting connections at http://0:5000/
You can actually omit the filename if you're trying to run the file named
app.psgi in the current directory.
The default backend is chosen using one of the following methods:
- If the environment variable
PLACK_SERVERis set it is used.
- If some environment specific variable like
FCGI_ROLEis set the backend for CGI or FCGI is used accordingly.
- If the loaded
.psgifile uses a specific event module like AnyEvent, Coro or POE the equivalent and most appropriate backend is chosen automatically.
- Otherwise, fallback to the default "Standalone" backend implemented in the HTTP::Server::PSGI module.
You can also specify the backend yourself from the command line using the
> plackup -s Starman hello.psgi
By default the plackup command enables three middleware components to aid development: Lint, AccessLog, and StackTrace. You can disable them with the
> plackup -E production -s Starman hello.psgi
In the case that you really want to use the
development Plack environment but want to disable the default middleware there is the
Other command line switches can be passed to the server. You can specify the server listen port with:
> plackup -s Starlet --host 127.0.0.1 --port 8080 hello.psgi Plack::Handler::Starlet: Accepting connections at http://127.0.0.1:8080/
or specify the unix domain socket the FCGI backend should listen on with:
> plackup -s FCGI --listen /tmp/fcgi.sock app.psgi
For more options for plackup, run
perldoc plackup from the command line. You'll see more plackup options and hacks tomorrow as well.