Practical mod perl 1st Edition by Stas Bekman, Eric Cholet – Ebook PDF Instant Download/Delivery: 0596002270, 9780596002275
Full download Practical mod perl 1st Edition after payment
Product details:
ISBN 10: 0596002270
ISBN 13: 9780596002275
Author: Stas Bekman, Eric Cholet
mod_perl embeds the popular programming language Perl in the Apache web server, giving rise to a fast and powerful web programming environment. Practical mod_perl is the definitive book on how to use, optimize, and troubleshoot mod_perl. New mod_perl users will learn how to quickly and easily get mod_perl compiled and installed. But the primary purpose of this book is to show you how to take full advantage of mod_perl: how to make a mod_perl-enabled Web site as fast, flexible, and easily-maintainable as possible. The authors draw from their own personal experience in the field, as well as the combined experience of the mod_perl community, to present a rich and complete picture of how to set up and maintain a successful mod_perl site.This book is also the first book to cover the ‘next generation’ of mod_perl: mod_perl 2.0, a completely rewritten version of mod_perl designed for integration with Apache 2.0, which for the first time supports threads. The book covers the following topics, and more:Configuring mod_perl optimally for your web sitePorting and optimizing programs for a mod_perl environmentPerformance tuning: getting the very fastest performance from your siteControlling and monitoring the server to circumvent crashes and clogsIntegrating with databases efficiently and painlesslyDebugging tips and tricksMaximizing securityWritten for Perl web developers and web administrators, Practical mod_perl is an extensive guide to the nuts and bolts of the powerful and popular combination of Apache and mod_perl. From writing and debugging scripts to keeping your server running without failures, the techniques in this book will help you squeeze every ounce of power out of your server. True to its title, this is the practical guide to mod_perl.
Table of contents:
Part I
Introducing CGI and mod_perl
A Brief History of CGI
The HTTP Protocol
The Common Gateway Interface Specification
Apache CGI Handling with mod_cgi
The Apache 1.3 Server Model
Forking
CGI Scripts Under the Forking Model
Performance Drawbacks of Forking
The Development of mod_perl 1.0
Running CGI Scripts with mod_perl
Apache 1.3 Request Processing Phases
Apache 1.3 Modules and the mod_perl 1.0 API
mod_perl 1.0 and the mod_perl API
References
Getting Started Fast
Installing mod_perl 1.0 in Three Steps
Installing mod_perl on Unix Platforms
Obtaining and Unpacking the Source Code
Building mod_perl
Installing mod_perl
Configuring and Starting the mod_perl Server
Installing mod_perl for Windows
Installing mod_perl with the Perl Package Manager
Preparing the Scripts Directory
A Sample Apache::Registry Script
Porting Existing CGI Scripts to mod_perl
A Simple mod_perl Content Handler
Is This All We Need to Know About mod_perl?
References
Installing mod_perl
Configuring the Source
Controlling the Build Process
Activating Callback Hooks
Activating Standard API Features
Enabling Extra Features
Reusing Configuration Parameters
Discovering Whether a Feature Was Enabled
Using an Alternative Configuration File
perl Makefile.PL Troubleshooting
A test compilation with your Makefile configuration failed…
Missing or misconfigured libgdbm.so
Undefined reference to ‘PL_perl_destruct_level’
Building mod_perl (make)
What Compiler Should Be Used to Build mod_perl?
make Troubleshooting
Undefined reference to ‘Perl_newAV’
Unrecognized format specifier for…
Testing the Server (make test)
Manual Testing
make test Troubleshooting
make test fails
mod_perl.c is incompatible with this version of Apache
make test……skipping test on this platform
make test fails due to misconfigured localhost entry
Installation (make install)
Manually Building a mod_perl-Enabled Apache
Installation Scenarios for Standalone mod_perl
The All-in-One Way
Building mod_perl and Apache Separately
When DSOs Can Be Used
Building mod_perl as a DSO via APACI
Building mod_perl as a DSO via APXS
Building mod_perl with Other Components
Installing mod_perl with PHP
Installing mod_perl with mod_ssl (+openssl)
Installing mod_perl with Apache-SSL (+openssl)
Installing mod_perl with Stronghold
Installing mod_perl with the CPAN.pm Interactive Shell
Installing mod_perl on Multiple Machines
Installation into a Nonstandard Directory
Installing Perl Modules into a Nonstandard Directory
Finding Modules Installed in Nonstandard Directories
Modifying @INC
Using the PERL5LIB environment variable
Using the CPAN.pm Shell with Nonstandard Installation Directories
Making a Local Apache Installation
Nonstandard mod_perl-Enabled Apache Installation
Nonstandard mod_perl-Enabled Apache Installation with CPAN.pm
How Can I Tell if mod_perl Is Running?
Checking the error_log File
Testing by Viewing /perl-status
Testing via Telnet
Testing via a CGI Script
Testing via lwp-request
General Notes
How Do I Make the Installation More Secure?
Can I Run mod_perl-Enabled Apache as suExec?
Should I Rebuild mod_perl if I Have Upgraded Perl?
mod_auth_dbm Nuances
References
mod_perl Configuration
Apache Configuration
Configuration Files
Configuration Directives
, , and Sections
…
…
…
Merging , , and Sections
Subgrouping of , , and Sections
Options Directive Merging
MinSpareServers, MaxSpareServers, StartServers, MaxClients, and MaxRequestsPerChild
mod_perl Configuration
Alias Configurations
Running scripts located in the same directory under different handlers
Sections
PerlModule and PerlRequire
Perl*Handlers
The handler( ) Subroutine
Investigating the Request Phases
Stacked Handlers
Perl Method Handlers
PerlFreshRestart
PerlSetEnv and PerlPassEnv
PerlSetVar and PerlAddVar
PerlSetupEnv
PerlWarn and PerlTaintCheck
The Startup File
A Sample Startup File
Syntax Validation
What Modules Should Be Added to the Startup File
The Confusion with use( ) in the Server Startup File
Apache Configuration in Perl
Constructing Sections
Breaking Out of Sections
Cheating with Apache->httpd_conf
Declaring Package Names in Perl Sections
Verifying Sections
Saving the Perl Configuration
Debugging
Validating the Configuration Syntax
The Scope of mod_perl Configuration Directives
Apache Restarts Twice
Enabling Remote Server Configuration Reports
Tips and Tricks
Publishing Port Numbers Other Than 80
Running the Same Script from Different Virtual Hosts
Configuration Security Concerns
Using Only Absolutely Necessary Components
Taint Checking
Hiding Server Information
Making the mod_perl Server Inaccessible from the Outside
Protecting Private Status Locations
General Pitfalls
References
Web Server Control, Monitoring, Upgrade, and Maintenance
Starting the Server in Multi-Process Mode
Starting the Server in Single-Process Mode
Using kill to Control Processes
kill Signals for Stopping and Restarting Apache
Speeding Up Apache’s Termination and Restart
Finding the Right Apache PID
Using apachectl to Control the Server
Validating Server Configuration
Setuid root Startup Scripts
Introduction to setuid Executables
Apache Startup Script’s setuid Security
Sample setuid Apache Startup Script
Preparing for Machine Reboot
Upgrading a Live Server
Upgrading Intranet Servers
Upgrading 24 ¥ 7 Internet Servers
The server cluster
The single server
Disabling Scripts and Handlers on a Live Server
Disabling code running under Apache::Registry
Disabling code running under other handlers
Disabling services with help from the frontend server
Scheduled Routine Maintenance
Three-Tier Server Scheme: Development, Staging, and Production
Starting a Personal Server for Each Developer
Web Server Monitoring
Interactive Monitoring
Apache::VMonitor—The Visual System and Apache Server Monitor
Prerequisites and configuration
Multi-processes and system overall status reporting mode
Single-process extensive reporting system
Automated Monitoring
mod_perl server watchdogs
Server Maintenance Chores
Handling Log Files
Scheduled log file rotation
Non-scheduled emergency log rotation
Centralized logging
Swapping Prevention
Limiting Resources Used by Apache Child Processes
OS-specific notes
Tracking and Terminating Hanging Processes
Limiting the Number of Processes Serving the Same Resource
Limiting the Request-Rate Speed (Robot Blocking)
References
Coding with mod_perl in Mind
Before You Start to Code
Accessing Documentation
The strict Pragma
Enabling Warnings
Exposing Apache::Registry Secrets
The First Mystery: Why Does the Script Go Beyond 5?
The Second Mystery—Inconsistent Growth over Reloads
Namespace Issues
The @INC Array
The %INC Hash
Name Collisions with Modules and Libraries
A first faulty scenario
A second faulty scenario
A quick but ineffective hackish solution
A first solution
A second solution
A third solution
Perl Specifics in the mod_perl Environment
exit( )
die( )
Global Variable Persistence
STDIN, STDOUT, and STDERR Streams
Redirecting STDOUT into a Scalar Variable
print( )
Formats
Output from System Calls
BEGIN blocks
END Blocks
CHECK and INIT Blocks
$^T and time( )
Command-Line Switches
Warnings
Taint mode
Compiled Regular Expressions
Matching patterns repeatedly
Apache::Registry Specifics
_ _END_ _ and _ _DATA_ _ Tokens
Symbolic Links
Return Codes
Transition from mod_cgi Scripts to Apache Handlers
Starting with a mod_cgi-Compatible Script
Converting into a Perl Content Handler
Converting to use the mod_perl API and mod_perl-Specific Modules
Loading and Reloading Modules
The @INC Array Under mod_perl
Reloading Modules and Required Files
Restarting the server
Using Apache::StatINC
Using Apache::Reload
Using dynamic configuration files
Handling the “User Pressed Stop Button” Case
Detecting Aborted Connections
The Importance of Cleanup Code
Critical section
Safe resource locking and cleanup code
Handling Server Timeout Cases and Working with $SIG{ALRM}
Generating Correct HTTP Headers
Method Handlers: The Browse and See, Browse and View Example
References
Part II
Identifying Your Performance Problems
Looking at the Big Picture
Asking the Right Questions
References
Choosing a Platform for the Best Performance
Choosing the Right Operating System
mod_perl Support for the Operating System
Stability and Robustness
Good Memory Management
Avoiding Memory Leaks
Memory-Sharing Capabilities
The Real Cost of Support
Discontinued Products
Keeping Up with OS Releases
Choosing the Right Hardware
Machine Strength Demands According to Expected Site Traffic
A Single Strong Machine Versus Many Weaker Machines
Getting a Fast Internet Connection
Tuning I/O Performance
How Much Memory Is Enough?
Getting a Fault-Tolerant CPU
Detecting and Avoiding Bottlenecks
Solving Hardware Requirement Conflicts
References
Essential Tools for Performance Tuning
Server Benchmarking
ApacheBench
httperf
http_load
Other Web Server Benchmark Utilities
Perl Code Benchmarking
Process Memory Measurements
Apache::Status and Measuring Code Memory Usage
Code Profiling Techniques
Profiling with Devel::DProf
Profiling with Devel::SmallProf
References
Improving Performance with Shared Memory and Proper Forking
Sharing Memory
Calculating Real Memory Usage
Memory-Sharing Validation
Variable unsharing caused by regular expressions
Numerical versus string access to variables
Preloading Perl Modules at Server Startup
Preloading Registry Scripts at Server Startup
Module Initialization at Server Startup
Initializing DBI.pm
Initializing CGI.pm
Memory Preallocation
Forking and Executing Subprocesses from mod_perl
Forking a New Process
Freeing the Parent Process
Detaching the Forked Process
Avoiding Zombie Processes
A Complete Fork Example
Starting a Long-Running External Program
Starting a Short-Running External Program
Executing system( ) or exec( ) in the Right Way
References
Tuning Performance by Tweaking Apache’s Configuration
Setting the MaxClients Directive
Setting the MaxRequestsPerChild Directive
Setting MinSpareServers, MaxSpareServers, and StartServers
KeepAlive
PerlSetupEnv
Reducing the Number of stat( ) Calls Made by Apache
Symbolic Links Lookup
Disabling DNS Resolution
Response Compressing
References
Server Setup Strategies
mod_perl Deployment Overview
Standalone mod_perl-Enabled Apache Server
One Plain and One mod_perl-Enabled Apache Server
Choosing the Target Installation Directories Layout
Configuration and Compilation of the Sources
Building the httpd_docs server
Building the httpd_perl server
Configuration of the Servers
Basic httpd_docs server configuration
Basic httpd_perl server configuration
One Light Non-Apache and One mod_perl- Enabled Apache Server
Adding a Proxy Server in httpd Accelerator Mode
The Squid Server and mod_perl
Pros and Cons
Light Apache, mod_perl, and Squid Setup Implementation Details
mod_perl and Squid Setup Implementation Details
Apache’s mod_proxy Module
Concepts and Configuration Directives
ProxyPass
ProxyPassReverse
Security issues
Knowing the Proxypassed Connection Type
Buffering Feature
Closing Lingering Connections with lingerd
Caching Feature
Build Process
mod_rewrite Examples
Getting the Remote Server IP in the Backend Server in the Proxy Setup
Frontend/Backend Proxying with Virtual Hosts
Virtual Host Flavors
Dual-Server Virtual Host Configuration
Virtual Hosts and Main Server Interaction
Frontend Server Configuration
Backend Server Configuration
HTTP Authentication with Two Servers and a Proxy
When One Machine Is Not Enough for Your RDBMS DataBase and mod_perl
Server Requirements
The Problem
The Solution
Three Machine Model
Running More than One mod_perl Server on the Same Machine
SSL Functionality and a mod_perl Server
Uploading and Downloading Big Files
References
TMTOWTDI: Convenience and Habit Versus Performance
Apache::Registry PerlHandler Versus Custom PerlHandler
Apache::args Versus Apache::Request::param Versus CGI::param
Buffered Printing and Better print( ) Techniques
Interpolation, Concatenation, or List
Keeping a Small Memory Footprint
“Bloatware” Modules
Importing Symbols
Object Methods Calls Versus Function Calls
The Overhead with Light Subroutines
The Overhead with Heavy Subroutines
Are All Methods Slower Than Functions?
Using the Perl stat( ) Call’s Cached Results
time( ) System Call Versus $r->request_time
Printing Unmodified Files
Caching and Pre-Caching
Caching with Memoize
Comparing Runtime Performance of Perl and C
Building Perl Extensions with XS and h2xs
The Benchmark
Inline.pm
Perl Extensions Conclusion
References
Defensive Measures for Performance Enhancement
Controlling Your Memory Usage
Defining the Minimum Shared Memory Size Threshold
Potential drawbacks of memory-sharing restrictions
Defining the Maximum Memory Size Threshold
Defining the Maximum Unshared Memory Size Threshold
Coding for a Smaller Memory Footprint
Memory Reuse
Big Input, Big Damage
Small Input, Big Damage
Think Production, Not Development
Passing Variables
Memory Leakage
Conclusion
References
Improving Performance Through Build Options
Server Size as a Function of Compiled-in Features
mod_status and ExtendedStatus On
DYNAMIC_MODULE_LIMIT Apache Build Option
Perl Build Options
Architecture-Specific Compile Options
References
HTTP Headers for Optimal Performance
Date-Related Headers
Date Header
Last-Modified Header
Expires and Cache-Control Headers
Content Headers
Content-Type Header
Content-Length Header
Entity Tags
Content Negotiation
The Vary Header
HTTP Requests
GET Requests
Conditional GET Requests
HEAD Requests
POST Requests
Avoiding Dealing with Headers
References
Part III
Databases Overview
Volatile Databases
In-Memory Databases in a Single Process
In-Memory Databases Across Multiple Processes
Non-Volatile Databases
Flat-File Databases
Filesystem Databases
DBM Databases
Relational Databases
References
mod_perl Data-Sharing Techniques
Sharing the Read-Only Data in and Between Processes
Sharing Data Between Various Handlers
References
DBM and mod_perl
mod_perl and DBM
Resource Locking
Deadlocks
Exclusive Locking Starvation
Flawed Locking Methods
Locking Wrappers Overview
Tie::DB_Lock
Examples
tie( )-ing Once and Forever
Read/Write Access
Storing Complex Data Structures
References
Relational Databases and mod_perl
Persistent Database Connections with Apache::DBI
Apache::DBI Connections
When to Use Apache::DBI (and When Not to Use It)
Configuring Apache::DBI
Debugging Apache::DBI
Caveats and Troubleshooting
Database locking risks
Transactions
Opening connections with different parameters
Cannot find the DBI handler
The morning bug
Apache:DBI does not work
Skipping connection cache during server startup
Improving Performance
Preopening DBI Connections
Improving Speed by Skipping ping( )
Efficient Record-Retrieval Techniques
mysql_use_result Versus mysql_store_result Attributes
Running Two or More Relational Databases
Caching prepare( ) Statements
DBI Debug Techniques
References
Part IV
Error Handling and Debugging
Warnings and Errors Explained
The Importance of Warnings
The diagnostics pragma
Curing “Internal Server Error” Problems
Making Use of the error_log
Displaying Errors to Users
Debugging Code in Single-Server Mode
Tracing System Calls
Tracing mod_perl-Specific Perl Calls
Debugging Perl Code
Locating and Correcting Syntax Errors
Using Apache::FakeRequest to Debug Apache Perl Modules
Using print( ) for Debugging
Using print( ) and Data::Dumper for Debugging
The Importance of a Good, Concise Coding Style
Introduction to the Perl Debugger
Interactive Perl Debugging Under mod_cgi
Noninteractive Perl Debugging Under mod_perl
Interactive mod_perl Debugging
ptkdb and interactive mod_perl debugging
Analyzing Dumped core Files
Getting Ready to Debug
Creating a Faulty Package
Dumping the core File
Analyzing the core File
Extracting the Backtrace Automatically
Hanging Processes: Detection and Diagnostics
Hanging Because of an Operating System Problem
When a Process Might Hang
Detecting Hanging Processes
Determination of the Reason
Using the Perl trace
Using the system calls trace
Using the interactive debugger
mod_perl gdb Debug Macros
Useful Debug Modules
B::Deparse
-D Runtime Option
Devel::Peek and Apache::Peek
Devel::Symdump and Apache::Symdump
Apache::Debug
Other Debug Modules
Looking Inside the Server
Apache::Status—Embedded Interpreter Status Information
Minimal configuration
Extended configuration
Usage
mod_status
References
Troubleshooting mod_perl
Configuration and Startup
libexec/libperl.so: open failed: No such file or directory
install_driver(Oracle) failed: Can’t load ‘…/DBD/Oracle/ Oracle.so’ for module DBD::Oracle
Invalid command ‘PerlHandler’…
RegistryLoader: Translation of uri […] to filename failed
Code Parsing and Compilation
Value of $x will not stay shared at – line 5
Value of $x may be unavailable at – line 5
Can’t locate loadable object for module …
Can’t locate object method “get_handlers” …
Missing right bracket at line …
Can’t load ‘…/auto/DBI/DBI.so’ for module DBI
Runtime
foo … at /dev/null line 0
Segfaults When Using XML::Parser
exit signal Segmentation fault (11)
CGI Code Is Returned as Plain Text Instead of Being Executed
rwrite returned -1
Global symbol “$foo” requires explicit package name
Use of uninitialized value at (eval 80) line 12
Undefined subroutine &Apache::ROOT::perl::test_2epl:: some_function called at
Callback called exit
Out of memory!
syntax error at /dev/null line 1, near “line arguments:”
Shutdown and Restart
Evil Things Might Happen When Using PerlFreshRestart
[warn] child process 30388 did not exit, sending another SIGHUPProcesses Get Stuck on Graceful Restart
Getting Help and Online Resources
How to Report Problems
Getting the Backtrace from Core Dumps
Spinning Processes
Mailing List Etiquette
Resources
mod_perl
mod_perl Mailing Lists
Perl
Perl/CGI
Apache
DBI and SQL
Squid
CVS
Performance and Scalability
Web Security
Part V
mod_perl 2.0: Installation and Configuration
What’s New in Apache 2.0
What’s New in Perl 5.6.0–5.8.0
What’s New in mod_perl 2.0
Thread Support
Perl Interface to the APR and Apache APIs
Other New Features
Improved and More Flexible Configuration
Optimizations
Installing mod_perl 2.0
Installing from Source
Installing Binaries
Configuring mod_perl 2.0
Enabling mod_perl
Accessing the mod_perl 2.0 Modules
Startup File
Perl’s Command-Line Switches
mod_perl 2.0 Core Handlers
modperl
perl-script
A simple response handler example
PerlOptions Directive
Enable
Clone
Parent
Perl*Handler
AutoLoad
GlobalRequest
ParseHeaders
MergeHandlers
SetupEnv
Thread-Mode–Specific Directives
PerlInterpStart
PerlInterpMax
PerlInterpMinSpare
PerlInterpMaxSpare
PerlInterpMaxRequests
PerlInterpScope
Retrieving Server Startup Options
Resources
Programming for mod_perl 2.0
Migrating to and Programming with mod_perl 2.0
The Shortest Migration Path
Migrating Configuration Files
PerlHandler
PerlSendHeader
PerlSetupEnv
PerlTaintCheck
PerlWarn
PerlFreshRestart
Code Porting
ModPerl::Registry Family
Method Handlers
Apache::StatINC Replacement
New Apache Phases and Corresponding Perl*Handlers
Server Configuration and Startup Phases
PerlOpenLogsHandler
PerlPostConfigHandler
PerlChildInitHandler
PerlChildExitHandler
Connection Phases
PerlPreConnectionHandler
PerlProcessConnectionHandler
HTTP Request Phases
I/O Filtering
I/O Filtering Concepts
Two methods for manipulating data
HTTP request versus connection filters
Multiple invocations of filter handlers
Blocking calls
Filter Configuration
Input Filters
Bucket brigade–based connection input filter
Bucket brigade–based HTTP request input filter
Stream-based HTTP request input filter
Output Filters
Stream-based HTTP request output filter
Another stream-based HTTP request output filter
Bucket brigade-based HTTP request output filter
Part VI
mod_perl Recipes
Emulating the Authentication Mechanism
Reusing Data from POST Requests
Redirecting POST Requests
Redirecting While Maintaining Environment Variables
Handling Cookies
Sending Multiple Cookies with the mod_perl API
Sending Cookies in REDIRECT Responses
CGI::params in the mod_perlish Way
Sending Email from mod_perl
mod_rewrite in Perl
Setting PerlHandler Based on MIME Type
Singleton Database Handles
Terminating a Child Process on Request Completion
References
Apache Perl Modules
Development-Stage Modules
Apache::Reload—Automatically Reload Changed Modules
Apache::PerlVINC—Allow Module Versioning in and blocks
Apache::DProf—Hook Devel::DProf into mod_perl
Apache::SmallProf—Hook Devel::SmallProf into mod_perl
Apache::FakeRequest—Fake Request Object for Debugging
Apache::test—Facilitate Testing of Apache::* Modules
Modules to Aid Debugging
Apache::DB—Hooks for the Interactive Perl Debugger
Apache::Debug—Utilities for Debugging Embedded Perl Code
Apache::DebugInfo—Send Debug Information to Client
Apache::Leak—Module for Tracking Memory Leaks in mod_perl Code
Apache::Peek—A Data Debugging Tool for the XS Programmer
Apache::Symbol—Avoid the Mandatory ‘Subroutine Redefined’ Warning
Apache::Symdump—Symbol Table Snapshots
Control and Monitoring Modules
Apache::Watchdog::RunAway—Hanging Processes Monitor and Terminator
Apache::VMonitor—Visual System and Apache Server Monitor
Apache::SizeLimit—Limit Apache httpd Processes
Apache::GTopLimit—Limit Apache httpd Processes
Apache::TimedRedirect—Redirect URLs for a Given Time Period
Apache::Resource—Limit Resources Used by httpd Children
Apache::Status—Embedded Interpreter Status Information
Server Configuration Modules
Apache::ModuleConfig—Interface to Configuration API
Apache::PerlSections—Utilities for Working with Sections
Apache::httpd_conf—Generate an httpd.conf File
Apache::src—Methods for Locating and Parsing Bits of Apache Source Code
Apache::ConfigFile—Parse an Apache-Style httpd.conf Configuration File
Authentication-Phase Modules
Authorization-Phase Modules
Access-Phase Modules
Stonehenge::Throttle—Limit Bandwith Consumption by IP Address
Type Handlers
Apache::MimeXML—mod_perl Mime Encoding Sniffer for XML Files
Apache::MIMEMapper—Associates File Extensions with PerlHandlers
Trans Handlers
Apache::AddHostPath—Adds Some or All of the Hostname and Port to the URI
Apache::ProxyPass—implement ProxyPass in Perl
Apache::ProxyPassThru—Skeleton for Vanilla Proxy
Apache::Throttle—Speed-Based Content Negotiation
Apache::TransLDAP—Trans Handler Example
Fixup Handlers
Apache::RefererBlock—Block Request Based Upon “Referer” Header
Apache::Usertrack—Emulate the mod_usertrack Apache Module
Generic Content-Generation Modules
Apache::Registry and Apache::PerlRun
Apache::RegistryNG—Apache::Registry New Generation
Apache::RegistryBB—Apache::Registry Bare Bones
Apache::Request (libapreq)—Generic Apache Request Library
Apache::Dispatch—Call PerlHandlers with the Ease of Registry Scripts
Application-Specific Content-Generation Modules
Apache::AutoIndex—Perl Replacement for the mod_autoindex and mod_dir Apache Modules
Apache::WAP::AutoIndex—WAP Demonstration Module
Apache::WAP::MailPeek—Demonstrate Use of WML Delivery
Apache::Archive—Expose Archive Files Through the Apache Web Server
Apache::Gateway—Implement a Gateway
Apache::NNTPGateway—NNTP Interface for a mod_perl- Enabled Apache Web Server.
Apache::PrettyPerl—Syntax Highlighting for Perl Files
Apache::PrettyText—Reformat .txt Files for Client Display
Apache::RandomLocation—Random File Display
Apache::Stage—Manage a Staging Directory
Apache::Roaming—A mod_perl Handler for Roaming Profiles
Apache::Backhand—Write mod_backhand Functions in Perl
Database Modules
Apache::DBI—Initiate a Persistent Database Connection
Apache::OWA—Oracle’s PL/SQL Web Toolkit for Apache
Apache::Sybase::CTlib—Persistent CTlib Connection Management for Apache
Toolkits and Frameworks for Content- Generation and Other Phases
Apache::ASP—Active Server Pages for Apache with mod_perl
Apache::AxKit—XML Toolkit for mod_perl
HTML::Embperl—Embed Perl into HTML
Apache::EmbperlChain—Process Embedded Perl in HTML in the OutputChain
Apache::ePerl—Embedded Perl 5 Language
Apache::iNcom—E-Commerce Framework
Apache::Mason—Perl-Based Web Site Development and Delivery System
Apache::PageKit—Web Applications Framework
Template Toolkit—Template Processing System
Output Filters and Layering Modules
Apache::OutputChain—Chain Stacked Perl Handlers
Apache::Clean—mod_perl Interface Into HTML::Clean
Apache::Filter—Alter the Output of Previous Handlers
Apache::GzipChain—Compress HTML (or Anything) in the OutputChain
Apache::PassFile—Send File via OutputChain
Apache::Gzip—Auto-Compress Web Files with gzip
Apache::Compress—Auto-Compress Web Files with gzip
Apache::Layer—Layer Content Tree Over One or More Others
Apache::Sandwich—Layered Document (Sandwich) Maker
Apache::SimpleReplace—Simple Template Framework
Apache::SSI—Implement Server-Side Includes in Perl
Logging-Phase Handlers
Apache::RedirectLogFix—Correct Status While Logging
Apache::DBILogConfig—Logs Access Information in a DBI Database
Apache::DBILogger—Tracks What’s Being Transferred in a DBI Database
Apache::DumpHeaders—Watch HTTP Transaction via Headers
Apache::Traffic—Track Hits and Bytes Transferred on a Per- User Basis
Core Apache Modules
Apache::Module—Interface to Apache C Module Structures
Apache::ShowRequest—Show Phases and Module Participation
Apache::SubProcess—Interface to Apache Subprocess API
Apache::Connection—Interface to the Apache conn_rec Data Structure
Apache::Constants—Constants Defined in httpd.h
Apache::ExtUtils—Utilities for Apache C/Perl Glue
Apache::File—Advanced Functions for Manipulating Files on the Server Side
Apache::Log—Interface to Apache Logging
Apache::LogFile—Interface to Apache’s Logging Routines
Apache::Scoreboard—Perl Interface to Apache’s scoreboard.h
Apache::Server—Perl Interface to the Apache server_rec Struct
Apache::Table—Perl Interface to the Apache Table Struct
Apache::URI—URI Component Parsing and Unparsing
Apache::Util—Perl Interface to Apache C Utility Functions
Other Miscellaneous Modules
Apache::Session—Maintain Session State Across HTTP Requests
Apache::RequestNotes—Easy, Consistent Access to Cookie and Form Data Across Each Request Phase
Apache::Cookie—HTTP Cookies Class
Apache::Icon—Look Up Icon Images
Apache::Include—Utilities for mod_perl/mod_include Integration
Apache::Language—Perl Transparent Language Support for Apache Modules and mod_perl Scripts
Apache::Mmap—Perl Interface to the mmap(2) System Call
Apache::GD::Graph—Generate Graphs in an Apache Handler
Apache::Motd—Provide motd (Message of the Day) Functionality to a Web Server
Apache::ParseLog—Object-Oriented Perl Extension for Parsing Apache Log Files
Apache::RegistryLoader—Compile Apache::Registry Scripts at Server Startup
Apache::SIG—Override Apache Signal Handlers with Perl’s Signal Handlers
Apache::TempFile—Allocate Temporary Filenames for the Duration of a Request
Xmms—Perl Interface to the xmms Media Player
Module::Use—Log and Load Used Perl Modules
ISPs Providing mod_perl Services
Users Sharing a Single Web Server
Users Sharing a Single Machine
Giving Each User a Separate Machine (Colocation)
Giving Each User a Virtual Machine
The Template Toolkit
Fetching and Installing the Template Toolkit
Overview
Typical Uses
Template Toolkit Language
Simple Template Example
Processing Templates
Apache/mod_perl Handler
Apache::Template Module
Hangman Application
Hangman CGI Script
Hangman with Modular Templates
Hangman Plug-in
Self-Contained Hangman Template
References
The AxKit XML Application Server
Installing and Configuring AxKit
Your First AxKit Page
If Something Goes Wrong
How it Works?
XPath
Dynamic Content
Handling Form Parameters
Handling Cookies
Sending Email
Handling Exceptions
Utilities Taglib
Executing SQL
More XPathScript Details
The XPathScript API
Extracting values
Declarative templates
XSLT
Anatomy of an XSLT Stylesheet
Template Rules and Recursion
Learning More
Putting Everything Together
More Reasons to Use AxKit
HTTP Status Codes
HTTP/1.0 Status Codes
HTTP/1.1 Status Codes
People also search:
practical mod_perl
practical mod_perl pdf
practical mod
practical logistics 1.7.10
Tags: Stas Bekman, Eric Cholet, Practical, mod