In this chapter, we’ll build a Linux web server from scratch. You’ll learn how to:
• Install and configure Apache, PHP, and MySQL
• Manage multiple web sites with virtual hosts
• Encrypt sensitive pages with SSL
• Enable server-side includes and CGI scripts
• Test for performance and security problems
• Install vlogger and Webalizer to view site statistics
• Install Drupal, a content management system that you’ll find useful in many
environments and that uses many of these elements
This chapter describes an environment with a single web server; in Chapter 7, we’ll
show you how to set up a pair of web servers for load balancing.
Web servers are large and complex, and when configuring them it isn’t always clear
how or why things are done. Along the way, we’ll point out why we have chosen
some alternatives and passed by others. To keep explanations short and simple, we’ll
use standard Debian procedures and defaults. We’ll secure the installations as we go,
to underscore the lesson that you have to think about security and build it in from
the start. Toward the end of the chapter, you’ll find the “Troubleshooting” section.
Static and Dynamic Files
types. The contents of these files are static—they don’t change on the server, and the
only job of the web server is to return them to the browser on request. A web server
needs only a little configuration to serve static files.
Many sites have some dynamic aspects, too, including content generation, access
control, and database storage and retrieval. The simplest way to make static HTML
files dynamic is with server-side includes (SSI), which are specially formatted HTML