man Catalyst::Engine::FastCGI () - FastCGI Engine

NAME

Catalyst::Engine::FastCGI - FastCGI Engine

DESCRIPTION

This is the FastCGI engine.

OVERLOADED METHODS

This class overloads some methods from CWCatalyst::Engine::CGI. Starts the FastCGI server. If CW$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->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

Catalyst, FCGI.

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.