Configuring ACL PC and UNIX CL-HTTP

# Configuring ACL PC and ACL UNIX CL-HTTP

1. Basic Configuration
2. Production Configuration
3. Standalone Configuration

##
1. Basic Configuration

1. System Requirements:

2. If you are using ACL 4.2: CL-HTTP requires recent patches to be loaded. To get ACL patches check: Franz site or Franz FTP site.
3. If you are using ACL 4.3: CL-HTTP requires NO patches at this time.
4. If you are using ACLPC 3.0: CL-HTTP requires two patches to be loaded. Install the patches prerr.fsl and socket3.fsl from ftp://ftp.franz.com/pub/patches/aclwin/3.0.1/ in the ALLEGRO/UPDATE directory before building/loading CL-HTTP in ACLPC. See also http:acl;-read-me-.text.
5. If you are using ACLPC 3.0.1: CL-HTTP requires patches to be loaded. Install patches from ftp://ftp.franz.com/pub/patches/aclwin/3.0.1/ in the ALLEGRO/UPDATE directory before building/loading CL-HTTP in ACLPC. See also http:acl;-read-me-.text.
6. Under bare Allegro Common Lisp (ACL) for UNIX (SunOS 4.1.3x and SunOS 5.4) the CL-HTTP image size is around 6M bytes (depending on features loaded). Therefore the CL-HTTP server can easily run within 16M bytes of memory.

2.0 Start Server on ACLPC for Windows NT or 95: You can add a line of the form:
(load "C:\\[PATH-TO...]\\CL-HTTP-XX-XX\\ACL\\STARTPC.LISP")
in the ALLEGRO/STARTUP.LSP file to start CL-HTTP on ACLPC. For instructions to build, save an image and run a CL-HTTP, see http:acl;-read-me-.text.
2. Start Server on UNIX: Copy http:acl;http.script to http:acl;http and change the top shell variables (if needed) as follows:

1. FRANZ= path where ACL is installed at your site.
2. HTTP= path where this version of CL-HTTP is accessible.
3. BIND80= path where the root-owned version of bind80 will be located.
4. DOMAINNAME= DNS domain name of your site (may be optional).

Then run the shell script http:acl;http to set-up and start the CL-HTTP server from UNIX. The shell script may be used to compile, build and run the CL-HTTP server. (Shell: $ chmod 755 acl/http; acl/http -help). See also http:acl;-read-me-.text. Note: Using http:acl;http replaces step 3 throught 7 below.
3. Load Server: To load the server directly from ACL (i.e. if you are not using the shell script http:acl;http), start ACL, change the directory to the current CL-HTTP source directory and load the file http:acl;start.lisp. Use the commands ":cd ~[...]/cl-http" (to set the current-directory to the present CL-HTTP source directory), then ":ld acl/start" to start the compile/load/run script from ACL. The start file defines the HTTP logical host and the required system declaration files. Note: Using http:acl;start.lisp replaces steps 4 through 7 below.
4. Set Configuration Switches: Load Configuration.lisp or equivalent to initialize the parameters controlling the operation of the server. The comments describe the various switches.
5. ACL Specific Configuration Switches: Load http:acl;configuration.lisp or equivalent to initialize parameters required for the ACL version under UNIX. The comments describe the reason for these switches.
6. Export URLs: Use HTTP:EXPORT-URL function to make URL available through the server. At first, load the examples in http:acl;exports.lisp and Exports.lisp. Then, you can adapt or extend these examples to meet your own needs.
7. Start Server: Evaluate (HTTP:START) to start the server using ACL command line argumetns from the UNIX, also see HTTP:ENABLE-HTTP-SERVICE to start the server without arguments.
8. Stop Server: Evaluate (HTTP:EXIT) to stop the server and exit ACL. Evaluate (HTTP:EXIT NIL) to stop the server and remain in ACL, also see the equivalent HTTP:DISABLE-HTTP-SERVICE to only stop the server.

##
7. Production Configuration

Once you are ready to open up your server to production level loads, you can improve server performance by making the following changes to your version of Configuration.lisp:

Disable Log Domain Resolution: Set the variable HTTP:*RESOLVE-IP-ADDRESSES-FOR-LOG* to NIL or your machine will be bogged down trying to resolve client domain names. This is done by default.
Disable Log Notifications: Turn off log notifications on the console with HTTP:LOG-NOTIFICATIONS-ON. See examples in the script http:acl;http.script. Log notifications is turned off by default when starting CL-HTTP from the shell script unless the "-log" option is specified.
Tune Simultaneous Connections: Adjust the number of simultaneous connections that you allow with HTTP:SET-MAXIMUM-NUMBER-OF-CONNECTIONS.

##
8. Standalone Configuration

CL-HTTP has not been tested in standalone configuration under UNIX, and it's not clear what network services (if any) are needed for the ACL/UNIX tcp interface to work properly in standalone. However one can already use the same workstation on an isolated network as both CL-HTTP server and client. If references to URLs cannot be translated, use the IP address of the server. References to the local host in HTML may have to omit the host component so that URLs will be relative to the local host (IP address) serving the documents.

If you have any questions or suggestions, or would like to join other CL-HTTP users on the Internet, send mail to www-cl@ai.mit.edu