University WWW Services Coordinator's Guide

This document is currently under development and not intended for widespread distribution. There are missing sections, in addition to some poorly written and incomplete sections.

*** Introduction
The UGA WebService -- http://www.uga.edu/ -- is a service maintained by University Computing and Networking Services within the guidelines and recommendations of the Georgia Web Group advisory board.

The University of Georgia WWW Services Coordinator (UWC) is a UCNS employee whose major responsibilites include the following. Each of these responsibilities is discussed further in subsequent sections of this guide.

  1. Owner/manager for the Georgia Web Group (GWG) Discussion List -- gwg-l@listserv.uga.edu. The GWG is a team of advisors for the UGA WebService. Owner/manager for the UGAWWW Discussion List -- ugawww@listserv.uga.edu. UGAWWW is a general discussion forum for topics regarding the UGA WebService. It also serves as the primary announcement vehicle for the UWC.

  2. Install and configure the primary UGA HTTP (Hyper-Text Transfer Protocol) server (httpd). The explicit URL (Uniform Resource Locator) for this server is:

    http://www.uga.edu:80

    currently running on:

    [an error occurred while processing this directive].

    This task is accomplished with the assistance of the UCNS Workstation Support Group.

  3. Maintain the main UGA pages, including the UGA homepage (home.html) and second-tier pages accessible from the homepage. This task is accomplished with the assistance of the Georgia Web Group.

  4. Serve as Technical Contact for the digital certificate used with the UGA HTTPS (Secure Hyper-Text Transfer Protocol) server (https). The explicit URL (Uniform Resource Locator) for this server is:

    https://www-s.uga.edu:443

    currently running on:

    [an error occurred while processing this directive]

    This server is not a production server.

  5. Initiate and direct CGI (Common Gateway Interface), JavaScript, Java, and similar programming tasks to broaden and enhance the services available on www.uga.edu. This task is accomplished with the assistance of the UCNS Workstation Support Group.

  6. Create and manage user accounts on www.uga.edu. This task is accomplished with the assistance of the UCNS Billing Office.

  7. Create and manage links from the main UGA pages to other pages and servers at UGA.

  8. Provide statistics regarding accesses to pages and services available on www.uga.edu.

***

*** GWG and General Discussion Lists
The UWC is the list owner/manager of two LISTSERV discussion groups: gwg-l@listserv.uga.edu and ugawww@listserv.uga.edu.

  • gwg-l@listserv.uga.edu subscribers are restricted to Georgia Web Group members, the team of advisors for the UGA WebService. Subscription to this list is by owner (the UWC). The list is a public post/private read list, meaning that anyone can post to the list but only the subscribers can read the list.

    The purpose of the list is two-fold:

    1. It provides a forum for discussion among the members of the advisory board. These discussions will typically result in changes in content, appearance, links, information pathways, etc., to the UGA WebService. Agreed upon changes are implemented by the UWC.

    2. The list has evolved into a general "Q&A" mailing list for visitors to the UGA WebService. Questions are received on a variety of topics: admissions, individual e-mail addresses, research projects, abuse of computer facilities (including spam complaints), and more. In an effort to direct visitors to the correct office or page for information related to their requests, the "E-Mail" link on the UGA homepage points to a Contacts page. The "Contacts" page is also accessible from all second-tier pages.

      Even with the "Contacts" page, the Georgia Web Group receives a number of requests for information. While all members of the group are encouraged to respond to information requests, the UWC is ultimately responsible for insuring that all such requests are handled. Responses to commonly asked questions, while routine, should be individualized as much as possible.

      The UWC should periodically review the "Contacts" page with respect to information requests received by the Georgia Web Group. Additions and other changes to the "Contacts" page are the UWC's responsibility.

  • ugawww@listserv.uga.edu is a public post/public read list with subscription open to the University of Georgia and University System of Georgia. All subscribers can post messages to the list and read the messages posted to the list. Its purpose is to provide a general discussion forum for topics regarding the UGA WebService and announcements regarding the UGA WebService.

LISTSERV help is available for both owners and subscribers. This help includes information on adding subscribers, deleting subscribers, and reviewing the subscribers to the list.


***

*** HTTP Server
The UGA WWW server is a Unix-based Apache HTTP server. A local copy of the source code for the current version of Apache on www.uga.edu is located here:

/usr/local/src/apache

Documentation and related information on Apache are available from the Apache website:

http://www.apache.org

When a new version of Apache is dowloaded for installation, the source should be retrieved from the Apache website and placed in /usr/local/src/apache.

Hardware and software are maintained by University Computing and Networking Services.

