Fix headings
Tomas Doran [Sun, 7 Aug 2011 10:24:37 +0000 (11:24 +0100)]
lib/Catalyst/Manual/Deployment/Apache/FastCGI.pod
lib/Catalyst/Manual/Deployment/Apache/mod_perl.pod
lib/Catalyst/Manual/Deployment/DevelopmentServer.pod
lib/Catalyst/Manual/Deployment/IIS/FastCGI.pod
lib/Catalyst/Manual/Deployment/lighttpd/FastCGI.pod
lib/Catalyst/Manual/Deployment/nginx/FastCGI.pod

index 4640be2..63df78c 100644 (file)
@@ -161,7 +161,7 @@ Now, we simply configure Apache to connect to the running server.
 
 =head3 More Info
 
-L<Catalyst::Engine::FastCGI> - XXX FIXME.
+L<Catalyst::Manual::Deployment::FastCGI>.
 
 =head1 AUTHORS
 
index f643910..63fd96a 100644 (file)
@@ -2,26 +2,26 @@
 
 Catalyst::Manual::Deployment::Apache::mod_perl - Deploying Catalyst with mod_perl
 
-=head2 mod_perl Deployment
+=head1 mod_perl Deployment
 
 mod_perl is not the best solution for many applications, but we'll list some
 pros and cons so you can decide for yourself.
 
-=head3 Pros
+=head2 Pros
 
-=head4 Speed
+=head3 Speed
 
 mod_perl is fast and your app will be loaded in memory
 within each Apache process.
 
-=head4 Shared memory for multiple apps
+=head3 Shared memory for multiple apps
 
 If you need to run several Catalyst apps on the same server, mod_perl will
 share the memory for common modules.
 
-=head3 Cons
+=head2 Cons
 
-=head4 Memory usage
+=head3 Memory usage
 
 Since your application is fully loaded in memory, every Apache process will
 be rather large.  This means a large Apache process will be tied up while
@@ -30,7 +30,7 @@ reason, it is best to run a two-tiered web architecture with a lightweight
 frontend server passing dynamic requests to a large backend mod_perl
 server.
 
-=head4 Reloading
+=head3 Reloading
 
 Any changes made to the core code of your app require a full Apache restart.
 Catalyst does not support Apache::Reload or StatINC.  This is another good
@@ -42,7 +42,7 @@ C<ErrorDocument 502> page to report that your app is down for maintenance.
 It is not possible to run two different versions of the same application in
 the same Apache instance because the namespaces will collide.
 
-=head4 Cannot run different versions of libraries.
+=head3 Cannot run different versions of libraries.
 
 If you have two different applications which run on the same machine,
 which need two different versions of a library then the only way to do
@@ -50,19 +50,12 @@ this is to have per-vhost perl interpreters (with different library paths).
 This is entirely possible, but nullifies all the memory sharing benefits that
 you get from having multiple applications sharing the same interpreter.
 
-=head4 Setup
+=head1 Setup
 
 Now that we have that out of the way, let's talk about setting up mod_perl
 to run a Catalyst app.
 
-=head4 1. Install Catalyst::Engine::Apache
-
-You should install the latest versions of both Catalyst and
-Catalyst::Engine::Apache.  The Apache engines were separated from the
-Catalyst core in version 5.50 to allow for updates to the engine without
-requiring a new Catalyst release.
-
-=head4 2. Install Apache with mod_perl
+=head2 2. Install Apache with mod_perl
 
 Both Apache 1.3 and Apache 2 are supported, although Apache 2 is highly
 recommended.  With Apache 2, make sure you are using the prefork MPM and not
@@ -76,7 +69,7 @@ In Debian, the following commands should get you going.
     apt-get install apache2-mpm-prefork
     apt-get install libapache2-mod-perl2
 
-=head4 3. Configure your application
+=head2 3. Configure your application
 
 Every Catalyst application will automagically become a mod_perl handler
 when run within mod_perl.  This makes the configuration extremely easy.
@@ -99,14 +92,14 @@ start Apache.
 For an example Apache 1.3 configuration, please see the documentation for
 L<Catalyst::Engine::Apache::MP13>.
 
