Could you, please, put this configuration and script on mason wiki at
http://www.masonhq.com.
Thanks!
Hyartep
On 11/17/06, Jorge Valdes <joval@...> wrote:
> Gareth Kirwan wrote:
> >> Recently I started using Lighttpd (http://www.lighttpd.net) to serve
> >> FASTCGI applications, and was surprised to know that the Mason engine
> >> can also be placed inside a FASTCGI wrapper and served with this web
> >> server. Previously I had an old install using Apache 1.3.27, which I
> >> converted to Lighttpd 1.4.13 and have seen speed improvements of up to
> >> 400% when generating dynamic content.
> >
> > I've been tempted to play with lighttpd before, but haven't got around to it
> > yet.
> > What do you use in place of $r, and how is your mason handler set up?
> >
> > G
> >
> >
>
> I basically followed suggestions on the Lighttpd wiki, but here is my
> config:
>
> ...
> static-file.exclude-extensions += ( ".fcgi" )
> fastcgi.map-extensions = (
> "/" => ".html"
> ,"autohandler" => ".html"
> ,"dhandler" => ".html"
> )
> fastcgi.server = (
> ".html" =>
> ((
> "socket" => "/tmp/mason.sock",
> "bin-path" => "/usr/local/supervise/lighttpd/mason.fcgi",
> "check-local" => "disable",
> "max-procs" => 3
> ))
> )
> ...
>
> Please note that in my case, because I have limited RAM on the server, I
> only start 3 fastcgi instances, but if you need to, you could setup as
> many as your setup will allow (the default is 4 if you skip the
> "max-procs" directive.
>
> Here is the handler (mason.fcgi):
>
> >>>BEGIN>>>
> #!/usr/local/bin/perl
>
> #vim: et ts=4 sw=4
>
> use strict;
>
> use HTML::Mason::CGIHandler;
>
> use CGI::Fast;
>
>
> {
>
> package HTML::Mason::Commands;
> # anything you want available to components
> use DBI;
> use lib qw(
> /usr/local/rrdtool/lib/perl
> /usr/local/mrtg-2/lib/mrtg2
> );
> use RRDs;
> use MRTG_lib "2.090017";
> }
>
> # lazily-instantiated variables
> my $cgi;
> my $h;
>
> $ENV{MASON_COMP_ROOT} = '/home/mrtg/site';
> $ENV{MASON_DATA_ROOT} = '/home/mrtg/mason-prod';
>
> while ($cgi = new CGI::Fast) {
>
> # this seems to be necessary as lighttpd does not provide the
> # PATH_INFO and the QUERY_STRING environment variables
> # Note that the below seems to work but I have no idea if it's
> # the 'right' way to parse the REQUEST_URI out into
> # PATH_INFO and QUERY_STRING
> my $uri = $ENV{REQUEST_URI};
> if ($uri =~ /\?/) {
> $uri =~ /^(.*?)\?(.*)/;
> $ENV{PATH_INFO} = $1;
> $ENV{QUERY_STRING} = $2;
> } else {
> $ENV{PATH_INFO} = $uri;
> $ENV{QUERY_STRING} = "";
> }
>
> # this is lazily instantiated because %ENV is not set at startup time
> if (! $h) {
> $h = HTML::Mason::CGIHandler->new(
> comp_root => $ENV{MASON_COMP_ROOT},
> data_dir => $ENV{MASON_DATA_ROOT},
> error_format => 'html',
> allow_globals => [ qw($dbh %Users) ]
> );
> }
>
> # hand off to mason
> eval { $h->handle_cgi_object($cgi) };
> if (my $raw_error = $@) {
> # print out a pretty system error page and log $raw_error
> print $raw_error;
> exit;
> }
> }
>
> exit 0;
> <<<END<<<
>
> Jorge
|