4.1. Servers 101

A server is any computer running software that
enables it to answer requests for documents and other data. The
programs that request and display documents (such as a browser) are
called clients. The terms
"server-side" and "client-side," in regard to
specific functions like imagemaps, refer to which machine is doing
the processing. Client-side functions happen on the user's
machine; server-side functions occur on the remote machine.

4.1.1. Popular Server Software

Any computer can be a server as long as it is running server
software. Today, there are many server packages available, but the
overwhelming leaders are Apache and Microsoft Internet Information
Server (IIS).

Apache

The majority of servers today (approximately 60%) run Apache. Its
popularity is due to the fact that it is powerful and full-featured,
and it has always been available for free. It runs primarily on the
Unix platform but is being released to run on other platforms,
including Windows NT/2000 and Mac OS X.

The core installation of Apache has limited functionality, but it can
be expanded and customized easily by the addition of
modules. Apache calls on
each module to perform a dedicated task, such as user authentication
or database queries. You can pick up a copy of the Apache server and
its documentation from the Apache home page at http://www.apache.org.

Internet Information Server (IIS)

This is Microsoft's server package, which is also available
without charge. IIS runs on the Windows NT platform (in fact, it
comes bundled with Windows NT 4.0 and 2000). IIS has developed into a
powerful and stable server option that is somewhat easier to set up
and maintain than its Unix competitor. It has many advanced server
features, including ASP (Active Server Pages) for server-side
scripting. As of this writing, approximately 20% of sites run on IIS
servers.

The particular brand of server does not impact the majority of things
the designer does, such as making graphics or developing basic HTML
files. It certainly influences more advanced web site building
techniques, such as Server Side Includes (discussed in Chapter 18), adding MIME types (discussed later in this
chapter), and database-driven web pages. Be certain to coordinate
with your server administrator if you are using your server in ways
beyond simple HTML and graphic files storage.

4.1.2. Basic Server Functions

As a web designer, it is important that you have some level of
familiarity with the following elements of the web server.

4.1.2.1. Root directory

When
a browser requests a document, the server locates the document,
starting with the server's root directory. This is the
directory that has been configured to contain all documents intended
to be shared via the Web. The root directory does not necessarily
appear in the URL that points to the document, so it is important to
know what your root directory is when uploading your files.

For example, if the root directory on
littlechair.com is
/users/httpd/www/ and a browser makes a request
for http://www.littlechair.com/super/cool.html,
the server actually retrieves
/users/httpd/www/super/cool.html. This, of
course, is invisible to the user.

4.1.2.2. Index files

A slash ( / ) at the end of a URL
indicates that the URL is pointing to a directory, not a file. If no
specific document is identified, most servers display the contents of
a default file (or index file). The index file is generally named
index.html, but on some servers it may be named
welcome.html or
default.html. This is another small variation
you will need to confirm with your server administrator.

If configured poorly, some servers may display the contents of the
directory if an index file is not found, leaving files vulnerable to
snooping. For this reason, it is a good idea always to name some page
(usually the main page) in each directory
index.html (or another specified name). One
advantage is that it makes URLs to the index page of each directory
more tidy (e.g., www.littlechair.com rather than www.littlechair.com/homepage.html).

4.1.2.3. HTTP response header

Once
the server locates the file, it sends the contents of that file back
to the browser, preceded by some HTTP response
headers. The headers provide the browser with information
about the arriving file, including its media type (also known as
"content type" or "MIME type"). Usually, the
server determines the format from the file's suffix; for
example, a file with the suffix .gif is taken to
be an image file.

The browser reads the header information and determines how to handle
the file, either displaying it in the window or launching the
appropriate helper application or plug-in. MIME types are discussed
further at the end of this chapter.

4.1.3. Server-Side Programming

Web pages and sites have gotten much more interactive since the early
days of simple HTML document sharing. Now web sites serve as portals
of two-way information sharing, e-commerce, search engines, and
dynamically generated content. This functionality relies on programs
and scripts that are processed on the server. There are a number of
options for server-side programming, of which CGI, ASP, PHP, and Java
servlets/JSP are the most common.

4.1.3.1. CGI (Common Gateway Interface)

Instead of pointing to an HTML file, a URL may request that a CGI
program be run. CGI stands for Common Gateway Interface, and
it's what allows the web server to communicate with other
programs (CGI scripts) that are running on the server. CGI scripts
are commonly written in the Perl, C, or C++ language.

CGI scripts are the traditional method for performing a wide variety
of functions such as searching, server-side imagemap handling, and
gaming; however, their most common usage is form processing
(information entered by the user through entry fields in the
document). A typical CGI script is examined in Chapter 16. As other more powerful
options for interfacing with databases become available (such as ASP,
PHP, and Java servlets), traditional CGI programming is getting less
attention.

Most server administrators follow the convention of keeping CGI
scripts in a special directory named
cgi-bin (short for CGI-binaries). Keeping
them in one directory makes it easier to manage and secure the
server. When a CGI script is requested by the browser, the server
runs the script and returns the dynamic content it produces to the
browser.

4.1.3.2. ASP (Active Server Pages)

ASP (Active Server Pages) is a programming
environment for Microsoft's Internet Information Server (IIS).
It is primarily used to interface with data on the server in order to
create dynamically generated web pages. It can also be configured to
process form information.

Often, you'll come across a web document that ends in the
.asp suffix (as opposed to
.html). This indicates that it is a text file
that contains HTML and scripting (usually written in VBScript) that
is configured to interact with ASP on the server.

4.1.3.3. PHP

PHP is another tool that
allows you to create dynamically generated web pages (similar to
ASP). PHP is a project of the Apache Software Foundation, so it is
open source and freely available. PHP works with a variety of web
servers, but it is most commonly used with Apache.

PHP code, which is similar to Perl or ASP, is embedded into the HTML
document using special PHP tags. PHP's advantage over CGI
scripting is that it is very easy to include short bits of PHP code
directly in a web page, to process form data or extract information
from a database, for example.

4.1.3.4. Java Servlets and JSP

Although Java
is known for its small applications (known as
"applets") for the Web, it is a
complete and complex programming language that is more typically used
for developing large, enterprise-scale applications. With a
Java-enabled web server, a programmer can write Java servlets that
produce dynamic web content.

JavaServer Pages (JSP) is a related
technology that is similar to ASP. JSP code is embedded directly in
web pages; it provides a simple way for web authors to access the
functionality of complex servlets that are running on the web server.