-=head3 Test It
+=head2 Test It
 
 That's it, your app is now a full-fledged mod_perl application!  Try it out
 by going to http://your.server.com/.
 
-=head3 Other Options
+=head1 Other Options
 
-=head4 Non-root location
+=head2 Non-root location
 
 You may not always want to run your app at the root of your server or virtual
 host.  In this case, it's a simple change to run at any non-root location
@@ -120,7 +113,7 @@ of your choice.
 When running this way, it is best to make use of the C<uri_for> method in
 Catalyst for constructing correct links.
 
-=head4 Static file handling
+=head2 Static file handling
 
 Static files can be served directly by Apache for a performance boost.
 
@@ -133,320 +126,8 @@ This will let all files within root/static be handled directly by Apache.  In
 a two-tiered setup, the frontend server should handle static files.
 The configuration to do this on the frontend will vary.
 
-The same is accomplished in lighttpd with the following snippet:
-
-   $HTTP["url"] !~ "^/(?:img/|static/|css/|favicon.ico$)" {
-         fastcgi.server = (
-             "" => (
-                 "MyApp" => (
-                     "socket"       => "/tmp/myapp.socket",
-                     "check-local"  => "disable",
-                 )
-             )
-         )
-    }
-
-Which serves everything in the img, static, css directories
-statically, as well as the favicon file.
-
 Note the path of the application needs to be stated explicitly in the
