977bcd6a158d2ed76d0cb8f3ed9e798d8039802b
[catagits/Catalyst-Runtime.git] / lib / Catalyst / Script / FastCGI.pm
1 package Catalyst::Script::FastCGI;
2
3 BEGIN { $ENV{CATALYST_ENGINE} ||= 'FastCGI' }
4 use Moose;
5 use MooseX::Types::Moose qw/Str Bool Int/;
6 use namespace::autoclean;
7
8 with 'Catalyst::ScriptRole';
9
10 has listen => (
11     traits        => [qw(Getopt)],
12     cmd_aliases   => 'l',
13     isa           => Str,
14     is            => 'ro',
15     documentation => 'Specify a listening port/socket',
16 );
17
18 has pidfile => (
19     traits        => [qw(Getopt)],
20     cmd_aliases   => 'pid',
21     isa           => Str,
22     is            => 'ro',
23     documentation => 'Specify a pidfile',
24 );
25
26 has daemon => (
27     traits        => [qw(Getopt)],
28     isa           => Bool,
29     is            => 'ro',
30     cmd_aliases   => 'd',
31     documentation => 'Daemonize (go into the background)',
32 );
33
34 has manager => (
35     traits        => [qw(Getopt)],
36     isa           => Str,
37     is            => 'ro',
38     cmd_aliases   => 'M',
39     documentation => 'Use a different FastCGI process manager class',
40 );
41
42 has keeperr => (
43     traits        => [qw(Getopt)],
44     cmd_aliases   => 'e',
45     isa           => Bool,
46     is            => 'ro',
47     documentation => 'Log STDERR',
48 );
49
50 has nproc => (
51     traits        => [qw(Getopt)],
52     cmd_aliases   => 'n',
53     isa           => Int,
54     is            => 'ro',
55     documentation => 'Specify a number of child processes',
56 );
57
58 has detach => (
59     traits        => [qw(Getopt)],
60     cmd_aliases   => 'det',
61     isa           => Bool,
62     is            => 'ro',
63     documentation => 'Detach this FastCGI process',
64 );
65
66 sub _application_args {
67     my ($self) = shift;
68     return (
69         $self->listen,
70         {
71             nproc   => $self->nproc,
72             pidfile => $self->pidfile,
73             manager => $self->manager,
74             detach  => $self->detach,
75             keep_stderr => $self->keeperr,
76         }
77     );
78 }
79
80 __PACKAGE__->meta->make_immutable;
81
82 =head1 NAME
83
84 Catalyst::Script::FastCGI - The FastCGI Catalyst Script
85
86 =head1 SYNOPSIS
87
88   myapp_fastcgi.pl [options]
89
90  Options:
91    -? --help      display this help and exits
92    -l --listen    Socket path to listen on
93                   (defaults to standard input)
94                   can be HOST:PORT, :PORT or a
95                   filesystem path
96    -n --nproc     specify number of processes to keep
97                   to serve requests (defaults to 1,
98                   requires -listen)
99    -p --pidfile   specify filename for pid file
100                   (requires -listen)
101    -d --daemon    daemonize (requires -listen)
102    -M --manager   specify alternate process manager
103                   (FCGI::ProcManager sub-class)
104                   or empty string to disable
105    -e --keeperr   send error messages to STDOUT, not
106                   to the webserver
107
108 =head1 DESCRIPTION
109
110 Run a Catalyst application as fastcgi.
111
112 =head1 AUTHORS
113
114 Catalyst Contributors, see Catalyst.pm
115
116 =head1 COPYRIGHT
117
118 This library is free software. You can redistribute it and/or modify it under
119 the same terms as Perl itself.
120
121 =cut