X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FManual%2FDeployment%2FApache%2FFastCGI.pod;h=ceeeddf9094cc9fd5d6b27d1e0cf6572982b2ad7;hb=512ec6d005f882e9f4502be3bfc9db2be2e7e1fd;hp=a53af03bf9bdbc7df0307aac3114002f699f51fb;hpb=1d2376f30da280120d06a3579eef74d9b0770f20;p=catagits%2FCatalyst-Manual.git diff --git a/lib/Catalyst/Manual/Deployment/Apache/FastCGI.pod b/lib/Catalyst/Manual/Deployment/Apache/FastCGI.pod index a53af03..ceeeddf 100644 --- a/lib/Catalyst/Manual/Deployment/Apache/FastCGI.pod +++ b/lib/Catalyst/Manual/Deployment/Apache/FastCGI.pod @@ -6,14 +6,113 @@ Catalyst::Manual::Deployment::Apache::FastCGI - Deploying Catalyst with FastCGI =head3 1. Install Apache with mod_fastcgi -mod_fastcgi for Apache is a third party module, and can be found at -L. It is also packaged in many distributions, -for example, libapache2-mod-fastcgi in Debian. You will also need to install -the L module from cpan. +mod_fastcgi for Apache is a third-party module, and can be found at +L. It is also packaged in many distributions +(for example, libapache2-mod-fastcgi in Debian). You will also need to +install the L module from CPAN. Important Note! If you experience difficulty properly rendering pages, try disabling Apache's mod_deflate (Deflate Module), e.g. 'a2dismod deflate'. +=head2 Apache 1.x, 2.x + +Apache requires the mod_fastcgi module. The same module supports both +Apache 1 and 2. + +There are three ways to run your application under FastCGI on Apache: server, +static, and dynamic. + +=head3 Standalone server mode + + FastCgiExternalServer /tmp/myapp.fcgi -socket /tmp/myapp.socket + Alias /myapp/ /tmp/myapp.fcgi/ + + # Or, run at the root + Alias / /tmp/myapp.fcgi/ + + # Optionally, rewrite the path when accessed without a trailing slash + RewriteRule ^/myapp$ myapp/ [R] + + +The FastCgiExternalServer directive tells Apache that when serving +/tmp/myapp to use the FastCGI application listening on the socket +/tmp/mapp.socket. Note that /tmp/myapp.fcgi B exist -- +it's a virtual file name. With some versions of C or +C, you can use any name you like, but some require that the +virtual filename end in C<.fcgi>. + +It's likely that Apache is not configured to serve files in /tmp, so the +Alias directive maps the url path /myapp/ to the (virtual) file that runs the +FastCGI application. The trailing slashes are important as their use will +correctly set the PATH_INFO environment variable used by Catalyst to +determine the request path. If you would like to be able to access your app +without a trailing slash (http://server/myapp), you can use the above +RewriteRule directive. + +=head3 Static mode + +The term 'static' is misleading, but in static mode Apache uses its own +FastCGI Process Manager to start the application processes. This happens at +Apache startup time. In this case you do not run your application's +fastcgi.pl script -- that is done by Apache. Apache then maps URIs to the +FastCGI script to run your application. + + FastCgiServer /path/to/myapp/script/myapp_fastcgi.pl -processes 3 + Alias /myapp/ /path/to/myapp/script/myapp_fastcgi.pl/ + +FastCgiServer tells Apache to start three processes of your application at +startup. The Alias command maps a path to the FastCGI application. Again, +the trailing slashes are important. + +=head3 Dynamic mode + +In FastCGI dynamic mode, Apache will run your application on demand, +typically by requesting a file with a specific extension (e.g. .fcgi). ISPs +often use this type of setup to provide FastCGI support to many customers. + +In this mode it is often enough to place or link your *_fastcgi.pl script in +your cgi-bin directory with the extension of .fcgi. In dynamic mode Apache +must be able to run your application as a CGI script so ExecCGI must be +enabled for the directory. + + AddHandler fastcgi-script .fcgi + +The above tells Apache to run any .fcgi file as a FastCGI application. + +Here is a complete example: + + + ServerName www.myapp.com + DocumentRoot /path/to/MyApp + + # Allow CGI script to run + + Options +ExecCGI + + + # Tell Apache this is a FastCGI application + + SetHandler fastcgi-script + + + +Then a request for /script/myapp_fastcgi.pl will run the +application. + +For more information on using FastCGI under Apache, visit +L + +=head3 Authorization header with mod_fastcgi or mod_cgi + +By default, mod_fastcgi/mod_cgi do not pass along the Authorization header, +so modules like C will +not work. To enable pass-through of this header, add the following +mod_rewrite directives: + + RewriteCond %{HTTP:Authorization} ^(.+) + RewriteRule ^(.*)$ $1 [E=HTTP_AUTHORIZATION:%1,PT] + + =head4 2. Configure your application # Serve static content directly @@ -62,7 +161,7 @@ Now, we simply configure Apache to connect to the running server. =head3 More Info -L - XXX FIXME. +L. =head1 AUTHORS