################################### ### mod_perl Guide CHANGES file ### ################################### 09.21.2000 ver 1.27 * * * * * * troubleshooting.pod: o foo ... at /dev/null line 0 (Honza Pazdziora) * debug.pod: o suggestion to use warn while debugging (Kenny Gatdula) * help.pod: o added cgi-list subscription info (Peter J. Schoenster) * perl.pod: o Exceptions section update: Exception::Class and Devel::StackTrace (Matt Sergeant and Dave Rolsky) * porting.pod: o "-M and other time() file tests under mod_perl" -- added a nice TransHandler to handle the time resetting (Doug) o Adding local() at "-M and other time() file tests under mod_perl" (Andreas Koenig) * install.pod: o reviewed and extensively edited. o added an info about Aphid Apache Installer * scenario.pod: reviewed and extensively edited. * strategy.pod: reviewed and extensively edited. * Minor corrections: o install.pod: (Neil Conway, Lance Cleveland) o perl.pod: (Pavel Shmidt) 08.22.2000 ver 1.26-fix-01 * build: fixed the Makefile.PL to detect the prerequisites. MANIFEST file is OK now (didn't accept files starting with './') (Marcel Grunauer) * troubleshooting.pod: install_driver(Oracle) failed: Can't load '.../DBD/Oracle/Oracle.so' for module DBD::Oracle (Ed Park) 08.21.2000 ver 1.26 * mod_perl guide's build process is now completely migrated into an external module, distributed in package Pod::HtmlPSPdf. * install.pod: Raven SSL installation notes updated (Doug, Geoffrey Young) * troubleshooting.pod: install_driver(Oracle) failed: Can't load '.../DBD/Oracle/Oracle.so' for module DBD::Oracle (Yann Ramin, Richard Chen) * security.pod: a code sample in "Non authenticated access for internal IPs, Authenticated for external IPs" is corrected (Will Trillich) * porting.pod: "CHECK Blocks" (Doug) * scenario.pod: "The dual server installation scenario was complete rewritten, to accomodate a better in my opinion directories layout and simpler installation process" * perl.pod: "Exception Handling for mod_perl" was improved by Matt Sergeant. * Minor corrections: o config (Ron Pero) 08.05.2000 ver 1.25 * License: People asked me to redistribute mod_perl Guide in other ways than just mirroring the mod_perl site. Therefore I've licensed the guide under GPL and included the required info in the CPAN package. * perl: o added "Using Non-Hardcoded Configuration Module Names" (Chris Winters) * debug: o updated: "How can I find out if a mod_perl code has a memory leak" o rewritten: Handling the 'User pressed Stop button' case Detecting Aborted Connections The Importance of Cleanup Code Critical Section Safe Resource Locking and Cleanup Code * config: o added a sub header "Running CGI, PerlRun, and Registry Scripts located in the same Directory" to make the info more prominent to find. (Ron Pero) o PerlAddVar info was added * control o "Swapping Prevention" rewritten from scratch and moved from performance chapter to control chapter (Ed Phillips, Barrie Slaymaker, Joshua Chamas) o "Preparing for Machine Reboot" -- added a section describing the chkconfig(8) use (Andreas Koenig) * porting: o the wrong suggested solution to the nested sub problem was spotted!!! (Hunter Monroe, Hailei Dai) it's fixed now. o update: "Terminating requests and processes, the exit() and child_terminate() functions" -- under perl5.6 you don't need to override exit anymore! (Doug, Eric Cholet) o s/PerlTaintMode/PerlTaintCheck/ (Gunther Birznieks) * review: o Mark Summerfield has reviewed these chapters: modules, browserbugs, security and start. * performance: o "CGI.pm vs Apache::Request" and "Apache::args vs Apache::Request::param" were merged into a single section called: "Apache::args vs Apache::Request::param vs CGI::param" o The first example showing the use of ab was corrected (Joe Schaefer) o rewritten: + Apache::Registry PerlHandler versus Custom PerlHandler + Keeping the Shared Memory Limit + Limiting the Size of the Processes + Limiting Other Resources Used by Apache Child Processes * modules: o "Apache::GTopLimit - Limit Apache httpd processes" merged into performance chapter. o Apache::PerlVINC configuration corrected (Patrick) * Minor corrections: o config (Carl Hansen, Ron Pero, Jeff Chan, Cliff Rayman, Marcel Grunauer) o control (Marcel Grunauer) o debug (Marcel Grunauer) o install (Ron Pero) o snippets (Ask Bjoern Hansen, Chris Nokleberg) o perl (Will Trillich, Cliff Rayman, Jason Rhinelander) o porting (Ged Haywood) 06.07.2000 ver 1.24 * perl: "catching exceptions" -- a few corrections (Matt Sergeant) * modules: added Apache::Gzip (Ken Williams) * guide's design o put back the links underlining o background-color: #ffffee; o added (jump) menus to reach search/download/index from everywhere o added the two new search engines (both working on the split version of the guide) * guide's build: o The build code was completely rewritten, html2ps is now bundled with the guide so one can create PS version, and if there is ps2pdf the PDF version. o It can produce the split version of the Guide. o One can easily reuse the package to build his own docs, since the look-n-feel has been moved into the templates from the code. o Once I feel confident I'll probably separate the build code from the Guide to give it its own life and make it easier to reuse by other developers. I need testers who want to use this package before I release it a separate module. * performance: o old sections rewritten/improved: - Are My Variables Shared? - Preloading Registry Scripts - Calculating Real Memory Usage - Preloading Perl Modules at Server Startup - Preloading Registry Scripts at Server Startup - Forking and Executing Subprocesses from mod_perl = Spawning a Detachable Sub-Process = Gory Details About fork() = Executing system() in the Right Way = Avoiding Zombie Processes o new sections: - Apache/mod_perl Build Options = mod_perl Process Size as a Function of Compiled in C Modules and mod_perl Features - Modules Initializing at Server Startup = Initializing DBI.pm (corrections by Tim Bunce) = Initializing CGI.pm * control: o These sections were rewritten and extended: - Server Maintenance Chores = Handling Log Files + Log Rotation + Non-Scheduled Emergency Log Rotation o 'cyclog' is now called multilog (from daemontools package) o Moved from debug and rewritten "Speeding up the Apache Termination and Restart" o Rewritten and extended "SUID Start-up Scripts" with: "Introduction to SUID Executables" "Apache Startup SUID Script's Security" "Sample Apache Startup SUID Script" * hardware: partly rewritten and improved. * reconstruction process: obvious.pod has been disassembled and merged into debug.pod. * debug: update: Apache::DumpHeaders (Ask Bjoern Hansen) * troubleshooting: PerlFreshRestart is irrelevant for DSO (Vivek Khera, Doug) * review: o Drew Taylor has reviewed these chapters: scenario and strategy chapters. o Mark Summerfield has reviewed these chapters: scenario, perl and strategy chapters. o Eric Cholet has reviewed the porting chapter. * Minor corrections: o download (Salve J Nilsen) o performance (w trillich) o perl (Scott Holdren) o snippets+download (Ask Bjoern Hansen) o debug (Robert Mathews) o scenario (Tuomas Salo) 05.12.2000 ver 1.23 * guide's layout changed: Now there are two index files -- the default index.html shows only the names of the chapters in TOC, the new index_long.html shows the full TOC as before. * guide's layout changed: Changed to simple black_on_white no fancy frames and colors anymore * guide: Changed the order of the the chapters towards logical sequentiality. * snippets: new: "Sending Cookies in REDIRECT Response" (Doug) * help: new: added the digest list info (Ask Bjoern Hansen) * performance: new: "Limiting the Number of Processes Serving the Same Resource" * troubleshooting: updated: "RegistryLoader: Translation of uri [...] to filename failed" * porting: update: "using format() and write()" -- using sprintf (Matt Sergeant) * perl: new: "Variables Globally, Lexically Scoped And Fully Qualified" (Ged W. Haywood) * build suite: documenting the build script so others could reuse this code in their documentation generation chores. * performance: a complete reorganizing of the content toward a better navigatibility. * strategy: removed "Multithreading or not Multithreading" -- has flaws and needs a rewrite * performance: update: "KeepAlive" -- works only if there is a Content-Length header (Andreas Koenig) * help: new: "get help with CVS" * troubleshooting: new: "Segfaults when using XML::Parser" (DeWitt Clinton) * performance: new: "Do Not Run Everything on One mod_perl Server" (Joshua Chamas, Shane shane@isupportlive.com, Gunther Birznieks) * minor corrections: scenario (Eric Jain), debug (Geoffrey Young). * install: new: "mod_perl and Raven SSL" (Doug) * scenario: new: "mod_proxy: Security Issues" (Eric Cholet) * performance: new: "Improving Perl Code Performance Hints" => "Concatination or List" (Doug) * debug: new: "hanging processes detection: Using the Perl Trace" * debug: new: "Hanging because of the OS Problem" (Greg Stark) * install: new: "About gdbm, db and ndbm libraries" (Les Mikesell) * performance: new: "Benchmarking Apache::Registry and Perl Content Handler" * performance: new: "Benchmarking CGI.pm and Apache::Request" * porting: new: "Transitioning from Apache::Registry to Apache handlers" * config: new: "Alias and Rewrite Conflicts" (Eric Cholet, Ask Bjoern Hansen, Vivek Vhera) * scenario: new: "Front-end Back-end Proxying with Virtual Hosts" (Vivek Vhera, Eric Cholet) * install: new: "APACHE_USER and APACHE_GROUP env" (Doug) * config: new: "Overriding Setting in "Sub-Location"" (Darren Chamberlain, Vivek Vhera) * review: Mark Summerfield has reviewed these chapters: porting, correct_headers, intro, multiuser, snippets and performance. * troubleshooting: new: "Processes Get Stuck on Graceful Restart" (Doug) * debug: updated: "Safe Resource Locking" added utils to trace the open files owner processes. (Doug, Eric Cholet) * databases: new: "Database Locking Risks" * performance: update: "Limiting the Resources Used by httpd Children", explanation of the soft and hard limits (Eric Cholet) * help: added subscription info for perl5-porters mailing list * perl: new: "Exception Handling for mod_perl" (Matt Sergeant) * review: Ged W. Haywood was very kind to review and correct the config, perl, dbm, snippets, advocacy, browserbugs, download, help, modules, troubleshooting, multiuser, obvious, correct_headers, status and hardware chapters. * modules: new: "Apache::RequestNotes" (Geoffrey Young) 04.09.2000 ver 1.22 * intro: updated the long due credits section * snippets: new: "Authentication Snippets" (Michael Finke, Eric Cholet) * debug: new: "Apache::DumpHeaders" (Ask Bjoern Hansen) * debug: new: "Apache::DebugInfo" (Geoffrey Young) * config: updated: "PerlFreshRestart" with DSO notes (Doug, Vivek Khera) * troubleshooting: new: "Can't upgrade that kind of scalar ..." (Doug) * performance: new: "Bloatware" (Tom Christiansen) * performance: new: "CGI.pm versus Apache::Request" (Doug) * performance: new: "Apache::Registry versus pure PerlHandler" (Doug) * performance: new: "TMTOWTDI: Convenience and Performance" * install: "Is it possible to run mod_perl enabled Apache as suExec?" (Randal L. Schwartz, Matt Sergeant) * performance: updated: "Benchmarking PerlHandlers" * performance: new: "Keeping the Shared Memory Limit" * porting: new: "File tests operators" * performance: updated "PerlSetupEnv Off" with a test script * snippets: new: "Getting the Front-end Server's Name in the Back-end Server" (Sean Dague) * porting: extended "Taint mode" -- a suggestion for services that move to mod_perl and have part of the scripts that won't run under enabled Taint mode (Gunther Birznieks, Ken Williams) * modules: new: "Apache::OutputChain -- Chain Stacked Perl Handlers" (Honza Pazdziora, Eric Cholet) * snippets: new: "SSI and Embperl -- Doing Both" (Michael Schout) * performance: new: "-Dusemymalloc Perl Build Option" (Doug, Jeffrey W. Baker) * strategy: added unedited answer for the question "Multithreading or not Multithreading" (Shane shane@isupportlive.com) * install: updated "Automating installation" (James G Smith) * performance: added a workaround for limiting memory usage under Linux to "Limiting the Resources Used by httpd Children" (Kevin Murphy) * debug: added clarification fd leakage in "Safe Resource Locking" (Bill Moseley) * multiuser: extended the scenario for multi-user/multi-webserver on one machine option, how to enforce port and similar settings without forbidding user to modify his httpd.conf. (inspired by Greg Cope) * scenario: new: "Caching in mod_proxy" (Ilya Obshadko) * porting: new: "Accessing Request Object in non-Perl*Handler Modules" (Doug) * config: new: "Adding Custom Configuration Directives" (Doug) * snippets: new: "Convert a POST Request into a GET Request" (Doug) * scenario: extended the "Getting the Remote Server IP in the Back-end server in the Proxy Setup" section with notes about the modules configuration precedence problem and its solution. (Ilya Obshadko, Ewan Edwards) * strategy: new "Pros and Cons of Building mod_perl as DSO" (based on http://www.apache.org/docs/dso.html by Ralf S. Engelschall) * strategy: new: "mod_perl and mod_ssl" (Tom Mornini, Vivek Khera, Mads Toftum) * snippets: added a "PerlTransHandler example" (Randal L. Schwartz, Ajay Shah) * config: extended examples for " sections", added the package declaration caveat, Apache::ReadConfig namespace and more. * performance: extended the "Reducing the Number of stat() Calls" section, with examples of PerlTransHandler and reducing stat()s for .htaccess look-ups * help: added the perlmonth.com and Gerald Richter's article reference * porting: updated the "Right headers generation": OS with EBCDIC as character set and sending proper headers. (Doug) * porting: added: "Apache::print() and CORE::print()" (Doug) * debug: updated: Sys::Signal, SIGALRM and perl5.6 issue (Doug and Bill Moseley) * config: $Apache::Server::StrictPerlSections (Doug) * scenario: more practical mod_rewrite examples by Geoffrey Young. * minor corrections: download.pod by Ron Pool, scenario.pod by Terry West and Eric Cholet, config.pod by Richard More, performance.pod by Stephen Judd and Steve Reppucci, frequent.pod by Andreas Piesk. * review: Mark Summerfield has joined the group of the kind people who review and correct the Guide. He has reviewed these chapters: advocacy, config, control, databases, dbm, debug, download, frequent, hardware, help, install. * review: Ged W. Haywood was very kind to review and correct the debug chapter. 03.04.2000 ver 1.21 * help: updated the mod_perl list subscription info, added the advocacy list info. * download: HA section - added more links (Robin Berjon, Gerd Knops) * strategy: added a new section "When One Machine is not Enough for SQL DB and mod_perl" (Vivek Khera, Jeffrey W. Baker, John Armstrong, Mike Miller, Leslie Mikesell, Tom Brown, Ed Phillips, Marko van der Puil) Special thanks to Jeffrey for working on the this section before it went into the Guide. * perfomance: added the section "Memory Swapping is Considered Bad" * modules: added the Apache::GTopLimit and Apache::Watchdog::RunAway modules description * performance: new section "Is my Code Shared" * download: added links to DB sites and "Low-Cost Unix Database Differences" comparison page. * config: new section "Enabling Remote Server Configuration Reports" * performance: new section "Calculating Real Memory Usage" * scenario: mod_proxy section has been rewritten and extended with lots of OS specific information (Joshua Chamas, Oleg Bartunov, Gerald Richter, Radu Greab, Peter Haworth, Vivek Khera) * performance: rewritten "Object Methods Calls Versus Function Calls" and splitted into the original section and "Imported Symbols and Memory Usage" (James G Smith, David Mitchell, Doug, Matt Sergeant, Bill Moseley, Autarch) * performance: added "Reducing the Number of stat() Calls" (Steve Reppucci) * install: added a note of how to force CPAN shell to install mod_perl when the same version is already installed. * scenario: added "mod_rewrite Examples" (Vivek Khera, Tom Mornini) * databases: added "Optimize: Run Two SQL Engine Servers" (Pascal Eeftinck) * snippets: added "Using DESTROY to Finalize Output" with solutions to redirection loghandler fixes (Michael Blakeley) * scenario: added to the section "One Plain and One mod_perl enabled Apache Servers" --target option to make the ./configure stage somewhat simpler. (James Furness) * snippets: added 2 modified versions of the mysql backup/restore scripts to work with 3.22.30+ (Ward Vandewege) * Moved complete files, previously enlisted in the text, to the external files. This makes the browsing faster when the files are very big. Added new POD tag =code to create the link to the external file at the pod2html conversion stage * review: Ged W. Haywood was very kind to review and correct the following chapters: control, install * performance: in "Forking and Executing Subprocesses from mod_perl" fixed a few typos in code. (Anthony D. Ettinger, Matt Sergeant and Edwin Pratomo) 02.09.2000 ver 1.20 * I've created a mod_perl_guide package and now it's available from CPAN! So when a new version gets released you just open your CPAN shell and do: % perl -MCPAN -eshell cpan> install mod_perl_guide All the POD sources and build scripts has moved to this distribution, get them from CPAN. * There is no more PostScript file book style distribution. A better PDF version has replaced it (suggested by Andrew Ford). Note that you can use gv (ghostview) to view pdf files, if you don't have a free acroread installed. Or you can always use 'pdf2ps' utility to convert it back to PS. BTW this release's PDF file consists of 481 Letter format pages. * install: rewritten "What Compiler Should Be Used to Build mod_perl?" * performance: added "Measuring the Subroutines Memory Usage" * install: added "using http://localhost/perl-status?hooks" to check what hooks where enabled during the build process. * debug: extended the "Looking inside the server" section with new info about Apache::Status, mod_status and Apache::VMonitor * snippets: added "Emulating the Authentication Mechanism" (Eric Cholet) * troubleshooting: runtime: added "Can't call method "register_cleanup" (CGI.pm)" (Doug, Nick Tonkin) * snippets: added "Setting PerlHandler Based on MIME Type" (Doug) * install: .makepl_args.mod_perl in $HOME, otherwise makepl_args.mod_perl (no leading dot) (Ask Bjoern Hansen) * databases: completed the DBI trace info (Doug Kyle) * modules: added and extended the Apache::Registry{BB|NG} sections (Doug) * config: added "debugging sections" (Doug) * modules: added a ref to "Apache::RedirectLogFix" (Doug) * snippets: added "Passing Notes Between mod_perl and other (non-perl) Apache Modules" (David Harris) * snippets: added "mod_rewrite Based On Query String and URI Implemented in Perl" (Darren Chamberlain) * config: added "Knowing the proxy_pass'ed Connection Type" (Geoff Crawshaw) * perl: the long time ago added regexp section "lifted" from mod_perl_traps.pod was written by David Landgren and I apologize for not stating it here (I didn't know it was David who wrote it). Now everything is in its place. * perl: added a workaround to make FindBin work under mod_perl (Joao Fonseca) * install: "make test troubleshooting": added the 'localhost' entry existance in '/etc/hosts' verification. * debug: explained the confusion about Sys::Signal and SIGALRM (was already solved internally) (Doug) * perl: John Hyland and Kavitha have pointed out a few typos of mine :) * dbm: mentioned DB_File::Lock and Tie::DB_FileLock modules and added a summary of all available dbm lock wrappers ripped of from the DB_File::Lock manpage. (David Harris) * installation: APACHE_PREFIX works only if APACI_ARGS is used (Joe Slag) * databases: fixed sql_escape from My::DB module's example (Yann Kerhervé) * databases: starting from Apache::DBI 0.84 Apache::DebugDBI is discarded. (Mike Depot) * debug: added the "PERL_DEBUG=1 Build Option" * debug: added the "PERL_DESTRUCT_LEVEL Environment Variable" (Doug) * databases: updated the DBI wrapper module * install: added to the troubleshooting section the solution to 'PL_perl_destruct_level errors' problem, which happened during the mod_perl build process. * review: Ged W. Haywood was very kind to review and correct the following chapters: frequent, perl, performance (!), scenario (!) * perl: rewritten "Tracing Warnings Reports" section * porting: fixed a bad mistake in the code that prints header only once in the "Generating correct HTTP Headers" section. Added more material about headers as well. * config: added "Options Values Merging" section * config: the chapter was partially rewritten and reorganized * config: completed the "Apache Restarts Twice On Start" section 12.19.99 ver 1.19 * all.html has gone (all htmls in one) -- it became more than 1Mb, too big - use the PS version instead * reorg: moved the "perl reference" chapter to be one of the first ones, because it should be read first. Moved the strategies and implementations toward the middle. * snippets: started "Code Unloading" as hinted by Doug. * porting: updated "Output from system calls" (Doug) * porting: fixed the "\n\n" vs. "\r\n\r\n"(Philip Newton) * debug: added "Debugging when Server Crashes on Startup before Writing to Log File" (Cliff Rayman) * snippets: added "Redirecting While Maintaining Environment Variables" (Vivek Khera) * troubleshooting: added "libexec/libperl.so: open failed: No such file or directory" (Christophe Dupre) * performance: added "Upload/Download of Big Files" (Ken Williams) * install: added a reference to "Static debian package" (David Huggins-Daines) * troubleshooting: added Windows: "Apache::DBI and PERL_STARTUP_DONE_CHECK" (Gerald Richter, Randy Kobes) * performance: added KeepAlive notes (Craig, Pascal Eeftinck) * performance: added HTML::Mason notes (Pascal Eeftinck) * porting: added new "die() and mod_perl" * porting/perl: moved most of the perl specific reference material into perl.pod removing duplications of this material on the way and replacing it with pointers to perl.pod * performance: rewritten "Object Methods Calls Versus Function Calls" * porting: FindBin is not mod_perl compatible (Andrei A. Voropaev, Joao Fonseca) * scenario: denoted the ProxyReceiveBufferSize limit by SO_RCVBUF in kernel (Vivek Khera) and kern.ipc.maxsockbuf=2621440 on BSD (Oleg Bartunov) * snippets: added "mysql backup and restore scripts" * snippets: added "Subclassing Apache::Request example" * snippets: added "CGI::params in the mod_perl-ish way" * debug: added "Using print() and Data::Dumper for Debugging" * snippets: started a "Sending email from mod_perl" topic * control: Preparing for Machine Reboot * download: added more load ballancing URLs * performance: added "Tuning with httperf" * intro: added "High-Profile Sites Running mod_perl" (Rex Staples) * review: Ged W. Haywood was very kind to review and correct the following chapters: start, intro, strategy, porting (!), databases, dbm, security. * install.pod: perl Makefile.PL troubleshooting - added "A test compilation with your Makefile configuration failed..." and "missing/misconfigured libgdbm.so" (Tom Brown and Steve Willer) * install.pod: make troubleshooting "unrecognized format specifier for..." during the build process (Scott Fagg) * porting: a bug in a script from "Exposing Apache::Registry secrets" spotted and fixed (John Deighan) * install.pod: integrated the "manual mod_perl build process" remarks and patch (Robin Berjon) * install.pod: don't put mod_perl sources in a sub-dir of Apache sources. It wouldn't build! (Ask Bjoern Hansen) * review: Dale Couch was very kind to review and correct the following chapters: porting 11.13.99 ver 1.18 * An almost complete rewrite of debug.pod: (Integrated Doug's debugging article at perlmonth.com) Curing The "Internal Server Error" Helping error_log to Help Us The Importance of Warnings diagnostics pragma Monitoring the error_log file Hanging processes: Detection and Diagnostics An Example of the Code that Might Hang the Process Detecting hanging processes Determination of the reason Handling the 'User pressed Stop button' case Detecting Aborted Connections The Importance of Cleanup Code Critical Section Safe Resource Locking Cleanup Code Handling the server timeout cases and working with $SIG{ALRM} Watching the server Configuration Usage Compiled Registry Scripts section seems to be empty. Sometimes script works, sometimes does not Code Debug Locating and correcting Syntax Errors Using Apache::FakeRequest to Debug Apache Perl Modules Finding the Line Number the Error/Warning has been Triggered at Using print() Function for Debugging The Importance of Good Coding Style and Conciseness Introduction into Perl Debugger Interactive Perl Debugging under mod_cgi Non-Interactive Perl Debugging under mod_perl Interactive Perl Debugging under mod_perl Interactive Perl Debugging under mod_perl and ptkdb Debugging core Dumping Code Apache::Debug Debugging Core Dumps Debug Tracing gdb says there are no debugging symbols Debugging Signal Handlers ($SIG{FOO}) Code Profiling Devel::Peek How can I find if my mod_perl scripts have memory leaks Debugging your code in Single Server Mode * A complete rewrite of install.pod: (Integrated the INSTALL.* docs from the mod_perl distribution) Installing mod_perl in 10 Minutes and 10 Command Lines The Gory Details Sources Configuration (perl Makefile.PL ...) Configuration parameters APACHE_SRC DO_HTTPD, NO_HTTPD, PREP_HTTPD Callback Hooks EVERYTHING PERL_TRACE APACHE_HEADER_INSTALL PERL_STATIC_EXTS PERL_MARK_WHERE APACHE_PREFIX APACI_ARGS Reusing Configuration Parameters Discovering whether some option was configured Using an alternative Configuration file mod_perl Building (make) make Troubleshooting undefined reference to 'Perl_newAV' Built Server Testing (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 Installation (make install) Building Apache and mod_perl by Hand Installation Scenarios for Standalone mod_perl The All-In-One Way The Flexible Way Build mod_perl as DSO inside Apache source tree via APACI Build mod_perl as DSO outside Apache source tree via APXS Installation Scenarios for mod_perl and Other Components mod_perl and mod_ssl (+openssl) mod_perl and mod_ssl Rolled from RPMs mod_perl and apache-ssl (+openssl) mod_perl and Stronghold Note For Solaris 2.5 users mod_perl Installation with CPAN.pm's Interactive Shell Installing on multiple machines using RPM, DEB and other packages to install mod_perl A word on mod_perl RPM packages Getting Started Compiling RPM source files Mix and Match RPM and source Installing a single apache+mod_perl RPM Compiling libapreq (Apache::Request) with the RH 6.0 mod_perl RPM Installing separate Apache and mod_perl RPMs Testing the mod_perl API Installation Without Superuser Privileges Installing Perl Modules into a Directory of Choice Making Your Scripts Find the Locally Installed Modules CPAN.pm Shell and Locally Installed Modules Making a Local Apache Installation Actual Local mod_perl Enabled Apache Installation Local mod_perl Enabled Apache Installation with CPAN.pm Automating installation How can I tell whether mod_perl is running Testing by checking the error_log file Testing by viewing /perl-status Testing via telnet Testing via a CGI script Testing via lwp-request General Notes Should I rebuild mod_perl if I have upgraded my perl? Perl installation requirements mod_auth_dbm nuances Stripping apache to make it almost perl-server Saving the config.status Files with mod_perl, php, ssl and Other Components Should I Build mod_perl with gcc or cc? OS Related Notes * databases: added "Debugging code which deploys DBI" * porting: added "STDIN, STDOUT and STDERR streams" * advocacy: added "A summary of perl/cgi discussion at slashdot.org" * snippets: added "Terminating a child process on Request Completion" (Doug) * troubleshooting: added "Apache.pm failed to load!" (Doug) * snippets: added "Reading POST Data, then Redirecting" (Doug) * snippets: added "Cache control for regular and error modes" (Cliff Rayman) * performance: added "Be carefull with symbolic links" (the same script compiled twice) * install: new "apache/mod_perl/mod_ssl Rolled from RPMs Scenario" (Stephane Benoit) * porting: 'use subs (exit)' typo fixed (Chris Nokleberg) * warnings.pod was renamed to troubleshooting.pod and now it's categorized by the following sections: Building and Installation Configuration and Startup Code Parsing and Compilation Runtime Shutdown and Restart * porting: the following sections were moved to debug.pod: "Finding the Line Number the Error/Warning has been Triggered at", "Turning warnings ON", "diagnostics pragma" * porting: rewritten "Comman line Switches (-w, -T, etc)" * performance: "Forking or Executing subprocesses from mod_perl" updated with another CHLD sighandler using WNOHANG to reap zombie processes (Lincoln Stein) * install: updated "Testing via a CGI script" (Geoffrey S Young) * porting: updated "Terminating requests and processes, exit() function" with info about post_request termination, Apache::SizeLimit and Apache::GTopLimit * perlformance: links from http://www.realtime.net/~parkerm/perl/conf98/index.htm and http://www.realtime.net/~parkerm/perl/conf98/sld006.htm were dead (I removed them :( (Peter Skov) * snippets: added "Caching the POSTed Data" (Doug) * install: "Compiling libapreq with mod_perl RPM" reviewed and corrected (Geoffrey S Young) * status.pod has been eliminated and absorbed by debug.pod where it belong * Fixed pod translator. Now it handles correctly C<$r-Emethod> encodings. (Andreas Koenig) 10.16.99 ver 1.17 * intro: CREDITS section was updated with the long list of contributors!!! Thank you all!!! If I've missed your name, please let me know!!! * control: added "Safe Code Updates on a Live Production Server" * control: added "An Intentional Disabling of Live Scripts" * scenario: added a big new section "One Light and One Heavy Servers where ALL htmls are Perl-Generated" (Wesley Darlington) * dbm: David Harris has detected a corruption with the suggested locking methods in the Camel book and DB_File man page (at least before the version 1.72). They are flawed and if you use them in the environment where more than one process modify the dbm file, it can get corrupted!!! I've modified the DB_File::Lock module to fix the problem by integrating the previously written DB_File::Wrap and the module David wrote (David Harris) * snippets: added "Sending multiply cookies with Perl API" (Rick Myers) * install: added a big section "using RPM, DEB and other packages to install mod_perl" (Geoffrey S Young, David Harris) * install: added "Automating installation" - James G Smith's Apache Builder script * install: added a new section "using CPAN to install mod_perl" * performance: extended the "Forking or Executing subprocesses from mod_perl" with information and code to avoid zombies. * performance: added a converted to pod "Jeff's guide to mod_perl database performance" (Jeffrey W. Baker) * new chapter: "Correct Headers" contributed by Andreas Koenig!!! * help: updated the link to DBI homepage (hermetica has gone) * performance: added sizing benchmarks of CGI.pm's imported symbols. (CGI.pm's object methods calls vs. function calls) * porting: fixed a typo with local() and Special variables (Andrei A. Voropaev) * snippets: fixed a taint problem in the sample error_log display script.(John Walker) * install: added "Should I Build mod_perl with gcc or cc" (Tom Hughes) * warnings: added to the troubleshotting section "Missing right bracket at line " with a link to the item explaining that in porting.pod ("__END__ and __DATA__ tokens") (Eric Strovink) * install: added a tip of saving config.status files for each module build (php. mod_perl, ssl) for a later easier reuse. (Dave Hodgkinson) * performance: added clarification to "PerlSetupEnv Off" item (Doug) * snippets: added "Passing environment variables between handlers" (Doug) * warnings: added "Can't locate loadable object for module XXX" (Doug) * config: corrected the section dump typo (Gerald Richter) * scenario: corrected the snippet to extract the client IP from the X-Forwarded-For header to use headers_in instead of the obsolete header_in (Oleg Bartunov) * scenario: added a note about "Ben Laurie's Apache-SSL setting REMOTE_ADDER instead of X-Forwarded-For header (Jie Gao) * performance: started "Analysis of SW and HW Requirements" (Jeffrey W. Baker) * warnings: clarification of "rwrite returned -1" (Eric Cholet) * warnings: added "Invalid command 'PerlHandler" (Doug) * debug: started "Apache::Debug" and Carp::confess("init") (Doug) * install: "undefined reference to 'Perl_newAV'" documented (Doug) * modules: added a clarification about Apache::PerlVINC (Doug) * warnings: updated the "Callback Called Exit & -D PERL_EMERGENCY_SBRK" (Doug) * databases: added $Apache::DBI::DEBUG = 2 (instead of '1') for ver 0.84+ (Edmund Mergl) * performance: added "Caching prepare() statements" + rolling your own Apache::DBO code (Jeffrey Baker) * porting: replaced "Apache::Registry::handler" with "Apache::Registry". It caused problems to some of the users (Daniel W. Burke) * performance: added "Increasing the shared memory with mergemem" (no real info but a link to the util's site. Please take a look and submit your opinions) (Doug Bagley) * snippets: added "Redirect a POST request, forwarding the content" (Eric Cholet, Doug) * performance extended the "Using $|=1 under mod_perl and better print() techniques" with notes about rflush() * shuffled many items around to help more intuitive search of the them * performance: added "Cached stat() calls" 09.26.99 ver 1.16 * Many little things fixed, rewritten - didn't worth listing them all here. * index.html: added another search box for only mod_perl FAQs and the guide provided by perlreference.com * config: added a note about Apache restarting twice on start * warnings: added "syntax error at /dev/null" - broken /dev/null (Doug) * porting: added "Special Perl Variables" using local() * multiuser: Added the considerations not to let users to execute their CGI scripts inside mod_perl server because of file permissions (non-mod_perl problem) and a possibility to hijack a DBI connection from Apache::DBI pool of cached connections (Peter Galbavy) * install: added "Is it possible to tell whether some option was included" nm() hints (Doug) * performance: new "PerlSetupEnv Off" (Doug) * porting: new section "Passing and preserving custom data structures between handlers" (Ken Williams) * security: "OK, AUTH_REQUIRED.and FORBIDDEN" in authentication phase. (Eric Cholet, Jason Bodnar) * porting: rewrote the "Generating correct HTTP Headers" section, to talk about HEAD requests, PerlSendHeader, Perl API to handle the headers generation, Cookie headers, closure methods to send headers only once. * Purifications: I'm very grateful to the people who take their time to help me to improve the guide's readablility. This time Richard A. Wells and Frank Schoeters submitted a few corrections to the text. Keep these corrections coming. Thanks! * porting: extended the "Forking and Starting Sub-processes with mod_perl" section (Les Mikesell, Randal L. Schwartz ) * porting: Wrote a whole new section "Configuration Files: Writing, Modifying and Reloading.", which consist of 3 big parts: Writing Configuration Files Reloading Configuration Files Dynamically updating configuration files * scenario: updated the X-Forwarded-For> section with notes of non-reliability. (Ask Bjoern Hansen, Vivek Khera) * porting: started the "Sharing variables between processes" section (Eric Cholet) * config: dumping the configuration by sections (Eric Cholet) * performance: prepare_cached() in persistent connections. * help.pod: updated a link to Jefferey W. Baker's DBI examples (Jefferey W. Baker) * a list of mailing list archives was updated (Andreas J. Koenig, Jan Peter Hecking, Matthew Darwin, Christof Damian, Geoffrey S Young) * debug.pod: "Spinning httpds" section from mod_perl.pod * config.pod: have stolen the sections "PERL METHOD HANDLERS", "STACKED HANDLERS" and "Perl*Handlers" from mod_perl.pod * performance.pod: noted the DTWO_POT_OPTIMIZE and -DPACK_MALLOC Perl Options from perl5004delta.pod relevant to mod_perl * config.pod: wrote sections "PerlModule and PerlRequire directives", and Perl*Handlers. * install.pod: "skipping test on this platform" while 'make test' explained. (Doug) * warnings.pod: syntax error at /dev/null, explained (Doug) * started to work on intro.pod to make clear out the differences between Perl API, Apache::Registry, Apache::PerlRun. * install.pod: added "mod_auth_dbm nuances" an old notice from mod_perl_traps page * porting.pod: Added the explanation of why you cannot use C<__END__> or C<__DATA__> within C scripts. * Removed the Cyan background from the postscript version of the guide. I liked the light grey background when the guide was printed on the B&W printer, but yes it uses too much toner - so it's gone :) 08.17.99 ver 1.15 * Richard A. Wells has kindly reviewed and corrected the following pods: advocacy.pod download.pod snippets.pod status.pod browserbugs.pod intro.pod start.pod * security.pod : added "Forcing reauthenticating" section * index.pod : Added a link to http://www.perlreference.com/mod_perl/ * help.pod : Added links to modperl.sourcegarden.org and http://www.perlreference.com/mod_perl/ * performance.pod: a little fix to the crashme script (Jay J) * Updated the porting.pod sections: "Sometimes it wors, sometimes doesn't", "Script's name space" and other as well * config.pod: updated sections (how to dump the sections (Eric Cholet) and how to use the /perl-status for doing that. * hardware.pod: David Landgren did a great job of reviewing, suggesting and correcting the OS/Hardare chapter! * Andreas J. Koenig pointed out that it's unfair to mention eddieware without the others.. I agree Andreas! hardware.pod and download.pod were updated to point to "High-Availability Linux Project" site... Eddieware was removed :) * download.pod: now guide hints on where to find Apache::Request (libapreq-x.xx.tar.gz) - on Philip Jacob request * config.pod: a few small typos (John Milton) * databases.pod: Matt Arnold pointed out a problem with connect_on_init if the database server is down. I've added a warning. * porting.pod: Cleared out the confusion with StatINC and @INC issue * perl.pod: Added a section that reveals the useful perldoc options * performance.pod: Added the explanation of the Apache::Leak example (Cliff Rayman) * databases.pod: Added the explanation of the "skipping connection cache during server startup", when the connection is attempted to be opened in the parent process. (Edmund Mergl) * debug.pod: started the "Debugging Core Dumps" item (Doug) * performance.pod: added the reference to Apache::RegistryBB, for those who want to save the little overhead of the stat() call that is being executed under Apache::Registry. (Doug) * modules.pod: added Apache::RegistryBB (Doug) * porting.pod: covered the issue of Apache/Work/Foo/Bar.pm collision with Apache/Work/Foo.pm if the former is being loaded first (Doug) * Apache::Leak considered to be non-friendly, added a reference to B::LexInfo (Doug) * porting.pod: "Passing ENV variables to CGI" added clarifications for %ENV setting/passing mechanism in mod_perl (Doug) * performance.pod: started a new subsection - shared memory (what, how much, where) * modules.pod and porting.pod: added an Apache::LogSTDERR module to solve the syslog problem(Doug) * porting.pod: Reloading handlers trick (Doug) 07.3.99 ver 1.14 * porting.pod: added "Exposing Apache::Registry secrets, closures, multiserver mode". * A complete review, which included corrections, verifications, extensions and clarifications was done to the following pods during the preparation of the tutorial for the 3rd apache conference: start.pod intro.pod porting.pod performance.pod strategy.pod scenario.pod config.pod install.pod control.pod databases.pod multiuser.pod help.pod 06.19.99 ver 1.13 * While working on presentation discovered a wonderfull 'html2ps' utility (http://www.tdb.uu.se/~jan/html2psug.html) - so now we have a real mod_perl book in PostScript !!! (cross references aren't working yet) * hardware: added a reference to eddieware * performance.pod: extended the Apache::Resource section (Doug) * performance.pod: Added a reference to httperf benchmark tool. * I made many little changes all over the guide, while preparing a subset of material for the upcoming apache/perl conference tutorial * performance.pod: added some clarifications to "Preload Perl modules at server startup" section - regarding CGI::compile * advocacy.pod: A complete rewrite to communicate the ideas differently. Now it displays a positive, motivational and concise perspective on the same ideas. (by Randy Harmon) * strategy.pod: modifications related to memory sharing with Apache, mod_proxy section (Ask Bjoern Hansen) * scenario.pod: Added the missing implementation of "Standalone mod_perl Enabled Apache Server"+configuration, which is temporarely located at the same chapter. * More pods have been purified by Steve Reppucci (performance.pod). 06.05.99 ver 1.12 * install.pod: added "Should I rebuild mod_perl if I have upgraded my perl?" * scenario.pod: explained the long termed bug with APACI_ARGS, csh vs. sh issue. * databases.pod: added "mysql_use_result vs. mysql_store_result" (Michael Hall, Ken Williams, Vivek Khera) * config.pod: added "Logical grouping of Location, Directory and FilesMatch directives" (Daniel Koch) * config.pod: added "The confusion with use() clause in startup" file (Mike Fletcher) * config.pod: added "The confusion with defining globals in startup" file * performance.pod: extended the Devel::DProf notes with Apache::DProf * started a new advocacy.pod: mod_perl advocacy * install.pod: "Stripping apache to make it almost perl-server" (Jeffrey W. Baker, Randal L. Schwartz,Robin Berjon) * modules.pod, config.pod : added Doug's Apache::PerlVINC to set a different @INC perl location * install.pod: covered an installation problem of: "mod_perl.c is incompatible with this version of apache" (Doug) * databases.pod: added "Opening a connection with different parameters" (Jauder Ho, Edmund Mergl) * performance.pod. modules.pod - added Apache::GzipChain to cut down download times * debug.pod: added some snippets from Doug's replies showing strace and Devel::Peek in action * updated obvious.html#Reloading_only_specific_files - some code improvements (Ken Williams) * debug.pod: added "Debugging Signal Handlers ($SIG{FOO})" which covers the latest $SIG{ALRM} changes and Doug's Sys::Signal module to overcome the handler restore problem with other signals. (Doug) * strategy.pod: mod_proxy and http accell sections were extended by notes from Joshua Chamas. * warning.pod: noted a 'rwrite returned -1' fix in CVS version * obvious.pod: added "Additional reading references" to "my() scoped variable in nested subroutines" including a pointer to an article by Mark-Jason Dominus about how Perl handles variables and namespaces, and the difference between `use vars' and `my'. * hardware.pod: applied some addition and changes. * debug.pod: added "Monitoring error_log file" * scenario.pod: added a complete definition of ProxyReceiveBufferSize, its buffering functionality. * More pods have been purified by Steve Reppucci (hardware.pod, strategy.pod). Thanks to Steve English speakers can read my scribbles as well :o) 05.17.99 ver 1.11 * new hardware.pod: added a "Operating System and Hardware Demands" (Dean Fitz reviewed it and made lots of fixes!!! Thanks) * started a new security.pod "Protecting Your Site" to explain security hazards and to show some configuration setups and code snippets. * security.pod: explained the Authentication and Authorization terms * security.pod: "Non authenticated access for internal IPs, but authenticated by external IPs" (Eric Cholet) * scenario.pod: added "HTTP Authentication with 2 servers + proxy" (Mark Mills, Russell D. Weiss) * scenario.pod: added some DSO building notes (Guy K. McArthur) * porting.pod: added "Generating correct HTTP MIME Headers" as suggested by Alex Krohn * config.pod: added "Running 'apachectl configtest' or 'httpd -t'" (Doug) * porting.pod: added "Passing ENV variables to CGI" (Doug) * Updated: "Finding the line number the error/warning has been triggered at" at porting.pod * Added the info about ProxyReceiveBufferSize in scenario.pod, mod_proxy section. (Rauznitz Balazs) * added to config.pod: Configuration Security Concerns (Gunther Birznieks) * completely rewrote the start.pod (the English was horrible :( * updated help.pod with squid help URLs 05.08.99 ver 1.10 * control.pod: SUID start-up scripts (Lincoln Stein) * porting.pod: Forking subprocesses from mod_per (Philp Gwyn) * added to performance.pod: CGI.pm\'s object methods calls vs. function calls * new pod: browserbugs.pod - Workarounds for some known bugs in browsers. added: Preventing QUERY_STRING to get corrupted with &entity key names. added: IE 4.x does not re-post data to a non-port-80 URL * strategy.pod: updated notes about squid (Andreas J. Koenig) * strategy.pod and scenario.pod started the ProxyPass sections (Mark Mills, Ken Williams, Ask Bjoern Hansen) * wrote a code to validate a pod L<> directive, by first building a hash of all available achors and hash of all L<> directives, then reporting the broken links! This is cool! TomC will never accept the patch to his Pod2Html.pm :( So there is no broken links anymore, unless I forgot to run the checker :) * start.pod now contains an overview of the guide. The previous content migrated to install.pod and download.pod. Part of the scenario.pod moved to install.pod. * people still report problems with CSS I use, I made more tweaking by deleting almost all styles. Seems people are missing some basic fonts families and complaining about being unable to read the text. * strategy.pod: using thttpd instead of plain apache (Rauznitz Balazs) * scenario.pod: was splitted into strategy.pod and scenario.pod. strategy.pod now only talks about different approaches, while scenario.pod provides the building and configuration details. strategy.pod tries clearly to state the pros and cons of each approach (please review) * Introduced a new dbm.pod: mod_perl and dbm files (please review) * Introduced a new databases.pod: mod_perl and Relational Databases (please review) * The whole expanded table of contents now can be found in index.html - (index.html now being generated by script). Should make navigation much easier. * The last html sources file has gone, now all src files are pods. * Improved search engines requirements: Extended and * Improved navigation : added Next, Main. Previous links. * Added another list archive (help.html): http://www.geocrawler.com/lists/3/web/182/0/ (Eric Cholet) * obvious.pod: "Setting environment variables for scripts called from CGI." (Lincoln Stein, Doug MacEachern) * extended the "Using $|=1 under mod_perl and better print() techniques" at performace.pod. 04.19.99 ver 1.09 (1/2) * guide.tar.gz and guide-src.tar.gz were outdated, now they are synced * Fixed a huge number of typos (with help of speller :), I'm sure there are still many that speller didn't catch - guess people are regular to read badly written textbooks, since just a few told me about them :( If you spot such, please, do not hesitate and tell me! * Lupe Christoph suggested to apply changes to the main page. It's done. Also as suggested by Lupe linked the text "Writing Apache Modules with Perl and C" a link to http://www.modperl.com/ . * Numerous typos were spotted by Andreas J. Koenig and gave me an idea to run speller :) 04.17.99 ver 1.09 * added to warnings.pod: explained "incorrect line number reporting in error/warn log messages" * added to scenario.pod: clarification about 2 different config files in the 2 servers scenario (David Livingstone) * added to scenario.pod: started "mod_perl as DSO" section - almost empty yet :( anyone with DSO experience? * added to config.pod: started the mod_perl as DSO section * updated config.pod: added how $Apache::Registry::NameWithVirtualHost bug in older versions can be turned into a feature (Doug) * added to performance.pod : Memory sharing (Leslie Mikesell) * updated warning.pod: server reached MaxClients setting * updated performance.pod : MaxClients reached ( Nick Tonkin ) * updated start.pod: "How can I tell whether mod_perl is really installed" - added httpd -l * modified scenario.pod: Made little changes to make the installation process less confusing (Pete Harlan) * obvious.pod: updated "Handling the server timeout cases" - $SIG{ALRM} to not restore the original underlying C handler. Pointed to try a Sys::Signal as a remedy (Doug) * new in multiuser.pod: ISPs providing mod_perl services - a fantasy or reality. (Notes from Mark Mills, Russell D. Weiss) * new in multiuser.pod: Virtual Hosts in the guide * new pod : multiuser.pod - mod_perl for ISPs. mod_perl and Virtual Hosts. * Added a link to the new book to the O'Reilly and Amazon.com sites. * debug.pod: added Apache::DB coverage * performance.pod: "Why you should not use $|=1 under mod_perl" (Doug, Randal) * debug.pod: "gdb says there are no debugging symbols" (Michael Hall) * config.pod: "the server no longer retrieves the DirectoryIndex files for a directory" (Andreas Grupp) * scenario.pod: added 'make test fails' when people use PREP_HTTPD=1 or don't use DO_HTTPD=1 (Doug) * removed the 'Mini' part from the guide's name, since it's growned enough to be not called mini any more. * modules.pod: added Apache::Request * modules.pod: added Apache::DBI * modules.pod: added Apache::Session (Jeffrey Baker) * new pod: modules.pod - to introduce Apache::* modules with small examples to rise curiosity to read the whole man page * new in scenario.pod: "mod_perl and proxy server" Incentives Squid proxy server in httpd accelerator mode Running a squid and 2 webservers scenario Running a squid and 1 mod_perl apache server scenario (Reviewed and modified according to notes by Richard Dice, Andreas J. Koenig, Eric Cholet, Jeremy Bailin, David Landgren) * Added to scenario.pod: 'Publishing port numbers different from 80' (originally by Ken Williams, forwarded by Eric Strovink) * config.pod: new section "Configuring Apache + mod_perl with mod_macro" contributed entirely by Eric Cholet (I have edited it a bit :). 04.03.99 * Rewritten the CREDITS section of the intro.html. I hope I didn't miss anyone, if I did please tell. Lets feed the ego :) * The guide now looks much better with StyleSheets (Nathan Vonnahme) * added to porting.pod : Filehandlers and locks leakages (Ken Williams, Doug) * added to obvious.pod: Handling the server timeout cases (Doug) * created new pod: perl.pod to cover some too frequently asked pure perl questions: opened up with "Using global variables and sharing them between modules/packages" * Now the pod sources available online along with the resulting htmls and the scripts that generates them. * Added a summary of various mod_perl deploying schemas (1/1, 2/2, DSO and proxy). /scenario.html#More_mod_perl_deploying_schemas (Mark Mills) * created new frequent.pod for "Frequent mod_perl problems" as suggested by Eric Cholet, who said that problems like 'my() scoped variable in nested subroutines' come up so often on the list that should be stressed in the guide as one of the most important things to read/beware of. Since now it has only a few problems please suggest what other ones should go here. * obvious.pod rewritten : my() scoped variable in nested subroutines (Eric Cholet) * some typos fixes in intro.html, start.pod and scenario.pod (Garr Updegraff) * snippets.pod: Cookie handling code (Ed Park) * obvious.pod updated: Handling the 'User pressed Stop button' case. More hints (Eric Strovink) and apache 1.3.6 news (Henrique Pantarotto) * scenario.pod added : Is it possible to determine which options were given to modperl's Makefile.PL * More pods have been purified by Steve Reppucci (warning.pod, obvious.pod and porting.pod). He did so much work to make them readable, that I'm afraid to apply new changes to break all the beauty he made :) Thanks, Steve! 03.15.99 * Added a downloadable guide.tar.gz as someone requested * snippets.pod: Accessing variables from the caller's package (Ken Williams) * porting.pod: Redirecting mod_perl error_log messages to the browser - added an extensive example * control.pod: added hints - Preventing from modperl process to eat up all the disk's space, when it goes wild. (Andreas J. Koenig, Ulrich Pfeifer) * performance.pod: cleared out where one can get the 'ab' Apache Benchmark utility * warning.pod: covered - Evil things might happen when using PerlFreshRestart (Doug) * status.pod: covered - Compiled Registry Scripts section seems to be empty (Radu Greab) * warning.pod: covered - RegistryLoader: Cannot translate the URI... * scenario.pod: added a note: when using USE_APACI and APACHE_PREFIX, make install will run also the make install at Apache's source tree... (Doug) * debug.pod Getting some decent debug info when running under mod_perl (Doug) * ScriptAlias vs. Alias updated and explaned in config.pod. (Doug, Ask and Eric) * scenario.pod, intro.html, config.pod, control.pod and start.pod were purified by Steve Reppucci. Steve has fixed my incorrect English expressions and tenses, corrected some technical details! Enormous help, Steve! Thanks! If you see some incorrect English in the guide, don't hesitate to send an email to me. Thanks! 01.22.99 * new obvious.pod: Where do the warnings/errors go? * new index.html: added a search box * new snippets.pod: added error_log.pl script to fetch the latest logs from the server without telneting there * new snippets.pod: How to avoid printing the header more than once. * new snippets.pod: More on relative paths * upd start.pod: removed all 'latest version is', so the guide will not misguide people (Ken Williams) * upd config.html: removed redundant ;; (Ken Williams) * upd config.html: fixed the question/answer 'Is there a way to provide a different startup.pl file for each individual virtual' (Ken Williams) * upd help.html: a few links fixed (Peter Skov (UNIT)) * upd porting.pod: CORE::exit vs Apache::exit section update (Doug) * upd scenario.pod: note about importance make clean execution, because of possible binary incompability (1.3.3 vs 1.3.4) (Doug) * upd porting.pod: switches -w, -T in the shebang line (Doug) * upd debug.pod: tracing the PerlRequire's and PerlModule's as they are loaded (Doug) * add config.pod: Sometimes script from one virtual host calls the script with the same path from the second virtual host (Doug) * add performance.pod: how can I find if my modperl scripts have memory leaks (and where). (Doug) * help.html: added a section for DBI help (Jeffrey W. Baker) 12.28.98 * Updated the "Client hit STOP or Netscrape bit it" section, with new warning "[modperl] caught SIGPIPE in process" for ver 1.17 (new Apache::SIG) * Richard A. Soderberg spotted a few problems with name anchors in start.html (pod converter doesn't resolve the problem correctly) and ScriptAlias typos at config.html. * broken link to www-security-faq was spotted by Gunther Birznieks 12.20.98 * fixed: @INC vs %INC obvious.html#Using_Apache_StatINC (thank to Ken Williams) * new: Apache::SpeedLimit added to performance.html#Limiting_the_request_rate_speed_ * modified: register_cleanup in Registry scripts (END{} blocks) based on the last week tread * new: obvious.html#Handling_the_User_pressed_Stop_ * Found a bug in Pod::Html - it tries to convert HTTP::Foo alike tokens into hypertext link which breaks the code in the resulting html. Applied the patch to Pod::Html::VERSION 1.01 1119a1120 > (?! :) # don't convert HTTP::Foo and alike * Discovered that the guide is being searchable thru the http://www.apache.org/search.html added a link to index.html * Extended the control|Log_Rotation section (+Script from Randal) * control: HUP vs TERM vs USR1. I have asked for validation of this section, but received none... Added a note about slowness of termination (Robin Berjon) and possible way to speed it up (Frank D. Cringle). Added a mneumonics => numbers for SIGs (Marshall Dudley) * added the missing USE_APACI=1 in start.html#Mod_Perl (Thanks to Tzvetan Stoyanov) 12.13.98 * covered warning: rwrite returned -1 * covered warning: Client hit STOP or Netscrape bit it! * covered warning: Can't load '.../auto/DBI/DBI.so' for module DBI * covered porting: using format() * covered warning: child process 30388 did not exit, sending another SIGHUP * extended warning: Callback called exit All the above are based on the Doug's answers this weekend :) * new: config: Tuning MinSpareServers MaxSpareServers StartServers MaxClients MaxRequestsPerChild (actually a pointer to the next item) * new: performance: Tuning the Apache's configuration variables for the best performance Tuning with ab - ApacheBench Tuning with crashme script Choosing MaxClients Choosing MaxRequestsPerChild Choosing MinSpareServers, MaxSpareServers and StartServers Summary of Benchmarking to tune all 5 parameters ########################################################################## 12.08.98 * Lots of "little typos" fixed. Thanks to Evan A. Zacks, Eric Cholet and Nancy Lin ! * added a quote from DBI page, why $sth-rows; can't be used for rows counting. * fixed obvious.html#Compiled_Regular_Expressions href at porting.html Thanks to Richard Dice! * lots of little changes and add ons... 12.07.98 * Run a spell check. ispell and WWWebster were quite helpful :) * Added Richard Dice's notes about ways to see whether or not mod_perl is actually compiled into the server and working. "check the error_log file" (installation) * Added 'Is it possible to install mod_perl without root access?' section into Server Installation (scenario) page. * Added Perrin Harkins and Jonathan Peterson's notes about apache/mod_perl/embperl/DBI vs IIS/ASP/ADO * Added a CHANGES file (this one) * Added an 'all in one page', suitable for printing. Currently it's just an ordered cat(). In the future it might change :) 12.03.98 * First Release