Penguin
Diff: HowTophhttpdHOWTO
EditPageHistoryDiffInfoLikePages

Differences between current version and revision by previous author of HowTophhttpdHOWTO.

Other diffs: Previous Major Revision, Previous Revision, or view the Annotated Edit History

Newer page: version 3 Last edited on Thursday, October 21, 2004 5:34:26 pm by AristotlePagaltzis
Older page: version 2 Last edited on Friday, June 7, 2002 1:07:53 am by perry Revert
@@ -1,361 +1 @@
-PHHTTPD HTTP Accelerator HOWTO  
-!!!PHHTTPD HTTP Accelerator HOWTO  
-!Zach Brown  
-!David C . Merrill  
-  
-Copyright (c) 2000 by Zach Brown  
-  
-  
-  
-Copyright (c) 2001 by David C. Merrill  
-  
-  
-  
-2001-04-24  
-  
-  
-__Revision History__Revision 1.12001-04-24Revised by: DCMConverted to !DocBook 4.1 article, with some minor language cleanup.  
-Copyright passed from Zach Brown to David C. Merrill.Revision 1.02000Revised by: ZBInitial release.  
-  
-  
-  
-  
-  
-This document explains the use of the phhttpd http server  
-accelerator under Linux.  
-  
-  
-  
-As of the later 2.3 kernels, and offically in 2.4 and later, the TUX  
-http accelerator is included in the standard Linux kernel tree.  
-Therefore, this document should be considered obsolete for most users.  
-  
-  
-  
-  
-  
-  
-----; __Table of Contents__; 1. Copyright and License; 2. Introduction: ; 2.1. Architectural Overview; 2.2. Supported Systems; 3. Configuration File: ; 3.1. Overview; 3.2. Global Config Section; 3.3. Virtual Servers; 4. Logging: ; 4.1. Overview; 4.2. Configuration; 4.3. Format and Strange Behaviour; 5. Run Time Facilities: ; 5.1. Overview; 5.2. Log Rotating; 5.3. Status Reporting----  
-!!!1. Copyright and License  
-  
-This document is copyright 2000 by Zach Brown, and 2001 by David C. Merrill.  
-It is released under the GNU Free Documentation License, which is hereby incorporated  
-by reference.  
-  
-----  
-!!!2. Introduction  
-  
-phhttpd is an HTTP accelerator. It serves fast static HTTP fetches from a  
-local file-system  
-and passes slower dynamic requests back to a waiting server. It features  
-a lean networking I/O core and an aggressive content cache that help it  
-perform its job efficiently.  
-  
-----  
-!!2.1. Architectural Overview  
-  
-  
-phhttpd features a very slim I/O core. It does all its networking  
-work using non-blocking system calls driven by whatever event model  
-is most appropriate for the host operating system. This  
-allows a single execution context  
-to handle as many client connections as the event model dictates.  
-  
-  
-  
-phhttpd's job is to serve static content as quickly as it possibly  
-can. To do this it maintains a cache of content in memory. When  
-a request is serviced, phhttpd saves a reference to the on disk content  
-and whatever HTTP headers are dependent on the content. The next time  
-a request for this content is received, phhttpd can service it  
-very quickly. This cache can be prepopulated (populated at run time), or can  
-be built dynamically as requests come in. Its size may also be  
-capped by the administrator so that it doesn't overwhelm a system.  
-  
-  
-  
-phhttpd is a threaded stand alone daemon. The number of threads  
-is currently statically defined at run time. Incoming connections  
-are evenly balanced among the running threads, regardless of what  
-content they may be serving. Connections are served by the thread  
-that accepted them until the transfer is done.  
-  
-----  
-!!2.2. Supported Systems  
-  
-phhttpd is currently only expected to build and run on Linux  
-systems using glibc2.1 under a kernel that supports passing POLL*  
-information over real-time SIGIO signals. This means later 2.3.x  
-kernels or a 2.2.x kernel that has been patched.  
-  
-  
-  
-I badly want this to change. If you're interested in doing porting  
-work to other Operating Systems, please do let me know.  
-  
-----  
-!!!3. Configuration File  
-!!3.1. Overview  
-  
-phhttpd uses an XML config file format to express how it should behave  
-while running. More information on XML may be found near  
-http://www.w3.org/XML/  
-  
-  
-  
-phhttpd's configuration centers around the concept of virtual servers.  
-For us, a virtual server may be thought of as the merging of a document  
-tree and the actions phhttpd takes while serving that content.  
-  
-  
-  
-phhttpd.conf may be thought of as having two main sections.  
-The global section, which defines properties that are consistent  
-across the entire running phhttpd server, and multiple virtual sections  
-that describe properties of that only apply to a virtual server.  
-There will only be one global section while multiple virtual sections  
-are allowed.  
-  
-----  
-!!3.2. Global Config Section  
-  
-The global section defines properties of the running server that don't  
-apply to a single virtual server. It should be enclosed in  
-  
-  
-  
-  
-  
-  
-  
-  
-  
-__Global config entities__  
-  
-; cache max=NUM:  
-  
-Sets the maximum number of cached responses that will be held in memory. Each  
-cached responses holds a minimal amount of memory. More importantly, each  
-cached response holds an open file descriptor to the file with real content and  
-an mmap()ed region of that content. phhttpd will start pruning the cache when  
-it notices either of these two resources coming under pressure, but has no way  
-to easily deduce that its running low on memory. The administrator may set this  
-value to set an upper bound on the number of responses to keep in memory.  
-  
-; control file=PATH:  
-  
-This specifies the file that will be used to talk with __phhttpd_ctl__.  
-  
-; globallog file=PATH:  
-  
-This specifies the file to which global messages will be logged.  
-  
-; mime file=PATH:  
-  
-This specifies the file that contains the mapping of file extensions to MIME types. It should be of the form:  
-  
-text/sgml sgml sgm  
-video/mpeg mpeg mpg mpe  
-  
-; timeout inactivity=NUM:  
-  
-Controls various network connection timeouts. 'inactivity' sets the amount  
-of time that a connection can be idle before phhttpd will forcibly disconnect it.  
-inactivity defaults to , which lets the connections idle until TCP timeouts  
-take effect.  
-  
-; sendfile:  
-  
-Enabling this option tells phhttpd to use sendfile() rather than  
-write()ing from an mmap()ed region.  
-Avoiding calling mmap() will  
-shorten the amount of time it takes to build cached responses.  
-  
-  
-  
-----  
-!!3.3. Virtual Servers  
-  
-A Virtual Server can be thought of as the abstraction serving up a content tree  
-( "docroot" in __Apache__ speak). There are a set of attributes  
-that are used to define a virtual server. These attributes are used to decide which  
-virtual server will process a client's request. Then there are attributes which define  
-how the content is served.  
-  
-  
-  
- A virtual server must have a docroot. The virtual tag in the config  
-file has a docroot attribute that must be set.  
-  
-  
-  
-  
-`virtual docroot=PATHb  
-...  
-`/virtualb  
-There can be as many virtual sections in the configuration file as one likes.  
-  
-  
-  
-  
-  
-  
-  
-  
-  
-__Global Config Entities__  
-  
-; md5 :  
-  
-This enables the generation of the Content-MD5: header. This greatly increases the  
-cost of creating a cached response for this virtual, because the MD5 function must  
-be applied to the entire content of the response. Once the response is created, though,  
-there is no per-request overhead.  
-  
-; prepop :  
-  
-This will cause phhttpd to traverse the entire docroot at initialization time and prepare  
-cached responses for all the files it finds. This happens in the back ground during  
-normal operation, so there is no dramatic increase in the time it takes for phhttpd  
-to start serving connections.  
-  
-; name :  
-  
-This tag surrounds the string that will be used to identify the server. This string  
-will be compared to the Host: header given in the request from the client, or will  
-be compared to the 'host part' of the full URL if that was given. This will be  
-used in combination with the network address and port pair to determine if a request  
-should be served by a virtual server.  
-  
-; listen v4=DOT.TED.QU.AD port=PORT :  
-  
-This virtual server will be chosen to serve an incoming request if that request was  
-made to the network address specified in this entity. There can be as many of these  
-as one likes in a given virtual server, and '*' may be specified for either parameter to  
-indicate that all addresses or ports should match.  
-  
-; logs:  
-  
-The logs section of the virtual server define the per virtual log files that should  
-be written to during operation. See the following section on logging.  
-  
-  
-  
-----  
-!!!4. Logging  
-  
-"All kids love log!"  
-  
-----  
-!!4.1. Overview  
-  
-phhttpd maintains log buffers for each log it writes to. Logged events are put in  
-these buffers at reporting time rather than being immediately written to disk. These  
-logs are written as they are filled during normal operation, or at regular intervals.  
-This greatly reduces the performance impact of keeping detailed logs.  
-  
-----  
-!!4.2. Configuration  
-  
-phhttpd keeps interesting logs on a virtual server granularity.  
-You can specify which logs you wish to keep by including an entity  
-in the log section of a virtual server for each source you wish to log.  
-There is an entity for each source of logging, and attributes to that  
-entity define where it is logged.  
-It looks something like this:  
-`logsb  
-`LOGSOURCE mode=OCTALMODE file=PATHb  
-...  
-`/logsb  
-  
-  
-  
-mode is the octal permissions mode of the file that is  
-to be opened. As it is parsed by dumb routines, a leading 0 is highly recommended.  
-file is the file to which the logged events will be written.  
-The LOG_SOURCE is one of:  
-  
-  
-  
-  
-  
-accessSuccessfully answered requestsagentThe value given in the 'User-Agent' HTTP request headerrefererThe string given in the 'Referer' HTTP request header  
-  
-  
-  
-  
-  
-----  
-!!4.3. Format and Strange Behaviour  
-  
-phhttpd log entries are contained with a single line in a text file. They contain  
-the time the log entry was written, an opaque token that is associated with the connection  
-that caused the log entry, followed by the actual entry.   
-  
-  
-  
-The contents of the 'referer' and 'agent' log entries is simply the string  
-that was given with the header. The contents of the 'access' log is a little more  
-interesting. It has the decoded relative URL that was asked for, followed by the total bytes  
-that were transfered, and the time in seconds that it took to transfer.  
-  
-387f7a45 387f7a45800210ac8910500 /index.html - 2132   
-is an entry from an 'access' log.  
-  
-  
-  
-The first field is the time in seconds since the Unix epoch, a.k.a. time_t. The second field is associated with the client connection that caused the log  
-entry. It is constant for the duration of the connection, and is written to all the logs  
-entries, of whatever type, that are generated. This allows a log parser to do more complete  
-connection granularity analysis. As it happens, this opaque token is currently built up  
-of the time the client was connected, its remote and local network address, etc, but these  
-values most _not_ be parsed as they may change in the future.  
-  
-  
-  
-Entries generated by a thread will be written in chronological order. If, however,  
-multiple threads are sharing an output file the resulting entries may not be written  
-in chronological order. It is up to the parsing programs to use the 'time' field  
-to sort by, if they care about chronological order.  
-  
-----  
-!!!5. Run Time Facilities  
-!!5.1. Overview  
-  
-While phhttpd is running it listens to a 'control' socket for messages from the  
-administrator. The currently provided __phhttpd_ctl__ program allows  
-the administrator to minimally interact with phhttpd. This provides both control  
-and status reporting.  
-  
-  
-  
-__phhttpd_ctl__ always wants a ''--control'' argument  
-that specifies the control socket of the running phhttpd daemon. This should match  
-the `controlb tag specified in the config file.  
-  
-----  
-!!5.2. Log Rotating  
-  
-phhttpd can be told to rotate its logs so that existing logs may be processed.  
-  
-  
-  
-The ''--rotate'' argument to __phhttpd_ctl__ tells phhttpd  
-to rename the existing files to a unique name, open new files with the previously used names,  
-then close the renamed logs and start using the newly created files. __phhttpd_ctl__  
-will output the names of the newly created files which will be safe to use once the command  
-exits.  
-  
-  
-  
-The ''--reopen'' argument to __phhttpd_ctl__ tells phhttpd  
-to close the existing file logs and reopen the files with the filenames that were configured.  
-This implies that an external entity has moved the files to new names and wants phhttpd  
-to stop using them.  
-  
-----  
-!!5.3. Status Reporting  
-  
-The ''--status'' argument to __phhttpd_ctl__ tells phhttpd  
-to return a quick status blurb about the server. It contains miscellaneous information  
-about the running state of the server.  
+Describe [HowTophhttpdHOWTO] here