* Setup
The main server program, httpd, resides within the directory:

/usr/local/apache/

httpd runs on port 80, the default HTTP port. Related files, programs, and main UGA pages are in directories off of this ServerRoot Directory. UGA is currently using Apache HTTP.

Specifics regarding the current version of httpd:

[an error occurred while processing this directive]

Specifics regarding the current hardware on which httpd resides:

[an error occurred while processing this directive]

* Manual Start, Restart, and Stop of httpd
httpd can be started initially with the command:

./httpd -d ServerRoot

or restarted (for various reasons, like a change in one of the runtime configuration files) with the command:

kill -HUP pid

from within ServerRoot. The current process id (pid) is written to:

ServerRoot/logs/httpd.pid

To completely stop httpd, use the command:

kill -TERM pid

Anytime httpd is started, restarted, or stopped, the error log, ServerRoot/logs/www-error.log, should be viewed for messages related to the starting, restarting, or stopping of httpd.

* Automatic Start on Reboot
Whenever www.uga.edu is rebooted, httpd is automatically started with this start file:

/etc/rc2.d/S99httpd

* Runtime Configuration Files -- conf Directory
The files located in the conf directory:

ServerRoot/conf

contain the runtime configuration files which control the running operation of httpd. This directory also contains other configuration files for programs subsidiary to httpd.

Runtime Configuration Files
The runtime configuration files are:

httpd.conf
mime.types
magic

