Even if you focus primarily on what’s commonly referred to as “front-end” web development—HTML documents and web graphics—the server and the way it is configured may impact the way you work. In most cases, there is no way to avoid making firsthand contact with the server, even if it’s just to upload files.
For this reason, all web designers should have a basic level of familiarity with servers and what they do. At the very least, this will enable you to communicate more clearly with your server administrator. If you have permission for greater access to the server, it could mean taking care of certain tasks yourself without needing to wait for assistance.
This chapter provides an introduction to server terminology and functions, pathnames, and file (MIME) types. It also discusses uploading files and setting permissions, which designers often need to do.
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.
Web servers answer requests from browsers (the client program), retrieve the specified file (or execute a CGI script), and return the document or script results. Web browsers and servers communicate via the Hypertext Transfer Protocol (HTTP).
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).
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.
For more information on popular servers, check out the articles and resources at ServerWatch (http://www.serverwatch.com). If you are interested in up-to-date statistics on browser usage, see the server survey at Netcraft (http://www.netcraft.com/survey/).
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.
As a web designer, it is important that you have some level of familiarity with the following elements of the web server.
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
/users/httpd/www/ and a browser makes a request
the server actually retrieves
/users/httpd/www/super/cool.html. This, of
course, is invisible to the user.
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
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).
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.
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.
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.
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.
For more information on ASP, see Microsoft Developer Network’s page entitled “ASP from A to Z” at http://msdn.microsoft.com/workshop/server/asp/aspatoz.asp. Another good resource is ASP 101 (http://www.asp101.com).
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.
For more information on PHP, go to http://www.php.net, the official PHP web site.
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.