-web server configuration for both these recipes.
-
-=head2 Catalyst on shared hosting
-
-So, you want to put your Catalyst app out there for the whole world to
-see, but you don't want to break the bank. There is an answer - if you
-can get shared hosting with FastCGI and a shell, you can install your
-Catalyst app in a local directory on your shared host. First, run
-
-    perl -MCPAN -e shell
-
-and go through the standard CPAN configuration process. Then exit out
-without installing anything. Next, open your .bashrc and add
-
-    export PATH=$HOME/local/bin:$HOME/local/script:$PATH
-    perlversion=`perl -v | grep 'built for' | awk '{print $4}' | sed -e 's/v//;'`
-    export PERL5LIB=$HOME/local/share/perl/$perlversion:$HOME/local/lib/perl/$perlversion:$HOME/local/lib:$PERL5LIB
-
-and log out, then back in again (or run C<". .bashrc"> if you
-prefer). Finally, edit C<.cpan/CPAN/MyConfig.pm> and add
-
-    'make_install_arg' => qq[SITEPREFIX=$ENV{HOME}/local],
-    'makepl_arg' => qq[INSTALLDIRS=site install_base=$ENV{HOME}/local],
-
-Now you can install the modules you need using CPAN as normal; they
-will be installed into your local directory, and perl will pick them
-up. Finally, change directory into the root of your virtual host and
-symlink your application's script directory in:
-
-    cd path/to/mydomain.com
-    ln -s ~/lib/MyApp/script script
-
-And add the following lines to your .htaccess file (assuming the server
-is setup to handle .pl as fcgi - you may need to rename the script to
-myapp_fastcgi.fcgi and/or use a SetHandler directive):
-
-  RewriteEngine On
-  RewriteCond %{REQUEST_URI} !^/?script/myapp_fastcgi.pl
-  RewriteRule ^(.*)$ script/myapp_fastcgi.pl/$1 [PT,L]
-
-Now C<http://mydomain.com/> should now Just Work. Congratulations, now
-you can tell your friends about your new website (or in our case, tell
-the client it's time to pay the invoice :) )
-
-=head2 FastCGI Deployment
-
-FastCGI is a high-performance extension to CGI. It is suitable
-for production environments.
-
-=head3 Pros
-
-=head4 Speed
-
-FastCGI performs equally as well as mod_perl.  Don't let the 'CGI' fool you;
-your app runs as multiple persistent processes ready to receive connections
-from the web server.
-
-=head4 App Server
-
-When using external FastCGI servers, your application runs as a standalone
-application server.  It may be restarted independently from the web server.
-This allows for a more robust environment and faster reload times when
-pushing new app changes.  The frontend server can even be configured to
-display a friendly "down for maintenance" page while the application is
-restarting.
-
-=head4 Load-balancing
-
-You can launch your application on multiple backend servers and allow the
-frontend web server to load-balance between all of them.  And of course, if
-one goes down, your app continues to run fine.
-
-=head4 Multiple versions of the same app
-
-Each FastCGI application is a separate process, so you can run different
-versions of the same app on a single server.
-
-=head4 Can run with threaded Apache
-
-Since your app is not running inside of Apache, the faster mpm_worker module
-can be used without worrying about the thread safety of your application.
-
-=head3 Cons
-
-You may have to disable mod_deflate.  If you experience page hangs with
-mod_fastcgi then remove deflate.load and deflate.conf from mods-enabled/
-
-=head4 More complex environment
-
-With FastCGI, there are more things to monitor and more processes running
-than when using mod_perl.
-
-=head3 Setup
-
-=head4 1. Install Apache with mod_fastcgi
-
-mod_fastcgi for Apache is a third party module, and can be found at
-L<http://www.fastcgi.com/>.  It is also packaged in many distributions,
-for example, libapache2-mod-fastcgi in Debian. You will also need to install
-the L<FCGI> module from cpan.
-
-Important Note! If you experience difficulty properly rendering pages,
-try disabling Apache's mod_deflate (Deflate Module), e.g. 'a2dismod deflate'.
-
-=head4 2. Configure your application
-
-    # Serve static content directly
-    DocumentRoot  /var/www/MyApp/root
-    Alias /static /var/www/MyApp/root/static
-
-    FastCgiServer /var/www/MyApp/script/myapp_fastcgi.pl -processes 3
-    Alias /myapp/ /var/www/MyApp/script/myapp_fastcgi.pl/
-
-    # Or, run at the root
-    Alias / /var/www/MyApp/script/myapp_fastcgi.pl/
-
-The above commands will launch 3 app processes and make the app available at
-/myapp/
-
-=head3 Standalone server mode
-
-While not as easy as the previous method, running your app as an external
-server gives you much more flexibility.
-
-First, launch your app as a standalone server listening on a socket.
-
-    script/myapp_fastcgi.pl -l /tmp/myapp.socket -n 5 -p /tmp/myapp.pid -d
-
-You can also listen on a TCP port if your web server is not on the same
-machine.
-
-    script/myapp_fastcgi.pl -l :8080 -n 5 -p /tmp/myapp.pid -d
-
-You will probably want to write an init script to handle starting/stopping
-of the app using the pid file.
-
-Now, we simply configure Apache to connect to the running server.
-
-    # 502 is a Bad Gateway error, and will occur if the backend server is down
-    # This allows us to display a friendly static page that says "down for
-    # maintenance"
-    Alias /_errors /var/www/MyApp/root/error-pages
-    ErrorDocument 502 /_errors/502.html
-
-    FastCgiExternalServer /tmp/myapp.fcgi -socket /tmp/myapp.socket
-    Alias /myapp/ /tmp/myapp.fcgi/
-
-    # Or, run at the root
-    Alias / /tmp/myapp.fcgi/
-
-=head3 More Info
-
-L<Catalyst::Engine::FastCGI>.
-
-=head2 Development server deployment
-
-The development server is a mini web server written in perl.  If you
-expect a low number of hits or you don't need mod_perl/FastCGI speed,
-you could use the development server as the application server with a
-lightweight proxy web server at the front.  However, consider using
-L<Catalyst::Engine::HTTP::Prefork> for this kind of deployment instead, since
-it can better handle multiple concurrent requests without forking, or can
-prefork a set number of servers for improved performance.
-
-=head3 Pros
-
-As this is an application server setup, the pros are the same as
-FastCGI (with the exception of speed).
-It is also:
-
-=head4 Simple
-
-The development server is what you create your code on, so if it works
-here, it should work in production!
-
-=head3 Cons
-
-=head4 Speed
-
-Not as fast as mod_perl or FastCGI. Needs to fork for each request
-that comes in - make sure static files are served by the web server to
-save forking.
-
-=head3 Setup
-
-=head4 Start up the development server
-
-   script/myapp_server.pl -p 8080 -k  -f -pidfile=/tmp/myapp.pid
-
-You will probably want to write an init script to handle stop/starting
-the app using the pid file.
-
-=head4 Configuring Apache
-
-Make sure mod_proxy is enabled and add:
-
-    # Serve static content directly
-    DocumentRoot /var/www/MyApp/root
-    Alias /static /var/www/MyApp/root/static
-
-    ProxyRequests Off
-    <Proxy *>
-        Order deny,allow
-        Allow from all
-    </Proxy>
-
-    # Need to specifically stop these paths from being passed to proxy
-    ProxyPass /static !
-    ProxyPass /favicon.ico !
-
-    ProxyPass / http://localhost:8080/
-    ProxyPassReverse / http://localhost:8080/
-
-    # This is optional if you'd like to show a custom error page
-    # if the proxy is not available
-    ErrorDocument 502 /static/error_pages/http502.html
-
-You can wrap the above within a VirtualHost container if you want
-different apps served on the same host.
-
-    # Set up your Catalyst app as a mod_perl 2.x application in httpd.conf
-    PerlSwitches -I/var/www/MyApp/lib
-
-    # Preload your entire application
-    PerlModule MyApp
-
-    <VirtualHost *>
-        ServerName    myapp.hostname.com
-        DocumentRoot  /var/www/MyApp/root
-
-        <Location />
-            SetHandler          modperl
-            PerlResponseHandler MyApp
-        </Location>
-
-        # you can also run your app in any non-root location
-        <Location /some/other/path>
-            SetHandler          perl-script
-            PerlResponseHandler MyApp
-        </Location>
-
-        # Make sure to let Apache handle your static files
-        # (It is not necessary to remove the Static::Simple plugin
-        # in production; Apache will bypass Static::Simple if
-        # configured in this way)
-
-        <Location /static>
-            SetHandler          default-handler
-        </Location>
-
-        # If not running at a root location in a VirtualHost,
-        # you'll probably need to set an Alias to the location
-        # of your static files, and allow access to this location:
-
-        Alias /myapp/static /filesystem/path/to/MyApp/root/static
-        <Directory /filesystem/path/to/MyApp/root/static>
-            allow from all
-        </Directory>
-        <Location /myapp/static>
-            SetHandler default-handler
-        </Location>
-
-    </VirtualHost>
-
-=head1 DESCRIPTION
-
-This is the Catalyst engine specialized for Apache2 mod_perl version 2.x.
-
-=head1 ModPerl::Registry
-
-While this method is not recommended, you can also run your Catalyst
-application via a ModPerl::Registry script.
-
-httpd.conf:
-
-    PerlModule ModPerl::Registry
-    Alias / /var/www/MyApp/script/myapp_registry.pl/
-
-    <Directory /var/www/MyApp/script>
-        Options +ExecCGI
-    </Directory>
-
-    <Location />
-        SetHandler          perl-script
-        PerlResponseHandler ModPerl::Registry
-    </Location>
-
-script/myapp_registry.pl (you will need to create this):
-
-    #!/usr/bin/perl
-
-    use strict;
-    use warnings;
-    use MyApp;
-
-    MyApp->handle_request( Apache2::RequestUtil->request );
-
+web server configuration for this recipes.
 
 =head1 AUTHORS
 
index 4447206..86d22ab 100644 (file)
@@ -3,16 +3,11 @@
 The development server is a mini web server written in perl.  If you
 expect a low number of hits or you don't need mod_perl/FastCGI speed,
 you could use the development server as the application server with a
-lightweight proxy web server at the front.  However, consider using
-L<Catalyst::Engine::HTTP::Prefork> for this kind of deployment instead, since
-it can better handle multiple concurrent requests without forking, or can
-prefork a set number of servers for improved performance.
+lightweight proxy web server at the front.
 
-=head3 Pros
+XXX - FIXME Starman!
 
-As this is an application server setup, the pros are the same as
-FastCGI (with the exception of speed).
-It is also:
+=head3 Pros
 
 =head4 Simple
 
@@ -31,7 +26,7 @@ save forking.
 
 =head4 Start up the development server
 
-   script/myapp_server.pl -p 8080 -k  -f -pidfile=/tmp/myapp.pid
+   script/myapp_server.pl -p 8080 -k -f -pidfile=/tmp/myapp.pid
 
 You will probably want to write an init script to handle stop/starting
 the app using the pid file.
index 91b9b09..39f71b7 100644 (file)
@@ -2,7 +2,7 @@
 
 Catalyst::Manual::Deployment::IIS::FastCGI - Deploying Catalyst with Microsoft IIS
 
-=head2 Microsoft IIS
+=head1 Microsoft IIS
 
 It is possible to run Catalyst under IIS with FastCGI, but only on IIS 6.0
 (Microsoft Windows 2003), IIS 7.0 (Microsoft Windows 2008 and Vista) and
@@ -18,9 +18,9 @@ Let us assume that our server has the following layout:
     d:\strawberry\perl\bin\perl.exe  path to perl interpreter (with Catalyst installed)
     c:\windows                       Windows directory
 
-=head3 Setup IIS 6.0 (Windows 2003)
+=head2 Setup IIS 6.0 (Windows 2003)
 
-=over 4
+=over
 
 =item Install FastCGI extension for IIS 6.0
 
@@ -86,12 +86,12 @@ system c:\windows\syswow64\inetsrv\fcgiext.ini):
 
 =back
 
