/
plackup
executable file
·181 lines (117 loc) · 4.81 KB
/
plackup
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
#!perl
use strict;
use Plack::Runner;
my $runner = Plack::Runner->new;
$runner->parse_options(@ARGV);
$runner->run;
__END__
=head1 NAME
plackup - Run PSGI application with Plack servers
=head1 SYNOPSIS
# read your app from app.psgi file
plackup
# can be passed as an ARGV[0] (or with -a option)
plackup hello.psgi
# Switch server implementation with --server (or -s)
plackup --server HTTP::Server::Simple --port 9090 --host 127.0.0.1 test.psgi
# Use UNIX socket to run FCGI daemon
plackup -s FCGI --listen /tmp/fcgi.sock myapp.psgi
# FCGI external server on port 9090
plackup -s FCGI --port 9090
=head1 DESCRIPTION
plackup is a command line utility to run PSGI application from the command line.
plackup automatically figures out the environment it is run in, and
runs your application in that environment. FastCGI, CGI, AnyEvent and
others can all be detected. See L<Plack::Loader> for the authorative
list.
C<plackup> assumes you have an C<app.psgi> script in your current
directory, that would look like:
#!/usr/bin/perl
use MyApp;
my $app = MyApp->new;
my $handler = sub { $app->run_psgi(@_) };
The last statement of C<app.psgi> should be a code reference that is a
PSGI application.
=head1 ARGUMENTS
=over 4
=item .psgi
plackup --host 127.0.0.1 --port 9090 /path/to/app.psgi
The first non-option argument is used as a C<.psgi> file path. You can
also set this path with C<-a> or C<--app> option. If omitted, the
default file path is C<app.psgi> in the current directory.
=back
=head1 OPTIONS
=over 4
=item -a, --app
C<--app> option allows you to locate a C<.psgi> script with a
different name in a different path. This can also be set as a
non-option argument. (See above)
=item -e
Evaluate the given perl code as a PSGI app, much like perl's C<-e>
option.
=item -o, --host
The interface a TCP based server daemon binds to. Defauts to undef,
which lets most server backends bind the any (*) interface. This
opeion doesn't mean anything if the server does not support TCP
socket.
=item -p, --port
The port number a TCP based server daemon listens on. Defaults to
5000. This option doesn't mean anything if the server does not support
TCP socket.
=item -s, --server
Select a specific implementation to run on using the C<PLACK_SERVER>
environment variable or use the C<-s> or C<--server> flag which will
be preferred over the environment variable if present.
=item -S, --socket
UNIX domain socket path to listen on. Defaults to undef. This option
doesn't mean anything if the server doesn't support UNIX sockets.
=item -l, --listen
Addresses to listen on. It could be "HOST:PORT", ":PORT" or "PATH"
(without colons). It could be multiple but it depends on the server
implementations whether multiple interfaces are supported.
=item -D, --daemonize
Makes the process go background. It's up to the backend server/handler
implementation whether this option is respected or not.
=item -I
Specify perl library include path, like C<perl>'s -I option.
=item -M
Specify modules to load before loading the app code.
=item -E, --env
Specify the environment option (default is C<development>). You can
set this value by setting C<PLACK_ENV> environment variable as well,
and specifying the value with the command line options writes back to
C<PLACK_ENV> as well, so applications or frameworks can tell which
environment setting the application is running on.
# These two are the same
plackup -E deployment
env PLACK_ENV=deployment plackup
The value can be anything but commonly used ones are C<development>,
C<deployment> and C<test>.
If it's set to C<development>, following middleware components are
enabled by default: I<AccessLog>, I<StackTrace> and I<Lint>.
=item -r, --reload
Make plackup to watch updates from your development directory and
restarts the server whenever a file is updated. This option by default
watches the C<lib> directory and the base directory where I<.psgi>
file is located. Use C<-R> if you want to watch other directories.
=item -R, --Reload
C<-R> option allows you to specify the path to watch file updates
separated by comma (C<,>).
plackup -R /path/to/project/lib,/path/to/project/templates
=item -L, --loader
Specify the server loading subclass that implements how to run the
server. Available options are I<Plack::Loader> (default), I<Restarter>
(automatically set when C<-r> or C<-R> is used), I<Delayed> and
I<Shotgun>.
See L<Plack::Loader::Delayed> and L<Plack::Loader::Shotgun> when to
use those loader types.
=item --access-log
Specify the pathname of a file where the access log should be written.
By default, in the development environment access logs will go to STDERR.
=back
Other options that starts with C<--> are passed through to the backend
server. See each Plack::Handler backend documentations to see which
options are available.
=head1 SEE ALSO
L<Plack::Runner> L<Plack::Loader>
=cut