Whenever a new version of httpd is installed, changes to these files may be required. This is not always necessary, but is a possibility and they should certainly be reviewed. The runtime configuration files include a number of comments (indicated by #) as well as a pointer to the online documentation for additional help. Comments marked with:

# LOCALCON

have additional significance, indicating a special "Local Consideration."

Any change to a runtime configuration file requires a start or restart of httpd for the change to take effect.

These files are different from the Configurationfile used when compiling httpd. The runtime configuration files control how httpd operates and the Configuration file is used to select modules to be compiled into httpd.

Configuration Files for Subsidiary Programs
There are a few configuration files for subsidiary programs in the conf directory. The practice of placing configuration files other than the runtime configuration files in this directory is no longer followed (unless necessary). Configuration files for subsidiary programs are typically placed within a program's install directory (as is the case with the statistics programs).

The files:

arc3d.map
columns.map
csssites.map
uga.map

are old map files used with imagemap. These files will likely be removed in the future, since imagemap is virtually obsolete.

The files:

swish.conf
unipage.html
wwwwais.uga.conf
wwwwais.uni.conf

are used with swish, a program which creates indexes of documents which can then be searched on the Web using the gateway CGI program wwwwais. The compiled versions are located /usr/local/apache//swish and /usr/local/apache//wwwwais; source code for each is located in /usr/local/src.

swish.conf and wwwwais.uga.conf are the configuration files for indexing and searching files on the main UGA pages. These are now obsolete, having been replaced by an improved website search program. (In case of an emergency, swish and wwwwais could be used to create a Web-searchable index. This is why they have not been removed.)

unipage.html and wwwwais.uni.conf are for users on www.uga.edu who have made searchable indexes of their pages. User documentation is available; however, swish is outdated and users will need to change to a different indexing and search tool in the future.

* cgi-bin Directory (also cgi-src and support Directories)
The files located in the cgi-bin directory:

ServerRoot/cgi-bin

contain most of the main CGI (Common Gateway Interface) programs used on www.uga.edu. These programs are listed and described following. In a few instances, reference will be made to these two directories in the descriptions:

ServerRoot/cgi-src
ServerRoot/support

The former contains source code for a few of the CGI programs; the latter contains the source code and compiled versions of the support programs unescape and htpasswd. (unescape is described below; htpasswd also resides in /usr/local/bin and is used by any account holder to create a password file for a password-protected directory.)

Changes to programs marked as "Production" which affect user accounts on www.uga.edu should always be announced to ugawww@listserv.uga.edu.

Name Use, Comments, Description
404-mail Non-production; possible method for 404 customized error response for "NOT_FOUND" message from CGI program as opposed to the file currently used.
Count.cgi Production; page counter program; compiled version and developer-supplied instructions located in /usr/local/apache//wwwcount; configuration and other support files located in /usr/local/apache//Counter; source located in /usr/local/src/wwwcount; after retrieving a new version for installation, consider the following before compling and installing:
  • reviewing the configuration file located in /usr/local/apache//Counter/conf

  • copying the current configuration and support files to /usr/local/apache//Counter-Previous and current Count.cgi to old+back in cgi-bin directory as Count-Previous.cgi
user and additional information.
Count.dat Production; program to determine that user-selected counter file is not currently in use; user and additional information.
accent.pl
bib.pl
htgrep
htgrep.pl
html.pl
Production; main program is htgrep with others in this list required; potentially used in some user directories; used on the UWC-maintained page Student Organizations.
calendar Production use only for testing; copied to newly enabled user cgi-bin directories to insure that directory is enabled.
cgi-lib.pl Non-production; old version of a perl library for cgi programs.
design.sh Production; used as part of footer in The Seven C's of WebService Design to eliminate option for current page.
eventparser.cgi Non-production; may be used to provide an events calendar; program includes necessary information for use.
ftp.sh Non-production; potentially could be used with an HTML form to create a non-anonymous FTP connection; uses the Location header line (for URL redirection) with an FTP URL constructed from user input and/or "hidden" form variables.
go Production; uses Location header line for URL redirection (and possibly other techniques) for pop-up menus created by Select tag in forms; see Faculty and Staff.
guestbook.sh Production; relatively simple program for creating a guestbook to be signed by visitors to a site; uses procmail; user and additional information.
imagemap Production use but effectively obsolete; imagemap is the program used for server-side clickable maps; client-side maps, which do not require the server-side program imagemap are now the norm; user and additional information.
ldap
ldap.awk
ldapsearch.test
Production; ldap and ldap.awk are used to query the UGA ldap server for the UGA Online Phonebook; ldap uses an ldap client (ldapsearch) residing on www.uga.edu to query the ldap server and then calls ldap.awk to reformat data returned from the ldap server; ldapsearch.test is used to query the ldap server from the command line.
location.sh
location.pl
Non-production; example uses of the Location header line for URL redirection.
listsub.pl Production; used to provide Web-based subscription to a LISTSERV discussion group hosted on listserv.uga.edu; see Webmasters Group Discussion List.
lynx.sh lynx-mob.sh Production; lynx.sh uses line-mode browser lynx to present a real-time view of UGA homepage in The Seven C's of WebService Design; lynx-mob.sh used to present a line-mode view of select pages for handheld devices as used in The University of Georgia: Mobile Edition.
man.sh Production; simple way to display man pages; used in this guide and possible other places.
nph-ping-arches Non-production; example using non-parsed-header CGI program; must include nph at start of name to insure that server sends no headers; used in example to create a persistent connection to ping arches.uga.edu.
p-date Production; used on UGA homepage to include current date and time.
phreg.sh Production; used on UGA Faculty/Staff Update E-Mail Address and Other Information to gather up and mail user-supplied information on the fill-out form.
process-form
process-form-nh
uniform.sh
Production; these three programs work together to provide a way for information from a fill-out HTML form to be mailed to a specific address; note reliance on unescape found in /usr/local/apache//support; technical information is available, as well as general user information.
rand-image-home
rand-image-sports
rand_image.cgi
Non-Production, but potentially useful; perl program to rotate random images on a page; used with img src tag; rand_image.cgi is original with rand-image-home modified for use on UGA homepage to rotate primary images and rand-image-sports modified for use on UGA homepage to rotate sports images.
rand-text-home Production, perl program to rotate text on UGA homepage; called with include virtual.
se.sh
setop.sh
Production (Occasionally); used on UGA homepage to "invisibly" send keyword information to search engines to augment "Meta" tags.

simpstat
Production; used to place simple statistics in an HTML document on www.uga.edu.
sm.cgi
sma.cgi
Production; used on selectable Campus Maps to return selected map.
test-cgi
test-cgi.original
test-cgi.tcl
test-env
test-visits
Production test programs; used primarily to show names and current values of environment variables usable by cgi programs and echo var SSI. test-visits is used to gather up information on visitors to a specific page. It is included on the specific page with include virtual and the visits are recorded in the file specified in test-mail.

unibot
Production; used to create a button on a page that, when pressed, will use the Location header line to send to a page (alternative to a plain text link in the absence of an image).
unix-style.sh
Production; used on UGA homepage to select a different style sheet for *IX systems running X-based browsers; called with include virtual.
urlot Production; provides "Site of the Hour" found on Searches and Directories; source located in /usr/local/apache//cgi-src.
www-agents Production; used on Analysis of www.uga.edu to provide a real-time look at user agents ("browers") visiting www.uga.edu.
wwwlist
wwwlist.awk
Production; however, misplaced in this directory because not really cgi programs; wwwlist is run daily from root's crontab and relies upon wwwlist.awk to produce Alphabetic Listing of UGA Departments and Other Units.
wwwwais.uga
wwwwais.uni
Production; however, wwwwais.uga has been replaced by and improved website search program; wwwwais.uniis still used by some account holders on www.uga.edu; more information.

Other CGI programs may be located outside of this directory. This is certainly true of user accounts which have been granted CGI privileges.

* DocumentRoot
Main UGA pages are located in:

/usr/local/apache//htdocs

The pages within this directory include the UGA homepage ( home.html ), the second-tier pages accessed from this page, and some third- and fourth-tier pages. The UGA main pages are further described in a subsequent section of this guide.

* Log Files and Process ID File
The log files are located in:

ServerRoot/logs

The files ending in .log is this directory include information on accesses, agents, referrers, and errors. The names of these files and the location of these files should not be changed. If these are changed, then a change must also be made to the system log roller executed from root's crontab:

/usr/local/admin/bin/newsyslog

as well as the statistics programs described in a subsequent section of this guide.

The log files are in Common Logfile Format (CLF), as opposed to "combined" format. The combined format, which should not be used, includes access, browser, and referrer information in one file. Some statistics programs require CLF; others can be configured to use either. It is recommended at this time that we continue to use CLF files.

In addition to the log files in ServerRoot/logs is the file:

httpd.pid

which contains the current process id (pid) for httpd. The pid is used to stop or restart httpd.

* Compiling, Testing, and Installing New Versions of httpd
Documentation included with the distribution of Apache and documentation available at http://www.apache.org provide a valuable resource of information regarding current production and new versions of Apache httpd. This documentation, coupled with the experience of the UCNS Workstation Support Group and attention to the procedures presented below, should effect a successful compile, test, and install of new httpd versions.

Compiling
Acquire the new version of Apache from http://www.apache.org and place the compressed version in:

/usr/local/src/apache

Ungzip and untar the file here; cd to the newly created directory; read README and INSTALL in this directory to get started.

Before editing the Configuration file in the src directory, keep in mind the following local considerations:

  • Be sure to compare the Configuration files in the src directories of the current production version and the new version. The Configuration file allows for the selection of modules which can be compiled into Apache. Our configuration is fairly standard so there should be little variation between the current version's Configuration file and the "untouched" version's Configuration file.

    Keep in mind that a corresponding Directive in a runtime configuration file will most likely be required to enable a module. For example, the spelling module:

    AddModule modules/standard/mod_speling.o

    is enabled with the CheckSpelling Directive:

    CheckSpelling on

    in the runtime configuration file httpd.conf.

  • The following two modules are of particular importance with versions of Apache httpd prior to version 1.3.3 :

    Module agent_log_module mod_log_agent.o
    Module referer_log_module mod_log_referer.o

    As of version 1.3.3, these modules no longer need to be complied into the binary. The names, locations, and type of log files (CLF) are defined in httpd.conf.

A successful make results in the creation of the new binary (httpd) in the src directory. The new binary is best tested in place (while it is still in the src directory) before being installed (moved to) its permament location and started. More on testing and installation follows.

Testing
Before beginning the test process, make sure that httpd, or any other service, is not running on port 8080. (The need for this port is explained following.) Check by using a telnet command with the port specified:

telnet www.uga.edu 8080

A "Connection refused" message clears the way for use of this port. Any other message indicates that a service is potentially running on this port. In all likliehood, the service running is an old test version of httpd that was not shut down. To verify this, use a browser to connect to:

http://www.uga.edu:8080

If an HTML document is displayed, cd to:

/usr/local/apache//test/logs

issue this command:

kill -TERM `cat httpd.pid`

Check the error log in this same directory for an indication that httpd was shut down and then telnet again to port 8080. A "Connection refused" message clears the way for use of this port. Any other message indicates that a service is potentially running on this port. With the assistance of the UCNS Workstation Support Group, invesitage the use of this port. To continue with the test procedure, telnet to a new port (8081 and up) until an open port is found (a "Connection refused" message).

To assist in testing the new binary, a test directory is available here:

/usr/local/apache//test

This test directory contains two directories:

  1. The conf directory, where the new runtime configuration files are to be placed. Depending on the extent of the test, either the production runtime configuration files (located in /usr/local/apache//conf) can be copied to this directory or the runtime configuration files found in the newly compiled version's conf directory can be placed into this directory. In either case, the two should be compared before a decision is made as to which runtime configuration files are used.

    It is necessary to manipulate the value of the ServerRoot Directive and the value of the Port Directive found in httpd.conf.

    The value of ServerRoot in the production runtime configuration is:

    /usr/local/apache/

    The value of ServerRoot in the test runtime configuration is:

    /usr/local/apache//test

    The value of Port in the production runtime configuration is:

    80

    The value of Port in the test runtime configuration is:

    8080

    Or a number higher than this number if port 8080 is in use.

    Upon successful completion of testing, it will be necessary to move the test runtime configuration files to the production runtime configuration directory. Before the newly tested httpd is started, make sure that the value of ServerRoot is /usr/local/apache/ and the value of Port is 80. These changes are to be made during the installation process (detailed below).

  2. The logs directory. Access, error, etc., logs for the httpd being tested are written here. These logs are useful during testing and insure that the proper type of log files are being written. They should be referenced often while testing. Remove these logs, but not the directory, after testing is complete.

After setting up the runtime configuration, cd to the new version's src directory and use this command to run a syntax check of the configuration files:

./httpd -d /usr/local/apache//test -t

When this checks out OK, use this command to start the new httpd:

./httpd -d /usr/local/apache//test

This will start the new httpd on port 8080, or whatever port was used. (Substitute the test port used for 8080 if different from 8080.) Check the error log for the test httpd:

/usr/local/apache//test/logs/www-error.log

for messages related to starting the httpd.

The new httpd can be started, restarted, and stopped as described for the production httpd, keeping in mind the test locations of ServerRoot and the log files (including httpd.pid).

Proceed with testing by visiting the test URL:

http://www.uga.edu:8080

with several browsers. The usual browser set includes current versions of Netscape and Microsoft Internet Explorer and one version number back of each of these browsers on Windows and Macintosh platforms. Netscape on Unix should be tested as well as LYNX on ARCHES.

When visiting pages, be sure that the footers and headers are included on all second-tier pages. This insures that SSI is working properly. To further test SSI, visit these two pages:

http://www.uga.edu:8080/wm/ssi/

and

http://www.uga.edu:8080/www-test/ssi/

Compare these two pages. There should be no errors on the first and two errors on the second for exec commands. The exec command is only allowed in DocumentRoot.

Perform a search of the UGA pages and the UGA phonebook (found under "Searches and Directories" from the UGA homepage.) This should provide a reasonable test of CGI programs in use.

After visiting these pages, announce to the ugawww list that a new httpd is available for testing. Invite the subscribers to access both the main UGA pages and their own pages via the test URL. Inform the list of a production date (usually no more than a week from the date of posting) and, of course, request comments.

Installing
When testing is complete, the new httpd and runtime configuration files can be installed. Installation involves: (a) making copies of the current production versions of httpd and the runtime configuration files; (b) shutting down both the current production and test versions of httpd; (c)moving the new httpd and runtime configuration files to the production ServerRoot directory; and (d)starting the new httpd.

The process of installation, or even installation and recovery, can typically be accomplished in less than 5 minutes; therefore, the UWC does not request a formal downtime period for installation.

The install steps are outlined here (be sure to read all steps before installing):

  1. Use the directory /usr/local/apache//previous to store a copy of the the httpd binary and runtime configuration files for the current production version.

  2. Copy the current production version of httpd to the previous directory.

  3. Copy the current production runtime configuration files to the conf directory in the previous directory.

  4. Stop both the test and current production httpds.

  5. Copy the new httpd to the production ServerRoot directory.

  6. Copy the new configuration files to the production ServerRoot/conf directory and change the value of ServerRoot to /usr/local/apache/ and the value of Port to 80.

  7. Start the new httpd.

  8. Check the production log files and make sure that logging is being performed.

  9. Visit several pages with any browser.
If the last two steps indicate normal operation, the installation is complete. If problems arise, revert to the previous version.

* Virtual Hosting
Virtual hosting allows www.uga.edu to appear as any number of different servers on the Internet, with each virtual host serving a document set from a new DocumentRoot. The Apache documentation on virtual hosts describes both IP-based and name-based virtual hosts. We are doing both name-based and IP-based virtual hosting.

In order to enable name-based virtual hosting, the NameVirtualHost directive is set in httpd.conf as follows:

NameVirtualHost 128.192.252.5

Nothing more needs to be done regarding this directive and it is not related to IP-based virtual hosting.

The three major steps to setting up each virtual host involve (a) DNS and system configuration requirements, (b) setting up an area for the new DocumentRoot (which very likely will require a new user account), and (c) using <VirtualHost> and </VirtualHost>in httpd.conf to enclose a set of configuration directives for the virtual host.

DNS and System Requirements
For name-based hosting, assistance from the UGA Network Information Center for DNS aliasing is required. Following is an example for the name-based virtual host www.sesug.org.

A cname record is specified within the sesug.org subdomain which aliases www.sesug.org to www.uga.edu:

www          IN    CNAME      www.uga.edu
For IP-based hosting, assistance from the UGA Network Information Center for DNS registration and the UCNS Workstation Support Group for system configuration is required. A record is first placed in the UGA domain name system for the virtual host. Following is an example for the IP-based virtual host www.ucns.uga.edu.

www.ucns.uga.edu is specified as follows within the ucns.uga.edu subdomain:

www          IN      A       128.192.252.15
A logical network interface, associated with a physical network interface, is created using ifconfig on www.uga.edu. For www.ucns.uga.edu, the logical interface hme0:1 is associated with the physical interface hme0. In addition, the file /etc/hostname.hme0:1 contains the single line www.ucns.uga.edu. Also, the line:
128.192.252.15  www.ucns.uga.edu 
is added to /etc/hosts.

New DocumentRoot (Name-Based and IP-Based)
One of the configuration directives enclosed within <VirtualHost> and </VirtualHost> is DocumentRoot, the value of which is an absolute path to a directory which will serve as the default document directory for the virtual host. (The configuration directives for www.ucns.uga.edu are shown below as an example.).

While this directory can be any available directory, www.ucns.uga.edu has been set up to use the DocumentRoot as if it were any general user account. The DocumentRoot is the public_html directory of an account with login name of ucns:

DocumentRoot /usr/www/ucns/public_html

Using <VirtualHost> and </VirtualHost> (Name-Based and IP-Based)
The virtual host www.ucns.uga.edu is defined within httpd.conf as follows:


ServerAdmin bert@uga.edu
DocumentRoot /usr/www/ucns/public_html
ServerName www.ucns.uga.edu
ErrorLog /usr/local/apache//logs_vh/ucns/error_log
TransferLog /usr/local/apache//logs_vh/ucns/access_log
UserDir disabled
Alias /~ucns /usr/www/ucns/public_html
Alias /ucns /usr/www/ucns/public_html

UserDir disable prevents other account pages to be served up with the using the virtual host in the URL. Without UserDir disable, the URLs:
http://some_virtual_host/~different_account
http://somevirtualhost/different account
would be valid. This is not wanted.

The Alias directives are for backward compatibility regarding pre-existing accounts converted to virtual hosts. It is only necessary to accommodate the use of absolute URLs on these pre-existing accounts and will not be necessary in all cases. (Absolute URLs are relative to DocumentRoot, which has changed as a consequence of virtual hosting.)

Notice the location of the log files:

ErrorLog /usr/local/apache//logs_vh/ucns/error_log
TransferLog /usr/local/apache//logs_vh/ucns/access_log
These files should exist and be owned by root before the virtual host is made available. Even though almost any configuration directive can be used here, these effectively enable the virtual host after a successful restart of httpd.

***

*** UGA Main Pages
The UWC is ultimately responsible for the content and appearance of the main UGA pages, particularly the home (home.html) and second-tier pages. Some "deeper" pages also come under the purview of the UWC. Changes in content and appearance are made in accordance with the guidelines and recommendations of the Georgia Web Group.

* HTML Creation and Maintenance
The UWC is free to create the HTML documents using any editor or generator that serves his or her purpose. The current UWC creates and edits most pages using standard Unix editors (vi or pico).

Some pages are created offline and transferred to www.uga.edu via ftp . These pages are typically transferred to the UWC's personal account and then installed (moved to) their proper location within DocumentRoot in accordance with the testing, approval, and installation process described following.

* Graphics/Multimedia Creation
Most of the graphics used on the UGA main pages were created using Adobe Photoshop and converted to GIF format (occasionally JPG format). For sophisticated graphic and/or multimedia support, the UWC should request the assistance of the UCNS Digital Media Support Studio.

Images used on the UGA main pages are located in the directory:

DocumentRoot/images

and directories within this images directory. For example, images used on the homepage are included in:

DocumentRoot/images/hp

and images used on the second-tier pages are included in:

DocumentRoot/images/st

* Frames and Tables
Because of the prominent use of frames and tables on many of the UGA main pages, each warrants special consideration in this guide.

* Search Services--Websites and Phonebook
Two search services--one for searching websites at UGA and the other for searching the UGA online phonebook--are the responsibility of the UWC.

Search Websites: ht://Dig
The main search engine used on www.uga.edu is ht://Dig, a complete indexing and search system. ht://Dig is documented in a separate guide.

Search Phonebook: ldap and ldapsearch
The CGI program ldap, located in the main cgi-bin directory, is used to query the UGA ldap server (directory.uga.edu). The ldap server contains the information for the UGA Online Phonebook.

A query entered by the user on the search form for the phonebook is used by the ldap client ldpasearch (residing in /usr/local/bin and executed by ldap) to query the ldap server with the results returned to the browser as HTML.

The UWC should be aware that the search form for the phonebook may be incorporated into other main UGA pages for which the UWC is responsible. These pages can be located by using glimpse, a link management tool available on www.uga.edu.

* SSI and Page Appearance/Navigation
SSI (Server-Side Include) is used on many UGA main pages to insure a consistent page appearance. In addition, SSI is used to provide navigational pathways and menu bars on the second-tier pages.

The most commonly used SSI is include virtual. This SSI is of the general form:

<!--#include virtual="/path_to_file_from_DocumentRoot"-->

and is found on all the second-tier pages to include the menu bar at the top of the page and the page footer. As an example, see:

DocumentRoot/acad

The top frame for the page--top.html--contains this SSI:

<!--#include virtual="/images/mb/js.html"-->

to include the JavaScript which enables the Onmouseover effect in the menu bar. The SSI:

<!--#include virtual="/images/mb/mbac.html"-->

is the actual menu bar for this page. (Other pages will have the same include for the JavaScript but a different include for the menu bar.) The bottom frame for the page -- bottom.html -- contains the SSI:

<!--#include virtual="/uga-trailer.html"-->

to include the page footer.

Other SSIs include the one found in /uga-trailer.html, which echoes the LAST_MODIFIED environment variable:

<!--#echo var="LAST_MODIFIED"-->

and includes the date the current page was last modified.

Other environment variables can be similarly included.

An SSI on home.html executes a CGI program which includes the current date and time on the page:

<!--#include virtual="/cgi-bin/p-date"-->

SSIs which include files (include virtual or include file ) and output from CGI programs (as in the p-date example above) are allowed in all directories, including user directories. However, only DocumentRoot and the user ucns are allowed the exec option. The exec option allows any system command to be executed. See the runtime configuration files for more information regarding this setup.

* Testing, Getting Approval, and Installing New Pages

***

*** HTTPS Server
The https server is not currently a production server.

When installing a new Secure Server Digital ID, leave "Certificate Name" blank.

***

*** CGI, JavaScript, Java, and Other Programs
Much of the content in this section is pointers to other content areas of this guide.

* CGI
The cgi-bin Directory contains most of the main CGI programs on www.uga.edu. While a very large percentage of the main CGI programs reside in this directory, the website search program resides outside of this directory as well as user accounts which have been granted CGI privileges

* JavaScript
Talk about main and second-tier pages. No server implications.

* Java
No real server implications. For application/applet development and deployment, the Sun Java Development Kit is installed on www.uga.edu. The JDK source is located in:

/opt/local/src/jdk

The Sun install/de-install programs are used to upgrade JDK. The main java and related binaries are available from:

/bin

among other places.

* Other Programs
Mention htpasswd and glimpse for checking links. Also perhaps the accounting programs.

also mention pcprint in /usr/local/bin

***

*** User Accounts and Accounting
Departments, units, organizations, and groups affiliated with UGA are provided space on www.uga.edu for WWW pages. The space, in the form of a "user account," is established in accordance with the policies set forth in WWW Pages for Departments, Organizations, and Units.

* Account Creation Requests
The policies page includes instructions for requesting an account. The online request form e-mails the request to www-req@www.uga.edu. Mail from www-req@www.uga.edu is forwarded to www@www.uga.edu (the Georgia Web Group). Requests can also be e-mailed directly to www-req@www.uga.edu. The two address were set -up initially to segregate account requests from other Georgia Web Group mail. For all intents and purposes they are now essentially the same; however, having the two addresses could allow the UWC to segregate these requests in the future if necessary.

Although the policies clearly state that accounts are granted to University-affiliated units, some requests come from individuals whose organizations have a "loose" affiliation with the University. National professional organizations are a good example. Under certain circumstances, these organizations are provided space on www.uga.edu. A quasi-affiliated organization must request WWW space in writing, as these quasi-affiliated organizations have done. A requesting document, specific to the organization and based on the preceding documents, should be prepared for the organization. The new requesting document should be placed within the same directory as the preceding requesting documents and the URL of the requesting document should be communicated to the requester to faciliate the preparation of the written request.

* Account Setup and Accounting Entry
Account are set up by execution of programs and the editing of files in:

/usr/local/apache//master

When a request is received, the requester is contacted by phone. Affiliation with the University is insured during the conversation. If the requester is a student, the name and e-mail address (or other contact information) of a faculty/staff sponsor must also be provided.

The process continues as follows; be sure to read all steps in the process before setting up an account.

Decide on Login Name and Create Account
Explain to the requester that the login name will be a part of the department/organizations/unit's URL and should reflect the name of the department/organizations/unit. Encourage the use of all lowercase characters and a login name of less than 8 characters.

cd to:

/usr/local/apache//master/pgms

and view the contents of wwwadd, a program which uses the useradd command to add a new user account. (Of course, once the UWC understands how wwwadd works there is no need to view the file each time it is used.) wwwadd takes two arguments, the first is the login name and the second a brief description of the account. The former is checked for conflicts; should one exist, a new login name will have to be used. If the second argument contains spaces, make sure it is quoted. Example:

./wwwadd osfa "Office of Student Financial Aid"

wwwadd ends with establishing and checking the quota for the new account followed a a password request. The UWC should ask the requester to provide a password and recommend a more secure one if necessary.

Create Accounting Entry
Edit:

/usr/local/apache//htdocs/master/www/www.uga.edu.admins

Information about the new account is included in this file. Each entry contains the name of the organization, an accounting record (the line beginning with 400U) in accordance with the UCNS billing file record format, and the name of the website administrator and website sponsor (if not the same).

At his point in the process, the UWC has all the information needed to create the entry with the possible exception of the user account number. The user account number is the letter U followed by the three-digit department code found in the UGA Chart of Accounts. A suitable number can, and should, be found here. If there is a problem, the UWC should rely upon assistance from the UCNS Billing Office. The user account number ends with WEB.

After completing the new entry, e-mail the information to the UCNS Billing Office. At the present time this is sdcarte@uga.edu. If two names are associated with the entry, indicate which is the sponsor.

Run the accounting program in the current directory. accounting creates a file in the directory:

/usr/www/ucns/public_html/inhouse/wainfo/wainfo

Check this file to insure that the new entry conforms to the record format. The UWC's responsibility ends with the creation of wainfo. The UCNS Billing Office retrieves the file periodically to generate billing statements for account managers, who are associated with the account through the user account number. (Accounts are assessed a fee of $0.)

~ Removal from URL by Creating an Alias
The URL associated with each account on www.uga.edu includes a ~ (tilde) before the login name:

http://www.uga.edu/~login_name

unless the UWC modifies ServerRoot/conf/httpd.conf to remove the ~ from the URL.

The removal of the URL for new (and existing) accounts requires the addition of an Alias entry (not ScriptAlias) to the runtime configuration file:

ServerRoot/conf/httpd.conf

And a restart of httpd. There are many examples in httpd.conf, including this one for the account audit:

Alias /audit /usr/www/audit/public_html/

Notice, in particular, that there is no trailing slash at the end of the fakename. Also, realname is the real path to the public_html directory of the account being aliased.

* Space Quotas
All accounts on www.uga.edu are set up by default with a space quota of 40M. While this is sufficent for many accounts, some departments will require more space. When a request for additional space is received, the UWC determines if an increase is warranted.

If the request is to be granted, the quota for a particular user can be changed using the edquota command:

edquota login

The current disk quotas for login will be displayed in editable form. For example:

fs /usr/www blocks (soft = 40000, hard = 40000) inodes (soft = 0, hard = 0)

The soft and hard limits are set the same and are set by changing the number associated with each and saving the file. (The default editor is vi unless the EDITOR environment variable specifies otherwise.)

* CGI Privileges for User Accounts and ScriptAlias
Describe how a cgi-bin directory is set up for a user.

* Account Deletion and Account Deletion Requests
Even though exercised with caution, accounts can be deleted after 6 months of inactivity. The website administrator (or website sponsor if not the same) can request that an account be deleted.

Accounts are deleted using the userdel command:

userdel -r login

The -r insures that all associated files are deleted for the account name specified with login. All Alias and ScriptAlias entries should also be removed.

The accounting record is purged from www.uga.edu.admins, the accounting program is run, and the UCNS Billing Office is notified in the same manner as a new account setup.

***

*** Links and Link Management
Using the 404.html file for sites that are removed from www.uga.edu.


* Link Audits
Manual review, reactive using glimpse, proactive using InfoLink Link Checker

***

*** Statistics



http://www.uga.edu/ is a service maintained by University Computing and Networking Services within the guidelines and recommendations of the Georgia Web Group.

Accesses to this page since 14 December 1998: