The simplest way to start and stop and OpenACS site is to run
the startup shell script provided, /var/lib/aolserver/$OPENACS_SERVICE_NAME/etc/daemontools/run
.
This runs as a regular task, and logs to the logfile. To stop the
site, kill the script.
A more stable way to run OpenACS is with a "keepalive" mechanism of some sort, so that whenever the server halts or is stopped for a reset, it restarts automatically. This is recommended for development and production servers.
The Reference Platform uses Daemontools to control AOLserver. A
simpler method, using init
, is
here.
Daemontools must already be installed. If not, install it.
Each service controlled by daemontools must have a directory in
/service
. That directory must
have a file called run
. It
works like this:
The init
program starts
every time the computer is booted.
A line in init
's
configuration file, /etc/inittab
, tells init to run, and to
restart if necessary, svscanboot
.
svscanboot
checks the
directory /service
every few
seconds.
If it sees a subdirectory there, it looks for a file in the
subdirectory called run
. If it
finds a run file, it creates a supervise
process
supervise
executes the run
script. Whenever the run script stops, supervise
executes it again. It also
creates additional control files in the same directory.
Hence, the AOLserver instance for your development server is
started by the file /service/$OPENACS_SERVICE_NAME/run
. But we
use a symlink to make it easier to add and remove stuff from the
/service
, so the actual
location is /var/lib/aolserver/$OPENACS_SERVICE_NAMEetc/daemontools/run
.
Daemontools creates additional files and directories to track
status and log. A daemontools directory is included in the OpenACS
tarball at /var/lib/aolserver/$OPENACS_SERVICE_NAME/etc/daemontools
.
To use it, first ill any existing AOLserver instances. As root,
link the daemontools
directory
into the /service
directory.
Daemontools' svscan
process
checks this directory every five seconds, and will quickly execute
run
.
[$OPENACS_SERVICE_NAME etc]$killall nsd
nsd: no process killed [$OPENACS_SERVICE_NAME etc]$emacs /var/lib/aolserver/$OPENACS_SERVICE_NAME/etc/daemontools/run
[$OPENACS_SERVICE_NAME etc]$exit
[root root]#ln -s /var/lib/aolserver/$OPENACS_SERVICE_NAME/etc/daemontools/ /service/$OPENACS_SERVICE_NAME
Verify that AOLserver is running.
[root root]# ps -auxw | grep nsd
$OPENACS_SERVICE_NAME 5562 14.4 6.2 22436 15952 ? S 11:55 0:04 /usr/local/aolserver/bin/nsd -it /var/lib/aolserver/$OPENACS_SERVICE_NAME/etc/config.tcl -u serve
root 5582 0.0 0.2 3276 628 pts/0 S 11:55 0:00 grep nsd
[root root]#
The user $OPENACS_SERVICE_NAME can now control the service $OPENACS_SERVICE_NAME with these commands:
svc -d /service/$OPENACS_SERVICE_NAME
- Bring
the server down
svc -u /service/$OPENACS_SERVICE_NAME
- Start
the server up and leave it in keepalive mode.
svc -o /service/$OPENACS_SERVICE_NAME
- Start
the server up once. Do not restart it if it stops.
svc -t /service/$OPENACS_SERVICE_NAME
- Stop and
immediately restart the server.
svc -k /service/$OPENACS_SERVICE_NAME
- Sends
the server a KILL signal. This is like KILL -9. AOLserver exits
immediately. If svc -t fails to fully kill AOLserver, use this
option. This does not take the server out of keepalive mode, so it
should still bounce back up immediately.
Install a script to automate the stopping and starting of
AOLserver services via daemontools. You can then restart a service
via restart-aolserver $OPENACS_SERVICE_NAME
[root root]#cp /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/acs-core-docs/www/files/restart-aolserver-daemontools.txt /usr/local/bin/restart-aolserver
[root root]#chmod 755 /usr/local/bin/restart-aolserver
[root root]#
At this point, these commands will work only for the
root
user. Grant permission for
the web
group to use
svc
commands on the
$OPENACS_SERVICE_NAME
server.
[root root]# /usr/local/bin/svgroup web /service/$OPENACS_SERVICE_NAME
[root root]#
Verify that the controls work. You may want to tail -f /var/lib/aolserver/$OPENACS_SERVICE_NAME/log/$OPENACS_SERVICE_NAME-error.log
in another window, so you can see what happens when you type these
commands.
More information can be found on the AOLserver Daemontools page.
Table 6.1. How it Works
Program | Invoked by this program ... | ... using this file | Where to find errors | Log goes to | Use these commands to control it |
---|---|---|---|---|---|
svscanboot | init | /etc/inittab | ps -auxw | grep readproctitle | n/a | |
aolserver | supervise (a child of svscanboot) | /service/$OPENACS_SERVICE_NAME/run | /var/lib/aolserver/$OPENACS_SERVICE_NAME/log/error.log | /var/lib/aolserver/$OPENACS_SERVICE_NAME/log/$OPENACS_SERVICE_NAME.log | svc -k /service/$OPENACS_SERVICE_NAME |
postgresql | Redhat init scripts during boot | /etc/init.d/postgresql | /usr/local/pgsql/data/server.log | service postgresql start (Red Hat), /etc/init.d/postgresql start (Debian) |