stas 02/04/25 18:43:11 Modified: src/start/tips config.pod favicon.pod handler.pod logging.pod registry.pod Log: apply styles, indentation and markup as explained in admin/style.pod Revision Changes Path 1.2 +26 -24 modperl-docs/src/start/tips/config.pod Index: config.pod =================================================================== RCS file: /home/cvs/modperl-docs/src/start/tips/config.pod,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- config.pod 25 Apr 2002 07:01:02 -0000 1.1 +++ config.pod 26 Apr 2002 01:43:11 -0000 1.2 @@ -4,34 +4,36 @@ =head1 Configure virtual hosts -With mod_perl, Perl code can be embedded directly in the Apache configuration file. -Perl in httpd.conf is commonly used to dynamically configure Apache, but anything from -URL translation to content generation can be accomplished directly in the configuation file. +With mod_perl, Perl code can be embedded directly in the Apache +configuration file. Perl in httpd.conf is commonly used to +dynamically configure Apache, but anything from URL translation to +content generation can be accomplished directly in the configuation +file. -This example reads configuration settings from a text file and configures Apache's -virtual hosts. +This example reads configuration settings from a text file and +configures Apache's virtual hosts. -The httpd.conf setup: +The I<httpd.conf> setup: - NameVirtualHost 192.168.0.1:80 - <Perl> - open(HOSTS,'/etc/apache/vhosts.txt') - or die "Failed to open vhosts.txt: $!"; - - while (<HOSTS>) { - my %config; - my @params = qw/ServerName DocumentRoot ErrorLog TransferLog ServerAdmin/; - @config{ @params } = split /\t/; - $config{Directory}{$config{DocumentRoot}} = { Allow => 'from all'}; - - push @{$VirtualHost{'192.168.0.1:80'}}, \%config; - } - close HOSTS; - - </Perl> + NameVirtualHost 192.168.0.1:80 + <Perl> + open HOSTS, '/etc/apache/vhosts.txt' + or die "Failed to open vhosts.txt: $!"; + + while (<HOSTS>) { + my %config; + my @params = qw/ServerName DocumentRoot ErrorLog TransferLog ServerAdmin/; + @config{ @params } = split /\t/; + $config{ Directory }{ $config{DocumentRoot} } = { Allow => 'from all' }; + + push @{ $VirtualHost{'192.168.0.1:80'} }, \%config; + } + close HOSTS; + + </Perl> -See L<The Guide|guide::config/Apache_Configuration_in_Perl> -for other examples of configuring Apache with mod_perl. +See L<The Guide|guide::config/Apache_Configuration_in_Perl> for other +examples of configuring Apache with mod_perl. =for html <a class="more" href="../index.html#config">« back</a> 1.2 +28 -24 modperl-docs/src/start/tips/favicon.pod Index: favicon.pod =================================================================== RCS file: /home/cvs/modperl-docs/src/start/tips/favicon.pod,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- favicon.pod 25 Apr 2002 07:01:02 -0000 1.1 +++ favicon.pod 26 Apr 2002 01:43:11 -0000 1.2 @@ -4,35 +4,39 @@ =head1 Using mod_perl to rewrite URLs -Anyone that's looked at web logs will quickly see the usefulness of this little -mod_perl script. It catches all requests for favicon.ico and rewrites the request -to point to a vaild location. No more logs full of 404 errors. +Anyone that's looked at web logs will quickly see the usefulness of +this little mod_perl script. It catches all requests for +I<favicon.ico> and rewrites the request to point to a vaild location. +No more logs full of 404 errors. + +This example is adapted from the L<mod_perl Devekioer's +Cookbook|http://modperlcookbook.com>, chapter 12. + + file:Cookbook/Favicon.pm + ------------------------ + package Cookbook::Favicon; + + use Apache::Constants qw(DECLINED); + use strict; + + sub handler { + my $r = shift; + + $r->uri('/images/favicon.ico') + if $r->uri =~ m!/favicon\.ico$! + + return DECLINED; + } + 1; -This example is adapted from the L<mod_perl Devekioer's Cookbook|http://modperlcookbook.com>, chapter 12. - - package Cookbook::Favicon; - - use Apache::Constants qw(DECLINED); - use strict; - - sub handler { - my $r = shift; - - $r->uri('/images/favicon.ico') - if $r->uri =~ m!/favicon\.ico$! - - return DECLINED; - } - 1; - -And configure in F<httpd.conf> with: +And configure in I<httpd.conf> with: PerlModule Cookbook::Favicon PerlTransHandler Cookbook::Favicon -Although this example could easily be accomplished with Apache's mod_rewrite module, -this example demonstrates how easy it is to rewrite URLs programatically, using the -power of Perl. +Although this example could easily be accomplished with Apache's +mod_rewrite module, this example demonstrates how easy it is to +rewrite URLs programatically, using the power of Perl. =for html <a class="more" href="../index.html#handler">« back</a> 1.3 +39 -33 modperl-docs/src/start/tips/handler.pod Index: handler.pod =================================================================== RCS file: /home/cvs/modperl-docs/src/start/tips/handler.pod,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- handler.pod 25 Apr 2002 21:45:19 -0000 1.2 +++ handler.pod 26 Apr 2002 01:43:11 -0000 1.3 @@ -4,43 +4,49 @@ =head1 Creating a content handler with mod_perl 1.x -Handlers are simply perl subroutines called by the server at various stages of the HTTP request cycle. -A content handler is a subroutine that is called by the response phase. Handlers, are -typically created as a perl modules, separate files store in a library, and accessable via perl's @INC array. +Handlers are simply perl subroutines called by the server at various +stages of the HTTP request cycle. A content handler is a subroutine +that is called by the response phase. Handlers, are typically created +as a perl modules, separate files store in a library, and accessable +via perl's C<@INC> array. + +For example, here's an example that returns a greeting and the current +local time. + + file:My/Greeting.pm + ------------------- + package My::Greeting; + use strict; + + sub handler { + my $r = shift; + my $now = scalar localtime; + my $server_name = $r->server->server_hostname; + + $r->send_http_header('text/plain'); + + print <<EOT; + Thanks for visiting $server_name. + The local time is $now. + EOT + + return Apache::Constants::OK; + } + 1; # modules must return true -For example, here's an example that returns a greeting and the current local time. - package My::Greeting; - use strict; - - sub handler { - my $r = shift; - my $now = scalar localtime; - my $server_name = $r->server->server_hostname; - - $r->send_http_header('text/plain'); - - print <<EOT; - Thanks for visiting $server_name. - The local time is $now - EOT - return Apache::Constants::OK; - } - 1; # modules must return true - - -Save the above as a file file in your perl library (e.g. My/Greeting.pm). -Now, to return the above greeting when the URL /hello is visited on your server: - - <location /hello> - SetHandler perl-script - PerlHandler My::Greeting - </location> +Save the above as a file file in your perl library +(e.g. I<My/Greeting.pm>a). Now, to return the above greeting when the +URL I</hello> is visited on your server: + + <location /hello> + SetHandler perl-script + PerlHandler My::Greeting + </location> For a more in-depth explanation of creating mod_perl handlers see -L<Documentation|"../../docs/index.html">. -The L<mod_perl Guide|"../../docs/1.0/guide/index.html"> is also recommended -reading. +L<Documentation|"../../docs/index.html">. The L<mod_perl +Guide|"../../docs/1.0/guide/index.html"> is also recommended reading. =for html <a class="more" href="../index.html#handler">« back</a> 1.2 +41 -38 modperl-docs/src/start/tips/logging.pod Index: logging.pod =================================================================== RCS file: /home/cvs/modperl-docs/src/start/tips/logging.pod,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- logging.pod 25 Apr 2002 07:01:02 -0000 1.1 +++ logging.pod 26 Apr 2002 01:43:11 -0000 1.2 @@ -4,44 +4,47 @@ =head1 Creating a PerlLogHandler -Every request phase can be controlled using mod_perl. Here's an example -of a PerlLogHandler. The PerlLogHandler is one of the last phases of the request -cycle. - -This example sends mail when a request is made to the /private section of your -web space. A more common use of a PerlLogHandler might be to track hits on a -specific set of URLs, or to write logging data to a relational database. - - package My::Notify; - use strict; - use Apache::Constants(':common'); - - use Mail::Send; - - sub handler { - my $r = shift; - - my $email = $r->server->server_admin || return DECLINED; - - my $mail = Mail::Send->new( - To => $email, - Subject => "mod_perl Notification", - ); - my $file = $r->filename; - my $fh = $mail->open; - $fh->print("File '$file' was accessed"); - $fh->close; - - return DECLINED; # let apache write to the lot - } - 1; # modules must return true - -The httpd.conf setup: - - <location /private> - SetHandler perl-script - PerlLogHandler My::Notify - </location> +Every request phase can be controlled using mod_perl. Here's an +example of a C<PerlLogHandler>. The C<PerlLogHandler> is one of the +last phases of the request cycle. + +This example sends mail when a request is made to the /private section +of your web space. A more common use of a C<PerlLogHandler> might be +to track hits on a specific set of URLs, or to write logging data to a +relational database. + + file:My/Notify.pm + ------------------------ + package My::Notify; + use strict; + use Apache::Constants(':common'); + + use Mail::Send; + + sub handler { + my $r = shift; + + my $email = $r->server->server_admin || return DECLINED; + + my $mail = Mail::Send->new( + To => $email, + Subject => "mod_perl Notification", + ); + my $file = $r->filename; + my $fh = $mail->open; + $fh->print("File '$file' was accessed"); + $fh->close; + + return DECLINED; # let apache write to the lot + } + 1; # modules must return true + +The I<httpd.conf> setup: + + <location /private> + SetHandler perl-script + PerlLogHandler My::Notify + </location> =for html <a class="more" href="../index.html#logging">« back</a> 1.2 +35 -30 modperl-docs/src/start/tips/registry.pod Index: registry.pod =================================================================== RCS file: /home/cvs/modperl-docs/src/start/tips/registry.pod,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- registry.pod 25 Apr 2002 07:01:02 -0000 1.1 +++ registry.pod 26 Apr 2002 01:43:11 -0000 1.2 @@ -5,38 +5,43 @@ =head1 Running CGI scripts with mod_perl -Existing CGI scripts will run much faster under mod_perl. -And converting existing CGI scripts to run under mod_perl is easy. +Existing CGI scripts will run much faster under mod_perl. And +converting existing CGI scripts to run under mod_perl is easy. -For example, here's an existing CGI script called F<hello.cgi>. +For example, here's an existing CGI script called I<hello.cgi>. - #!/usr/local/bin/perl -w - use strict; - use CGI; - my $q = CGI->new; - print $q->header, - $q->start_html, - $q->h1('Hello World!'), - $q->end_html; - -This script can now be run as-is under Apache::Registry by using the -following configuration in httpd.conf: - - <files hello.cgi> - SetHandler perl-script - PerlHandler Apache::Registry - Options ExecCGI - </files> - -That's basically it. Your scripts do need to be well coded, but there's even the -Apache::PerlRun module to help with those "less clean" programs. - -So how much faster do scripts run under Apache::Registry? Obviously, it depends -on the script, but the "hello.cgi" script above ran -at 7.3 requests per second as a CGI script and 243.0 requests per second with Apache::Registry. - -=for html -<small>Tested with Apache Benchmark (ab -n 1000) on Linux PIII-550Mhz, Apache version 1.3.20</small> + file:hello.cgi + -------------- + #!/usr/local/bin/perl -w + use strict; + use CGI; + my $q = CGI->new; + print $q->header, + $q->start_html, + $q->h1('Hello World!'), + $q->end_html; + +This script can now be run as-is under C<Apache::Registry> by using the +following configuration in I<httpd.conf>: + + <files hello.cgi> + SetHandler perl-script + PerlHandler Apache::Registry + Options ExecCGI + </files> + +That's basically it. Your scripts do need to be well coded, but +there's even the C<Apache::PerlRun> module to help with those "less +clean" programs. + +So how much faster do scripts run under C<Apache::Registry>? +Obviously, it depends on the script, but the I<hello.cgi> script above +ran at 7.3 requests per second as a CGI script and 243.0 requests per +second with C<Apache::Registry>. + +=for html +<small>Tested with Apache Benchmark (ab -n 1000) on Linux PIII-550Mhz, +Apache version 1.3.20</small> For more information on running CGI scripts under mod_perl please see L<mod_perl FAQs|"../../docs/1.0/faqs/index.html">.
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]