-=head3 Setup IIS 7.0 (Windows 2008 and Vista)
+=head2 Setup IIS 7.0 (Windows 2008 and Vista)
 
 Microsoft IIS 7.0 has built-in support for FastCGI so you do not have to install
 any addons.
 
-=over 4
+=over
 
 =item Necessary steps during IIS7 installation
 
@@ -114,7 +114,7 @@ Open "Control Panel" > "Administrative Tools" > "Internet Information Services M
 You can configure FastCGI extension using commandline utility
 "c:\windows\system32\inetsrv\appcmd.exe"
 
-=over 4
+=over
 
 =item Configuring section "fastCgi" (it is a global setting)
 
index a9ba089..92e7f3c 100644 (file)
@@ -2,11 +2,11 @@
 
 Catalyst::Manual::Deployment::lighttpd::FastCGI - Deploying Catalyst with lighttpd
 
-=head2 Lighttpd
+=head1 Lighttpd
 
 These configurations were tested with Lighttpd 1.4.7.
 
-=head3 Standalone server mode
+=head2 Standalone server mode
 
     server.document-root = "/var/www/MyApp/root"
 
@@ -19,7 +19,7 @@ These configurations were tested with Lighttpd 1.4.7.
         )
     )
 
-=head3 Static mode
+=head2 Static mode
 
     server.document-root = "/var/www/MyApp/root"
 
