NAME
Cro::FCGI
FastCGI support for Cro
Synopsis
Using a network connection
use Cro::FCGI::Server;
my $service = Cro::FCGI::Server.new(
host => '127.0.0.1',
port => 43210,
application => MyCroApp
);
$service.start;
Webserver config (Apache here):
Listen 43210
<VirtualHost 127.0.0.1:43210>
ProxyFCGIBackendType GENERIC
ProxyPass "/" "fcgi://127.0.0.1:43211/" enablereuse=on
</VirtualHost>
Using a Unix socket
use Cro::FCGI::Server;
my $service = Cro::FCGI::Server.new(
socket-path => '/run/cro-fcgi/my-cro-app.sock',
application => MyCroApp
);
$service.start;
Webserver config (Apache here):
Listen 43210
<VirtualHost 127.0.0.1:43210>
ProxyFCGIBackendType GENERIC
ProxyPass "/" "unix:/run/cro-fcgi/my-cro-app.sock|fcgi://127.0.0.1/" enablereuse=on
</VirtualHost>
Description
This module provides a FastCGI frontend for Cro. It allows a simple coupling of a webserver and Cro application.
The module provides a drop-in replacement for Cro::HTTP::Server
named Cro::FCGI::Server
. It can be instantiated for either a network connetion or a Unix socket connection.
To start listening on a network port pass the host
and port
arguments.
To start listening on a Unix socket, pass the socket-path
argument. Make sure the socket is readable and writable by the webserver process. Note that SELinux can possibly block access to the socket file for the webserver.
Server and client host and port
To access the remote and local host and port of the connection of a given request, use the .socket-host
, .socket-port
, .peer-host
and .peer-port
methods of the request object, not the equally named methods of the Cro::Connection
object ($request.connection.*
). With FCGI, the connection represents the connection to the webserver, not the client!
Limitations
Currently starting the application process automatically is not supported. You have to start the Cro application separately. For Apache this means you should use mod_proxy_fcgi
instead of mod_fcgid
.
AUTHOR
Patrick Böker patrick.boeker@posteo.de
License
This module is distributed under the terms of the Artistic License 2.0.