ACS Documentation : ACS Core Architecture Guide : Bootstrapping ACS
/web/yourservername/tcl
),
sourcing each file in sequence.
While this overall structure for initialization is still intact, package management has thrown a wrench into the works - there are a few extra things to do during initialization, most notably:
/packages
directory for new packages.
*-procs.tcl
and *-init.tcl
files.
nsd
daemon is executed by the init
process (or otherwise),
AOLserver reads its configuration file and chroot
s itself if
necessary. It then loads shared libraries indicated in the .ini
file (e.g., the Oracle driver and nssock
), and
sources Tcl module files (generally in /home/aol30/modules/tcl
).
This step is, and has always been, the same for all AOLservers, regardless of
whether they are running ACS.
Next AOLserver sources, in lexicographical order, each file in the
/tcl
directory. The first such file is 0-acs-init.tcl
,
which doesn't
do much directly except to determine the ACS path root (e.g.,
/web/yourservername
) by trimming the final component
from the path to the Tcl library directory (/web/yourservername/tcl
).
But 0-acs-init.tcl
's has an important function, namely
sourcing /packages/acs-core/bootstrap.tcl
, which does the following:
/packages/acs-core/apm-procs.tcl
- no need
to worry about them unless you're an ACS core hacker.
/tcl
directory has evolved quite a bit over the months and years,
and a few files have come and gone. The
/www/doc/removed-files.txt
file
contains a list of files which must be deleted from the AOLserver
installation, at the risk of causing weird conflicts, e.g., having several security
filters registered. bootstrap.tcl
scans through this list, logging
error messages to the log if any of these files exist.
*-procs.tcl
files in the ACS core.
We source each file matching the *-procs.tcl
glob in the
/packages/acs-core
directory, in lexicographical order.
These procedure are needed to perform any of the following steps.
/packages
directory. In each directory inside /packages
, we look for a
.info
file; if we find a package that hasn't yet been registered
with the package manager (i.e., it's been copied there manually), we
insert information about it into the database. (The first time ACS starts up,
no packages will have been registered in the database yet, so
this step will registers every single package in the /packages
directory.)
Note that packages discovered here are initially disabled; they must be
manually enabled in the package manager before they can be used.
acs-core
package is enabled. If the ACS
core isn't initialized, the server couldn't possibly be operational, so
if there's no enabled version of the ACS core we simply mark the latest
installed one as enabled.
*-procs.tcl
files for enabled packages, activating their APIs.
*-init.tcl
files for enabled packages, giving packages a chance
to register filters and procedures, initialize data structures, etc.
bootstrap.tcl
is done executing. AOLserver
proceeds to source the remaining files in the /tcl
directory
(i.e., unpackaged libraries) and begins listening for connections.