@@ -39,7 +39,7 @@ These configurations were tested with Lighttpd 1.4.7.
 Note that in newer versions of lighttpd, the min-procs and idle-timeout
 values are disabled.  The above example would start 5 processes.
 
-=head3 Non-root configuration
+=head2 Non-root configuration
 
 You can also run your application at any non-root location with either of the
 above modes.  Note the required mod_rewrite rule.
@@ -57,7 +57,7 @@ For more information on using FastCGI under Lighttpd, visit
 L<http://www.lighttpd.net/documentation/fastcgi.html>
 
 
-=head4 Static file handling
+=head2 Static file handling
 
 Static files can be served directly by lighttpd for a performance boost.
 
index 0987b46..7a93ab3 100644 (file)
@@ -2,7 +2,7 @@
 
 Catalyst::Manual::Deployment::nginx::FastCGI - Deploying Catalyst with nginx
 
-=head nginx
+=head1 nginx
 
 Catalyst runs under nginx via FastCGI in a similar fashion as the lighttpd
 standalone server as described above.
@@ -10,7 +10,7 @@ standalone server as described above.
 nginx does not have its own internal FastCGI process manager, so you must run
 the FastCGI service separately.
 
-=head3 Configuration
+=head2 Configuration
 
 To configure nginx, you must configure the FastCGI parameters and also the
 socket your FastCGI daemon is listening on.  It can be either a TCP socket
@@ -52,7 +52,7 @@ It is the standard convention of nginx to include the fastcgi_params in a
 separate file (usually something like C</etc/nginx/fastcgi_params>) and
 simply include that file.
 
-=head3  Non-root configuration
+=head2  Non-root configuration
 
 If you properly specify the PATH_INFO and SCRIPT_NAME parameters your
 application will be accessible at any path. The SCRIPT_NAME variable is the