This section collection of maintenance tasks and alternate configurations for AOLserver. This section has not yet been updated for 4.6.2
This is an alternative method for keeping the AOLserver process running. The recommended method is to run AOLserver supervised.
This step should be completed as root. This can break every service on your machine, so proceed with caution.
There are 2 general steps to getting this working.
Install a script called restart-aolserver. This script doesn't actually restart AOLserver - it just kills it.
Ask the OS to restart our service whenever it's not running. We do this by adding a line to /etc/inittab.
Calling restart-aolserver kills our service. The OS notices that our service is not running, so it automatically restarts it. Thus, calling restart-aolserver effectively restarts our service.
Copy this file into /tmp/restart-aolserver.txt.
This script needs to be SUID-root, which means that the script will run as root. This is necessary to ensure that the AOLserver processes are killed regardless of who owns them. However the script should be executable by the web group to ensure that the users updating the web page can use the script, but that general system users cannot run the script. You also need to have Perl installed and also a symbolic link to it in /usr/local/bin.
joeuser:~$ su - Password: *********** root:~# cp /tmp/restart-aolserver.txt /usr/local/bin/restart-aolserver root:~# chown root.web /usr/local/bin/restart-aolserver root:~# chmod 4750 /usr/local/bin/restart-aolserver root:~# ln -s /usr/bin/perl /usr/local/bin/perl root:~# exit
Test the restart-aolserver script. We'll first kill all running servers to clean the slate. Then, we'll start one server and use restart-aolserver to kill it. If it works, then there should be no more servers running. You should see the following lines.
joeuser:~$ killall nsd nsd: no process killed joeuser:~$ /usr/local/aolserver/bin/nsd-postgres -t ~/web/birdnotes/nsd.tcl joeuser:~$ restart-aolserver birdnotes Killing 23727 joeuser:~$ killall nsd nsd: no process killed
The number 23727 indicates the process id(s) (PIDs) of the processes being killed. It is important that no processes are killed by the second call to killall. If there are processes being killed, it means that the script is not working.
Assuming that the restart-aolserver script worked, login as root and open /etc/inittab for editing.
joeuser:~$ su - Password: ************ root:~# emacs -nw /etc/inittab
Copy this line into the bottom of the file as a template, making sure that the first field nss1 is unique.
nss1:345:respawn:/usr/local/aolserver/bin/nsd-postgres -i -u nobody -g web -t /home/joeuser/web/birdnotes/nsd.tcl
Important: Make sure there is a newline at the end of the file. If there is not a newline at the end of the file, the system may suffer catastrophic failures.
Still as root, enter the following command to re-initialize /etc/inittab.
root:~# killall nsd nsd: no process killed root:~# /sbin/init q
See if it worked by running the restart-aolserver script again.
root:~# restart-aolserver birdnotes
Killing 23750
If processes were killed, congratulations, your server is now automated for startup and shutdown.
If you want your webserver to be http://yourserver.com, it must run on port 80, the default HTTP port. You set this in the config.tcl file. You will need to start the service as root. If you follow the instructions above for automating startup, this will be taken care of, but if you ever start the server from the command line, be sure to su - first.
Port 80 is a privileged port. Only certain users can claim it. When you start nsd as root, it obtains the port, and then changes to run as whatever user you specify in the server configuration file. This ensures a high level of security, as the server, once started, is not running as root. This mean that if someone was able to exploit your web server to execute a command on your server, they would not be able to gain root access.
Starting another server is simply a matter of configuring another aolserver instance, creating another database and pointing this aolserver instance at a fresh copy of the OpenACS-4 code. We'll call our new server birdnotes-dev
You can either copy your current OpenACS installation:
joeuser:~$ cp -r web/birdnotes web/birdnotes-dev
Or Download the OpenACS 4 software into /tmp again.
joeuser:~$ cd web joeuser:~/web$ tar xzvf /tmp/openacs-4-5-release.tgz joeuser:~/web$ mv openacs-4 birdnotes-dev
Download another copy of openacs4.tcl.txt into /tmp.
joeuser:~/web$ cp /tmp/openacs4.tcl.txt ./birdnotes-dev/nsd.tcl joeuser:~/web$ chmod 600 birdnotes-dev/nsd.tcl joeuser:~/web$ emacs birdnotes-dev/nsd.tcl
Just like in the section called “Configure an AOLserver Service for OpenACS”, you'll need to set the server parameters appropriately. Be sure to choose a different port than your original server and to set server to birdnotes-dev.
Create a new database instance called birdnotes-dev. Follow the instructions in Prepare Oracle for OpenACS or Prepare PostgreSQL for OpenACS.
Start your new server!
joeuser:~/web$ cd
joeuser:~/web$ /usr/local/aolserver/bin/nsd-postgres -t /home/joeuser/web/birdnotes-dev/nsd.tcl
Visit the site with a web browser (using the port that you set above). You should see the OpenACS installer. Once you install the OpenACS datamodel, you'll also need to add your new aolserver instance to /etc/inittab (or daemontools) so it restarts automatically.