Chapter 2. Configuring Apache: the First Steps Section 2.1
Total Page:16
File Type:pdf, Size:1020Kb
Copyright Preface Who Wrote Apache, and Why? The Demonstration Code Conventions Used in This Book Organization of This Book Acknowledgments Chapter 1. Getting Started Section 1.1. What Does a Web Server Do? Section 1.2. How Apache Works Section 1.3. Apache and Networking Section 1.4. How HTTP Clients Work Section 1.5. What Happens at the Server End? Section 1.6. Planning the Apache Installation Section 1.7. Windows? Section 1.8. Which Apache? Section 1.9. Installing Apache Section 1.10. Building Apache 1.3.X Under Unix Section 1.11. New Features in Apache v2 Section 1.12. Making and Installing Apache v2 Under Unix Section 1.13. Apache Under Windows Chapter 2. Configuring Apache: The First Steps Section 2.1. What's Behind an Apache Web Site? Section 2.2. site.toddle Section 2.3. Setting Up a Unix Server Section 2.4. Setting Up a Win32 Server Section 2.5. Directives Section 2.6. Shared Objects Chapter 3. Toward a Real Web Site Section 3.1. More and Better Web Sites: site.simple Section 3.2. Butterthlies, Inc., Gets Going Section 3.3. Block Directives Section 3.4. Other Directives Section 3.5. HTTP Response Headers Section 3.6. Restarts Section 3.7. .htaccess Section 3.8. CERN Metafiles Section 3.9. Expirations Chapter 4. Virtual Hosts Section 4.1. Two Sites and Apache Section 4.2. Virtual Hosts Section 4.3. Two Copies of Apache Section 4.4. Dynamically Configured Virtual Hosting Chapter 5. Authentication Section 5.1. Authentication Protocol Section 5.2. Authentication Directives Section 5.3. Passwords Under Unix Section 5.4. Passwords Under Win32 Section 5.5. Passwords over the Web Section 5.6. From the Client's Point of View Section 5.7. CGI Scripts Section 5.8. Variations on a Theme Section 5.9. Order, Allow, and Deny Section 5.10. DBM Files on Unix Section 5.11. Digest Authentication Section 5.12. Anonymous Access Section 5.13. Experiments Section 5.14. Automatic User Information Section 5.15. Using .htaccess Files Section 5.16. Overrides Chapter 6. Content Description and Modification Section 6.1. MIME Types Section 6.2. Content Negotiation Section 6.3. Language Negotiation Section 6.4. Type Maps Section 6.5. Browsers and HTTP 1.1 Section 6.6. Filters Chapter 7. Indexing Section 7.1. Making Better Indexes in Apache Section 7.2. Making Our Own Indexes Section 7.3. Imagemaps Section 7.4. Image Map Directives Chapter 8. Redirection Section 8.1. Alias Section 8.2. Rewrite Section 8.3. Speling Chapter 9. Proxying Section 9.1. Security Section 9.2. Proxy Directives Section 9.3. Apparent Bug Section 9.4. Performance Section 9.5. Setup Chapter 10. Logging Section 10.1. Logging by Script and Database Section 10.2. Apache's Logging Facilities Section 10.3. Configuration Logging Section 10.4. Status Chapter 11. Security Section 11.1. Internal and External Users Section 11.2. Binary Signatures, Virtual Cash Section 11.3. Certificates Section 11.4. Firewalls Section 11.5. Legal Issues Section 11.6. Secure Sockets Layer (SSL) Section 11.7. Apache's Security Precautions Section 11.8. SSL Directives Section 11.9. Cipher Suites Section 11.10. Security in Real Life Section 11.11. Future Directions Chapter 12. Running a Big Web Site Section 12.1. Machine Setup Section 12.2. Server Security Section 12.3. Managing a Big Site Section 12.4. Supporting Software Section 12.5. Scalability Section 12.6. Load Balancing Chapter 13. Building Applications Section 13.1. Web Sites as Applications Section 13.2. Providing Application Logic Section 13.3. XML, XSLT, and Web Applications Chapter 14. Server-Side Includes Section 14.1. File Size Section 14.2. File Modification Time Section 14.3. Includes Section 14.4. Execute CGI Section 14.5. Echo Section 14.6. Apache v2: SSI Filters Chapter 15. PHP Section 15.1. Installing PHP Section 15.2. Site.php Chapter 16. CGI and Perl Section 16.1. The World of CGI Section 16.2. Telling Apache About the Script Section 16.3. Setting Environment Variables Section 16.4. Cookies Section 16.5. Script Directives Section 16.6. suEXEC on Unix Section 16.7. Handlers Section 16.8. Actions Section 16.9. Browsers Chapter 17. mod_perl Section 17.1. How mod_perl Works Section 17.2. mod_perl Documentation Section 17.3. Installing mod_perl — The Simple Way Section 17.4. Modifying Your Scripts to Run Under mod_perl Section 17.5. Global Variables Section 17.6. Strict Pregame Section 17.7. Loading Changes Section 17.8. Opening and Closing Files Section 17.9. Configuring Apache to Use mod_perl Chapter 18. mod_jserv and Tomcat Section 18.1. mod_jserv Section 18.2. Tomcat Section 18.3. Connecting Tomcat to Apache Chapter 19. XML and Cocoon Section 19.1. XML Section 19.2. XML and Perl Section 19.3. Cocoon Section 19.4. Cocoon 1.8 and JServ Section 19.5. Cocoon 2.0.3 and Tomcat Section 19.6. Testing Cocoon Chapter 20. The Apache API Section 20.1. Documentation Section 20.2. APR Section 20.3. Pools Section 20.4. Per-Server Configuration Section 20.5. Per-Directory Configuration Section 20.6. Per-Request Information Section 20.7. Access to Configuration and Request Information Section 20.8. Hooks, Optional Hooks, and Optional Functions Section 20.9. Filters, Buckets, and Bucket Brigades Section 20.10. Modules Chapter 21. Writing Apache Modules Section 21.1. Overview Section 21.2. Status Codes Section 21.3. The Module Structure Section 21.4. A Complete Example Section 21.5. General Hints Section 21.6. Porting to Apache 2.0 Appendix A. The Apache 1.x API Section A.1. Pools Section A.2. Per-Server Configuration Section A.3. Per-Directory Configuration Section A.4. Per-Request Information Section A.5. Access to Configuration and Request Information Section A.6. Functions Colophon Index Copyright Copyright © O'Reilly & Associates, Inc. Printed in the United States of America. Published by O'Reilly & Associates, Inc., 1005 Gravenstein Highway North, Sebastopol, CA 95472. O'Reilly & Associates books may be purchased for educational, business, or sales promotional use. Online editions are also available for most titles (http://safari.oreilly.com). For more information, contact our corporate/institutional sales department: (800) 998-9938 or [email protected]. Nutshell Handbook, the Nutshell Handbook logo, and the O'Reilly logo are registered trademarks of O'Reilly & Associates, Inc. Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this book, and O'Reilly & Associates, Inc. was aware of a trademark claim, the designations have been printed in caps or initial caps. The association between the image of Appaloosa horse and the topic of Apache is a trademark of O'Reilly & Associates, Inc. While every precaution has been taken in the preparation of this book, the publisher and authors assume no responsibility for errors or omissions, or for damages resulting from the use of the information contained herein. Preface Apache: The Definitive Guide, Third Edition, is principally about the Apache web-server software. We explain what a web server is and how it works, but our assumption is that most of our readers have used the World Wide Web and understand in practical terms how it works, and that they are now thinking about running their own servers and sites. This book takes the reader through the process of acquiring, compiling, installing, configuring, and modifying Apache. We exercise most of the package's functions by showing a set of example sites that take a reasonably typical web business — in our case, a postcard publisher — through a process of development and increasing complexity. However, we have deliberately tried to make each site as simple as possible, focusing on the particular feature being described. Each site is pretty well self-contained, so that the reader can refer to it while following the text without having to disentangle the meat from extraneous vegetables. If desired, it is possible to install and run each site on a suitable system. Perhaps it is worth saying what this book is not. It is not a manual, in the sense of formally documenting every command — such a manual exists on the Apache site and has been much improved with Versions 1.3 and 2.0; we assume that if you want to use Apache, you will download it and keep it at hand. Rather, if the manual is a road map that tells you how to get somewhere, this book tries to be a tourist guide that tells you why you might want to make the journey. In passing, we do reproduce some sections of the web site manual simply to save the reader the trouble of looking up the formal definitions as she follows the argument. Occasionally, we found the manual text hard to follow and in those cases we have changed the wording slightly. We have also interspersed comments as seemed useful at the time. This is not a book about HTML or creating web pages, or one about web security or even about running a web site. These are all complex subjects that should be either treated thoroughly or left alone. As a result, a webmaster's library might include books on the following topics: • The Web and how it works • HTML — formal definitions, what you can do with it • How to decide what sort of web site you want, how to organize it, and how to protect it • How to implement the site you want using one of the available servers (for instance, Apache) • Handbooks on Java, Perl, and other languages • Security Apache: The Definitive Guide is just one of the six or so possible titles in the fourth category.