NAME
Catalyst::Engine::FastCGI - FastCGI Engine
DESCRIPTION
This is the FastCGI engine.
OVERLOADED METHODS
This class overloads some methods from Catalyst::Engine::CGI
.
$self->run($c, $listen, { option => value, ... })
Starts the FastCGI server. If $listen
is set, then it specifies a location to listen for FastCGI requests;
Form Meaning
/path listen via Unix sockets on /path
:port listen via TCP on port on all interfaces
hostname:port listen via TCP on port bound to hostname
Options may also be specified;
Option Meaning
leave_umask Set to 1 to disable setting umask to 0
for socket open
nointr Do not allow the listener to be
interrupted by Ctrl+C
nproc Specify a number of processes for
FCGI::ProcManager
pidfile Specify a filename for the pid file
manager Specify a FCGI::ProcManager sub-class
detach Detach from console
$self->write($c, $buffer)
$self->daemon_fork()
Performs the first part of daemon initialisation. Specifically, forking. STDERR, etc are still connected to a terminal.
$self->daemon_detach( )
Performs the second part of daemon initialisation. Specifically, disassociates from the terminal.
However, this does not change the current working directory to "/", as normal daemons do. It also does not close all open file descriptors (except STDIN, STDOUT and STDERR, which are re-opened from /dev/null).
WEB SERVER CONFIGURATIONS
Apache 1.x, 2.x
Apache requires the mod_fastcgi module. The following config will let Apache control the running of your FastCGI processes.
# Launch the FastCGI processes
FastCgiIpcDir /tmp
FastCgiServer /var/www/MyApp/script/myapp_fastcgi.pl -idle-timeout 300 -processes 5
<VirtualHost *>
ScriptAlias / /var/www/MyApp/script/myapp_fastcgi.pl/
</VirtualHost>
You can also tell Apache to connect to an external FastCGI server:
# Start the external server (requires FCGI::ProcManager)
$ script/myapp_fastcgi.pl -l /tmp/myapp.socket -n 5
# Note that the path used in FastCgiExternalServer can be any path
FastCgiIpcDir /tmp
FastCgiExternalServer /tmp/myapp_fastcgi.pl -socket /tmp/myapp.socket
<VirtualHost *>
ScriptAlias / /tmp/myapp_fastcgi.pl/
</VirtualHost>
For more information on using FastCGI under Apache, visit http://www.fastcgi.com/mod_fastcgi/docs/mod_fastcgi.html
Lighttpd
This configuration was tested with Lighttpd 1.4.7.
server.document-root = "/var/www/MyApp/root"
fastcgi.server = (
"" => (
"MyApp" => (
"socket" => "/tmp/myapp.socket",
"check-local" => "disable",
"bin-path" => "/var/www/MyApp/script/myapp_fastcgi.pl",
"min-procs" => 2,
"max-procs" => 5,
"idle-timeout" => 20
)
)
)
You can also run your application at any non-root location.
fastcgi.server = (
"/myapp" => (
"MyApp" => (
# same as above
)
)
)
You can also use an external server:
# Start the external server (requires FCGI::ProcManager)
$ script/myapp_fastcgi.pl -l /tmp/myapp.socket -n 5
server.document-root = "/var/www/MyApp/root"
fastcgi.server = (
"" => (
"MyApp" => (
"socket" => "/tmp/myapp.socket",
"check-local" => "disable"
)
)
)
For more information on using FastCGI under Lighttpd, visit http://www.lighttpd.net/documentation/fastcgi.html
IIS
It is possible to run Catalyst under IIS with FastCGI, but we do not yet have detailed instructions.
SEE ALSO
AUTHORS
Sebastian Riedel, <sri@cpan.org>
Christian Hansen, <ch@ngmedia.com>
Andy Grundman, <andy@hybridized.org>
COPYRIGHT
This program is free software, you can redistribute it and/or modify it under the same terms as Perl itself.