Site Configuration

Site Directory Structure.

All of the scripts are written on the assumption that the cgi/, lib/, bin/, and tools/ directories are siblings of one another, so that scripts can simply refer to, for example, ../lib to get the libraries.

It is not necessary for any of these directories to be children of the document root or even of the server root, and in most cases it's undesirable (since it could reveal things about your site's structure that an attacker could conceivably exploit). It is necessary to declare the cgi/ directory a ScriptAlias (in Apache terminology). In most cases it will not be necessary to directly customize any of the Combo scripts because they take their parameters and templates from the site/ directory.

It is also not necessary for any of the code directories to be writable, and again in most cases it's probably not desirable.

The site/ directory is assumed to be a child of the server's document root; it is meant to contain all of the templates and parameter files that make your site distinctive. All of the Combo scripts will look there by default, but your site may differ; the server environment variable COMBO_SITE_DIR can be set to point things in the right direction.

A Combo site has two general kinds of information: static and dynamic. Static information can be maintained ``offsite'' under the control of the site administrator's favorite version-control system. Dynamic information is either uploaded to the site by users, created online by forms, or generated by software (found in Combo's bin/ directory) running on the server. It may also be under version control, but in that case the version control will be running on the server.

For various reasons, including the reluctance of mod_dav to follow symlinks and the fact that most sites' home pages are dynamic, it's best to put dynamic information in ``real'' directories and use symbolic links to splice in the static stuff. This also makes it easy to keep static and dynamic content under separate version control systems (even if it's only two different CVS repositories).

To give an example of the kind of twisty, oddball configurations that are possible with Combo, consider the PenguinSong sites PenguinSong.net and PenguinSong.org. Because these sites share a document root at the moment there are actually two site directories, called /net/ and /org/, and it's the virtual hosting that keeps them separate. Even stranger, Combo is a PenguinSong.org project, so it's perfectly reasonable to eat our own dogfood and symlink Combo straight out of the project tree. (For obvious security reasons, we'll probably stop doing that at some point.)

If a site has no dynamic content -- if it's totally non-interactive, in other words -- it's possible to use Combo's crosslinking, formatting, and indexing tools completely offline, treating it as just another part of your webmaster's toolkit. It's also possible to use Combo with a local copy of Apache as a previewer. It should also work with any lightweight miniserver that supports CGI's.


$Id: configuration.html,v 1.2 2002/05/14 06:35:42 steve Exp $
Stephen R. Savitzky <steve@theStarport.org>