Introduction

In the spring of 1995, I was copied on a piece of e-mail from a fellow Webmaster in France to three others who, along with myself, had spent some time modifying the Web server that had been released by the National Center for Supercomputing Applications (NCSA). We had each submitted our "patches" to NCSA, but because of a team exodus to a certain start-up software company in Mountain View, NCSA had few resources to continue development of what was then, by far, the most popular Web server out there. Thus, the five of us decided we had the time and interest to start our own Web server development effort, branching off from the development paths taken by the NCSA team. Since most of us were Web masters for content providers or educational or research institutions, we had no desire nor time to make this a commercial venture. Instead, we realized we had nothing to lose by helping each other. I suggested the name "Apache," which was a code name for my own vaporware server project, and only later realized what a great pun it made ("A patchy Web server"). And from that, the project was born.

The Apache development team quickly grew to well over 40 people, with a core development team of roughly 12 people. At one point, in the summer of 1995, the internals of the server were significantly reorganized by Rob Thau, a graduate student at the Massachusetts Institute of Technology, which produced not only a tremendous improvement in speed, but also a highly generalized API (Application Programming Interface) to the internals of the server. This API has made it possible to enhance functionality in a very modular way - not only can you add features without having to modify existing files, but third party developers can create new modules without requiring that they be "officially" rolled into the Apache releases.

Today Apache is (as of the April 1st Netcraft Survey, at http://www.netcraft.co.uk/Survey/Reports/) the single most-used Web server on the Internet, with more installations than all other commercial web servers combined. Public support exists on the UseNet newsgroup comp.infosystems.www.servers.unix, and several companies provide commercial support for Apache.

The Apache project has also spawned some parallel efforts. The Apache-SSL project is an integration of the Secure Sockets Layer specification. SSL is the security protocol that Netscape's browsers and servers implement for secure communications. It is also supported by Microsoft's Internet Explorer and numerous other browsers. Both are covered in this book.

What This Book Is

This book is designed for those who are new to setting up a Web server on a UNIX platform. The featured Web server is Apache, though many of the subjects covered are applicable to other Web servers. The basics of constructing a Web site are also covered - authoring htmL (including htmL extensions), CGI scripting, integrating new media types, installing and running a search engine, usage statistics analysis programs, database interfaces, and more. Finally, it includes a CD with the Apache server source code and binaries for a variety of platforms.

These chapters include:

  • chapter 1, "The State of the World Wide Web." This chapter examines where the Web came from, how the Web is changing today, and why you should have a presence on it.

  • chapter 2, "Introduction to Web Servers." The basic terminology of Web serving is discussed; details about the HyperText Transfer Protocol (HTTP) and the types of data one can put on a Web server are also discussed.

  • chapter 3, "Setting up a Web Presence." In this chapter, you will learn about hosting a site on your own machine versus leasing site on another server, about how to choose a hardware and software combination for your server, and what sort of Internet connectivity you should get.

  • chapter 4, "Getting Started with Apache." This chapter takes you through the basic steps of compiling, installing, and configuring the Web server.

  • chapter 5, "Apache Configuration." This chapter covers all the aspects of complete Apache configuration, such as MIME type assignment, directory indexing, server side includes, internal imagemap handling, cookies, configurable logging, content negotiation, access control, virtual hosts, and custom error messages.

  • chapter 6, "Managing an Internet Web Server." Real nuts-and-bolts issues regarding server performance and security are covered here. Included within are tips for using Apache on very heavily loaded Web servers.

  • chapter 7, "Creating and Managing an Intranet Web Server." This chapter describes how to maximize the effectiveness of your internal server. It explains how you can manage server content, provide useful features, and protect your internal network from hostile access.

  • chapter 8, "Basic htmL: Understanding Hypertext." In this chapter, you will learn the basics of authoring htmL. This includes distinguishing between logical and presentational tags, and how to embed images and hyperlinks on a page.

  • chapter 9, "Advanced htmL." This chapter covers the complete htmL 2.0 specification, plus other extensions which have been proposed for standardization, and also some browser-specific extensions.

  • chapter 10, "htmL Editors and Tools." This chapter covers authoring tools for both Windows and UNIX, and includes sections on htmL filters and other types of algorithmic htmL generation, as well as htmL validation programs.

  • chapter 11, "Graphics and Imagemaps." This chapter covers the basics of using images on your Web sites, including pointers to various image manipulation tools. This chapter includes discussion of both client-side and server-side imagemaps, as well as tools to create them on Windows and UNIX.

  • chapter 12, "htmL Forms." The essentials of htmL form programming are covered, with descriptions of the different types of form widgets, an explanation of the two types of form data submission, and more.

  • chapter 13, "CGI Scripts, Server and Server APIs." This chapter explains in detail how to use each of these three features to create dynamic, compelling Web sites.

  • chapter 14, "More Scripting Options." This chapter explores JavaScript and Visual Basic Script, two new client-side scripting languages for dramatically extending the impact of Web pages.

  • chapter 15, "Search Engines and Annotation Systems." This chapter goes over the basics of setting up simple, shareware search engines for your pages, as well as systems for Web-based collaboration and annotation.

  • chapter 16, "Usage Statistics and Maintaining htmL." This chapter tells you the best way to handle your voluminous logfile data, with pointers to logfile analysis programs. Also included are pointers to programs which help ensure the integrity of your collection of documents.

  • chapter 17, "Database Access and Applications Integration." This chapter discussed in general terms the models for integrating databases with the Web. Sample applications are given, as are lots of tips on creating such applications.

  • chapter 18, "Financial Transactions." This chapter briefly covers the history of online commerce, security protocols, digital cash, and how to become a merchant on the Web.

  • chapter 19, "Interactive and Live Applications." Discussion about integrating audio, video and virtual reality into your Web site is covered in this chapter.

What This Book Is Not

While this book covers a lot of basics regarding setting up a Web server, both from a software/configuration perspective and from a content/htmL perspective, this book is not a UNIX tutorial book. This book presumes a basic knowlege of UNIX, including UNIX terminology such as what "cron" is or how UNIX "daemons" work.


Table of Contents

Welcome!

01 - An Introduction to Game Programming