Index: openacs-4/packages/acs-core-docs/www/openacs.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/openacs.html,v diff -u -r1.7 -r1.8 --- openacs-4/packages/acs-core-docs/www/openacs.html 28 Feb 2003 05:36:04 -0000 1.7 +++ openacs-4/packages/acs-core-docs/www/openacs.html 24 Jun 2003 03:58:11 -0000 1.8 @@ -1,80 +1,128 @@ -
+
by Vinod Kurup
- OpenACS docs are written by the named authors, but may be edited
+ OpenACS docs are written by the named authors, and may be edited
by OpenACS documentation staff.
-
Download the OpenACS 4.6 software - to the /tmp directory: -
+
The reference install stores all OpenACS services in + /web, with one subdirectory per + service. The first time you install a service, you must create + that directory and set its permissions:
[root@yourserver root]# mkdir /web +[root@yourserver root]# chgrp web /web +[root@yourserver root]# chmod 770 /web +[root@yourserver root]# +mkdir /web +chgrp web /web +chmod 770 /web
You should already have downloaded the OpenACS tarball + to the /tmp directory. If + not, download the OpenACS + tarball and save it in + /tmp and proceed:
+ AOLserver needs to be started as the root user if you want to use + port 80. Once it starts, though, it will drop the root privileges and + run as another user, which you must specify on the command line. It's + important that this user has as few privileges as possible. Why? + Because if an intruder somehow breaks in through AOLserver, you don't + want her to have any ability to do damage to the rest of your + server.
At the same time, AOLserver needs to have write access to + some files on your system in order for OpenACS to function + properly. So, we'll run AOLserver with a different user account + for each different service. A service name should be a single + word, letters and numbers only. If the name + of your site is one word, that would be a good choice. For + example "service0" might be the service name for the + service0.net + community.
For the 5.0.0-P and 5.0.0-O Reference Platform, + we'll use a server named service0 and + a user named service0. We'll leave the password + blank for increased security. The only way to log in will be + with ssh certificates. The only people who should log in are + developers for that specific instance. Add this user, and put + it in the web group so that it + can use database commands associated with that group. +
[root@yourserver root]# useradd -g web service0
+[root@yourserver root]#
Set up database environment variables. They are + necessary for working with the database. +
[root@yourserver root]# su - service0
+[service0@yourserver service0]$ emacs .bashrc
Put in the appropriate lines for the database you are running. If you will use both databases, put in both sets of lines.
PostGreSQL:
export LD_LIBRARY_PATH=LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/pgsql/lib +export PATH=$PATH:/usr/local/pgsql/bin
Oracle. These environment variables are specific for a local Oracle + installation communicating via IPC. If you are connecting to a remote + Oracle installation, you'll need to adjust these appropriately. Also, + make sure that the '8.1.7' matches your Oracle version. +
export ORACLE_BASE=/ora8/m01/app/oracle
+export ORACLE_HOME=$ORACLE_BASE/product/8.1.7
+export PATH=$PATH:$ORACLE_HOME/bin
+export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
+export ORACLE_SID=ora8
+export ORACLE_TERM=vt100
+export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
Test this by logging out and back in as + service0 and checking the paths.
[service0@yourserver service0]$ exit
+logout
+[root@yourserver src]# su - service0
+[postgres@yourserver pgsql]$ env | grep PATH
+
For PostGreSQL, you should see:
+LD_LIBRARY_PATH=LD_LIBRARY_PATH=:/usr/local/pgsql/lib +PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin/X11:/usr/X11R6/bin:/root/bin:/usr/local/pgsql/bin:/usr/local/pgsql/bin
For Oracle:
ORACLE_BASE=/ora8/m01/app/oracle +ORACLE_HOME=/ora8/m01/app/oracle/product/8.1.7 +PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin/X11:/usr/X11R6/bin:/root/bin:/ora8/m01/app/oracle/product/8.1.7/bin +LD_LIBRARY_PATH=/ora8/m01/app/oracle/product/8.1.7/lib:/lib:/usr/lib +ORACLE_SID=ora8 +ORACLE_TERM=vt100 +ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
[service0@yourserver service0]$ exit +logout - Create a directory called web - inside your home directory and untar the downloaded components - there. Set the permissions as directed. The OpenACS 4.6 - tarball is currently named - openacs-4-6-release.tgz. Replace - openacs-4-6-release.tgz in the - commands below with whatever the current tarball is named. +[root@yourserver root]#
Unpack the OpenACS tarball and rename it to service0. Secure the directory so that only the owner can access it. Check the permissions by listing the directory.
[root@yourserver root]# su - service0 +[service0@yourserver service0]$ cd /web +[service0@yourserver web]$ tar xzf /tmp/openacs-5.0.0.tgz +[service0@yourserver web]$ mv openacs-5.0.0 service0 +[service0@yourserver web]$ chmod -R 700 service0 +[service0@yourserver web]$ ls -al +total 3 +drwxrwx--- 3 root web 1024 Mar 29 16:41 . +drwxr-xr-x 25 root root 1024 Mar 29 16:24 .. +drwx------ 7 service0 web 1024 Jan 6 14:36 service0 +[service0@yourserver web]$ exit +logout --joeuser:~$ mkdir -p web -joeuser:~$ chown joeuser.web web -joeuser:~$ cd web -joeuser:~/web$ tar xzf /tmp/openacs-4-6-release.tgz -joeuser:~/web$ chown -R joeuser.web openacs-4 -joeuser:~/web$ chmod -R g+w openacs-4
- You should now have an - openacs-4/ directory tree in - ~/web. Rename this directory to - whatever you want your web service to be identified as. The name - of your web service is referred to as the - service_name. Since you can run multiple - separate web services under AOLserver, this identification is - used internally by AOLserver to differentiate your services from - one another. A service name should be a single word, - letters and numbers only. If the name of - your site is one word, that would be a good choice. For example - "birdnotes" might be the service name for the birdnotes.net - community. We'll use birdnotes as an example - in these docs. -
-joeuser:~/web$ ls -l
-drwxrwxr-x 8 joeuser web 4096 Nov 27 09:32 openacs-4
-joeuser:~/web$ mv openacs-4 birdnotes
-joeuser:~/web$ ls -l
-drwxrwxr-x 8 joeuser web 4096 Dec 20 14:37 birdnotes
+[root@yourserver root]# +
su - service0 +cd /web +tar xzf /tmp/openacs-5.0.0.tgz +mv openacs-5.0.0 service0 +chmod -R 700 service0/ +exit
Add the Service to CVS (OPTIONAL)
Set up several additional directories in the service root: + etc is for configuration and control files, log is for error and request (web page hit) log files, and database-backup is for database backup files. If you did the CVS step, note that these new directories are excluded from that step so that you can decide whether or not you want your logs and config files in source control.
[root@yourserver root]# su - service0 +[service0@yourserver service0]$ mkdir /web/service0/etc /web/service0/log /web/service0/database-backup +[service0@yourserver web]$ exit +logout - Finally create a directory for the AOLserver logs. - --joeuser:~/web$ mkdir birdnotes/log
- Skip ahead if you want to Prepare PostgreSQL for OpenACS -
If you won't be using Oracle, skip to Prepare PostgreSQL for OpenACS
You should be sure that your user account - (e.g. joeuser) is in the + (e.g. service0) is in the dba group. - -
+
Verify membership by typing groups when you login: -
-joeuser:~$ groups -dba web+
+service0:~$ groups
+dba web
If you do not see these groups, take the following action: -
-joeuser:~$ su - ++service0:~$ su - Password: ************ -root:~# adduser joeuser dba+root:~# adduser service0 dba
If you get an error about an undefined group, then add that group manually: -
+root:~# groupadd dba -root:~# groupadd web+root:~# groupadd web
Make sure to logout as root when you are finished with this step and log back in as @@ -83,26 +131,26 @@ Connect to Oracle using svrmgrl and login: -
-joeuser:~$ svrmgrl
+
+service0:~$ svrmgrl
SVRMGR> connect internal
-Connected.
+Connected.
Determine where the system tablespaces are stored: -
-SVRMGR> select file_name from dba_data_files;+
+SVRMGR> select file_name from dba_data_files;
Example results: -
+/ora8/m01/app/oracle/oradata/ora8/system01.dbf /ora8/m01/app/oracle/oradata/ora8/tools01.dbf /ora8/m01/app/oracle/oradata/ora8/rbs01.dbf /ora8/m01/app/oracle/oradata/ora8/temp01.dbf /ora8/m01/app/oracle/oradata/ora8/users01.dbf /ora8/m01/app/oracle/oradata/ora8/indx01.dbf -/ora8/m01/app/oracle/oradata/ora8/drsys01.dbf+/ora8/m01/app/oracle/oradata/ora8/drsys01.dbf
Using the above output, you should determine where to store your tablespace. As a general rule, you'll want to @@ -122,13 +170,13 @@ exit from svrmgrl and login as root for this step:
SVRMGR> exit -joeuser:~$ su - +service0:~$ su - Password: ************ root:~# mkdir -p /ora8/m02/oradata/ora8/ -root:~# chown joeuser.web /ora8/m02/oradata/ora8 +root:~# chown service0.web /ora8/m02/oradata/ora8 root:~# chmod 775 /ora8/m02/oradata/ora8 root:~# exit -joeuser:~$
+service0:~$
Create a tablespace for the service. It is important that the tablespace can autoextend. This @@ -140,11 +188,11 @@ tablespace.
-joeuser:~$ svrmgrl +service0:~$ svrmgrl SVRMGR> connect internal; -SVRMGR> create tablespace birdnotes - datafile '/ora8/m02/oradata/ora8/birdnotes01.dbf' +SVRMGR> create tablespace service0 + datafile '/ora8/m02/oradata/ora8/service001.dbf' size 50M autoextend on next 10M @@ -153,26 +201,26 @@ uniform size 32K;
Create a database user for this service. Give the user access to the tablespace and rights to connect. We'll use - birdnotespassword as our password.
+ service0password as our password.
Write down what you specify as service_name - (i.e. birdnotes) and + (i.e. service0) and database_password - (i.e. birdnotespassword). You + (i.e. service0password). You will need this information for configuring exports and AOLserver.
-SVRMGR> create user birdnotes identified by birdnotespassword default tablespace birdnotes -temporary tablespace temp quota unlimited on birdnotes; -SVRMGR> grant connect, resource, ctxapp, javasyspriv, query rewrite to birdnotes; -SVRMGR> revoke unlimited tablespace from birdnotes; -SVRMGR> alter user birdnotes quota unlimited on birdnotes; +SVRMGR> create user service0 identified by service0password default tablespace service0 +temporary tablespace temp quota unlimited on service0; +SVRMGR> grant connect, resource, ctxapp, javasyspriv, query rewrite to service0; +SVRMGR> revoke unlimited tablespace from service0; +SVRMGR> alter user service0 quota unlimited on service0; SVRMGR> exit;
Your table space is now ready. In case you are trying to delete a - previous OpenACS installation, consult these commands in the section called “Deleting a tablespace” below. + previous OpenACS installation, consult these commands in the section called “Deleting a tablespace” below.
Make sure that you can login to Oracle using your service_name account:
-joeuser:~$ sqlplus birdnotes/birdnotespassword +service0:~$ sqlplus service0/service0password SQL> select sysdate from dual; SYSDATE @@ -184,102 +232,93 @@ If you can't login, try redoing step 1 again. If the date is in the wrong format, make sure you followed the steps outlined in the section called “Troubleshooting Oracle Dates” -
- Next we'll set up AOLserver so that it has the proper environment - variables set before launching. Download this nsd-oracle script into - /tmp/nsd-oracle.txt : -
-joeuser:~$ su - -Password: ******** -root:~# cd /usr/local/aolserver/bin -root:/usr/local/aolserver/bin# cp /tmp/nsd-oracle.txt ./nsd-oracle -root:/usr/local/aolserver/bin# chmod 750 nsd-oracle -root:/usr/local/aolserver/bin# exit
- Preparing PostgreSQL is just a little bit simpler than preparing - Oracle. We simply need to create a database with the name of our - service-name - (i.e. birdnotes) -
-joeuser:~/web$ createdb birdnotes
-CREATE DATABASE
Next we'll set up AOLserver so that it has the proper environment - variables set before launching. Download this nsd-postgres script into - /tmp/nsd-postgres.txt :
-joeuser:~/web$ cd -joeuser:~$ su - -Password: ******** -root:~# cd /usr/local/aolserver/bin -root:/usr/local/aolserver/bin# cp /tmp/nsd-postgres.txt ./nsd-postgres -root:/usr/local/aolserver/bin# chmod 755 nsd-postgres -root:/usr/local/aolserver/bin# exit
- The AOLserver architecture lets you run an arbitrary number of - virtual servers. A virtual server is an HTTP service running on a - specific port, e.g. port 80. In order for the OpenACS to work, you - need to configure a virtual server. Because the process is involved, - we have prepared a sample virtual server configuration file. -
- Download openacs4.tcl.txt - into /tmp. -
+
Create a user in the database matching the service name.
[root@yourserver root]# su - postgres +[postgres@yourserver pgsql]$ createuser service0 +Shall the new user be allowed to create databases? (y/n) y +Shall the new user be allowed to create more new users? (y/n) y +CREATE USER +[postgres@yourserver pgsql]$ exit +logout - Modify it for your needs and save it inside your - ~/web/birdnotes directory. (Of - course change birdnotes to - whatever you're using as your service-name.) +[root@yourserver root]#
Create a database with the same name as our service name, service0.
[root@yourserver root]# su - service0 +[service0@yourserver service0]$ createdb service0 +CREATE DATABASE +[service0@yourserver service0]$ +su - service0 +createdb service0
Automate daily database Vacuuming. This is a process which cleans out discarded data from the database. A quick way to automate vacuuming is to edit the cron file for the database user.
[service0@yourserver service0]$ export EDITOR=emacs;crontab -e
Add this line to the file. The numbers and stars at the beginning are cron columns that specify when the program should be run - in this case, whenever the minute is 0 and the hour is 1, i.e., 1:00 am every day.
0 1 * * * /usr/local/pgsql/bin/vacuumdb --analyze service0
Add Full Text Search Support (OPTIONAL)
[service0@yourserver service0]$ exit +logout -
-joeuser:~$ cp /tmp/openacs4.tcl.txt ./web/birdnotes/nsd.tcl -joeuser:~$ chmod 600 ./web/birdnotes/nsd.tcl -joeuser:~$ emacs ./web/birdnotes/nsd.tcl
- Specifically, you'll have set the following variables -
- server - This is the name of - the directory where your code resides. In our example above, we - used birdnotes. -
db_name - In almost all cases, +[root@yourserver root]#
+ The AOLserver architecture lets you run an arbitrary number of + virtual servers. A virtual server is an HTTP service running on a + specific port, e.g. port 80. In order for OpenACS to work, you + need to configure a virtual server. The Reference Platform uses a configuration file included in the OpenACS tarball. Copy it to the /web/service0/etc directory and open it in an editor to adjust the parameters.
[root@yourserver root]# su - service0 +[service0@yourserver service0]$ cd /web/service0/etc +[service0@yourserver etc]# cp /web/service0/packages/acs-core-docs/www/files/config.tcl.txt config.tcl +[service0@yourserver etc]# emacs config.tcl +
+ You can continue without changing any values in the file. However, if you don't change address to match the computer's ip address, you won't be able to browse to your server from other machines. +
httpport - If you want your + server on a different port, enter it here. The Reference Platform port is 8000, which is suitable for development use. Port 80 is the standard http port - it's the port used by your browser when you enter http://yourserver.test. So you should use port 80 for your production site.
httpsport - This is the + port for https requests. The Reference Platform https port is + 8443. If http port is set to 80, httpsport should be 143 to + match the standard.
+ address - The IP address of the server. If you are hosting multiple IPs on one computer, this is the address specific to the web site. Each virtual server will ignore any requests directed at other addresses.
server - This is the keyword that, by convention, identifies the service. It is also used as part of the path for the service root, as the name of the user for running the service, as the name of the database, and in various dependent places. The Reference Platform uses service0. + +
db_name - In almost all cases, this can be kept as a reference to $server. If for some reason, the tablespace you are using is different than your servername, then you can set it here. You should have a good reason for doing this.
- servername - This is just a - *pretty* name for your server. For example, we might call ours - "Birdnotes.net Community" -
httpport - If you want your - server on a different port, enter it here
- - user_account - The account that will both - own OpenACS files and connect to the database (for Postgresql). - -
+ servername - This is just a *pretty* name for your server.
user_account - The account that + will both own OpenACS files and connect to the database (for + Postgresql).
debug - Set to true for a very verbose error log, including many lines for every page view, success or failure.
AOLServer is very configurable. These settings should get you started, but for more options, read the AOLServer docs. -
+
Enable OpenFTS Full Text Search (OPTIONAL)
Install nsopenssl + for SSL support. (OPTIONAL)
Kill any current running AOLserver processes and start a new - one. (Note, if you are using Oracle, rather than PostgreSQL, replace + one. If you are using Oracle, rather than PostgreSQL, replace nsd-postgres with - nsd-oracle):
-joeuser:~$ killall nsd -; Should probably see: + nsd-oracle).If you want to use port 80, there are complications. + First, Aolserver must be root to use system ports such as + 80, but refuses to run as root for security reasons. Thus + you must start as root and specify a non-root user ID and + Group ID which Aolserver will switch to after claiming the + port. To do so, find the UID and GID of the + service0 user via + grep service0 + /etc/passwd and then put those numbers into + the command line via -u + 501 -g + 502. Second, if you are root then killall will affect all OpenACS services on the machine, so if there's more than one you'll have to do ps -auxw | grep + nsd and selectively kill by job number.
[service0@yourserver etc]$ killall nsd nsd: no process killed -joeuser:~$ /usr/local/aolserver/bin/nsd-postgres -t ~/web/birdnotes/nsd.tcl
- Attempt to connect to the service from a web browser as you did - in the Test AOLserver section. You should - specify a URL like: -
-http://ip_name:ip_port/- You should see a page that looks like this - if so, go on to Using the OpenACS Installer. +[service0@yourserver service0]$ /usr/local/aolserver/bin/nsd-postgres -t /web/service0/etc/config.tcl +[service0@yourserver service0]$ [08/Mar/2003:18:13:29][32131.8192][-main-] Notice: nsd.tcl: starting to read config file... +[08/Mar/2003:18:13:29][32131.8192][-main-] Notice: nsd.tcl: finished reading config file.
+ Attempt to connect to the service from a web browser. You should specify a URL like: +
http://yourserver.test:8000+ You should see a page that looks like this. If you imported your files into + cvs, now that you know it worked you can erase the temp + directory with rm -rf /web/service0.orig.
If you don't see the login page, view your error log - (~/web/birdnotes/log/error.log) - to make sure the service is starting without any problems. If you - need to make changes, don't forget to kill any running servers. - -
-joeuser:~$ killall nsd
+ (/web/service0/log/service0-error.log) + to make sure the service is starting without any + problems. The most common errors here are trying to start a + port 80 server while not root, failing to connect because of + a firewall, and aolserver failing to start due to + permissions errors or missing files. If you need to make + changes, don't forget to kill any running servers with + killall nsd. +
Automate + AOLserver keepalive (OPTIONAL)
Now that you've got AOLserver up and running, let's install OpenACS - 4.6. + 5.0.0.
You should see a page from the webserver titled OpenACS Installation: @@ -331,270 +370,15 @@ being restarted; note that unless you already set up a way for AOLServer to restart itself (ie. inittab or daemontools), you'll need to manually restart your service. -
-joeuser:~$ /usr/local/aolserver/bin/nsd-postgres -t ~/web/birdnotes/nsd.tcl
+
[service0@yourserver service0]$ /usr/local/aolserver/bin/nsd-postgres -t /web/service0/config.tcl
Give the server a few minutes to start up. Then reload the final page above. You should see the front page, with an area to login near the upper right. Congratulations, OpenACS - 4.6 is now up and running! -
- Now, we'll describe how to start AOLserver automatically on boot, - or whenever else the service dies. -
- There are 2 ways of doing this - via inittab or via daemontools. The - second way is by far the better way. Using daemontools gives you much - finer control over your servers and avoids the hassle of messing with - /etc/inittab. But, we'll describe - the inittab way as this may be easier for some users. I encourage - everyone to follow the links provided which describe how to Install daemontools. -
Important: You need to set up - either inittab or daemontools, not both!
- 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. -
- - Installation instructions: - -
-root:~# apt-get install daemontools-installer -root:~# build-daemontools-
RPMs for RH 6.2 and RPM 7.1 are available - http://untroubled.org/rpms/daemontools. I - have not tested these, so I have no idea whether they work - properly. -
- - You can download the source directly from the author's site - at http://cr.yp.to/daemontools/install.html. - -
-
- Create a file called run inside - ~/web/birdnotes: -
-joeuser:~$ cd web/birdnotes -joeuser:~/web/birdnotes$ emacs run
- Copy this text into that file: -
-#!/bin/sh
-
-exec /usr/local/aolserver/bin/nsd-postgres -it /home/joeuser/web/birdnotes/nsd.tcl -u nobody -g web
- - As root, change the ownership of this file. We also need to delete - any logs that may be present from previous testing. If they are - owned by users other than nobody, - then AOLserver willl not be able to append to them. - -
-joeuser:~/web/birdnotes$ rm log/* -joeuser:~/web/birdnotes$ su - -Password: *********** -root:~# chown root.root /home/joeuser/web/birdnotes/run -root:~# chmod 700 /home/joeuser/web/birdnotes/run
- Now, we'll link our web root to the - /service directory. This causes - daemontools to monitor this directory. It should find your - run script and run it as soon as - you hit return. -
-root:~# killall nsd
-root:~# ln -s /home/joeuser/web/birdnotes /service
-root:~# ps -A | grep nsd
-19359 pts/3 00:00:08 nsd
-19361 pts/3 00:00:00 nsd
-19362 pts/3 00:00:00 nsd
-19363 pts/3 00:00:00 nsd
-19364 pts/3 00:00:00 nsd
- At this point, you should be able to use the - restart-aolserver script described - in Editing inittab. Daemontools, however, - provides you with more precise control. -
- - svc -d /service/birdnotes - - Bring the server down - -
- - svc -u /service/birdnotes - - Start the server up. Also, restart it whenever it stops. - -
- - svc -o /service/birdnotes - - Start the server up once. Do not restart it if it stops. - -
- - svc -t /service/birdnotes - - Stop and immediately restart the server - -
- - svc -k /service/birdnotes - - 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. - -
- At this point, these commands will work only for the - root user. We can give a group - permission to run these commands as well. Download this script to - /tmp. -
-root:~# cp /tmp/svgroup.txt /usr/local/bin/svgroup -root:~# chmod 755 /usr/local/bin/svgroup -root:~# svgroup web /service/birdnotes
- This command will give the web - group permission to use svc commands - on the birdnotes server. -
- Try it out. You may want to tail -f - ~/web/birdnotes/log/error.log in - another window, so you can see what happens when you type these - commands. -
-root:~# exit -joeuser:~$ # first, bring the server down -joeuser:~$ svc -d /service/birdnotes -joeuser:~$ # now, start the server up -joeuser:~$ svc -u /service/birdnotes -joeuser:~$ # wait for server to come up, then restart it -joeuser:~$ svc -t /service/birdnotes
- - Most of this information comes from Tom Jackson's AOLServer+Daemontools - Mini-HOWTO. - -
- If you want to run the service on port 80 (the default HTTP port), - you need to set the port to 80 in your - nsd.tcl config file. -
- Moreover, 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.
Skip down for instructions on Deleting a PostgreSQL tablespace. -
- Should it become necessary to rebuild a tablespace from scratch, - you can use the drop user command - in SVRMGRL with the cascade - option. This command will drop the user and every database object - the user owns.
-SVRMGR> drop user birdnotes cascade;
- If this does not work because svrmgrl "cannot drop a user that - is currently connected", make sure to kill the AOLserver using - this user. If it still does not work, do:
-SVRMGR> select username, sid, serial# from v$session where lower(username)='birdnotes';
and then
-SVRMGR> alter system kill session 'sid,serial#';
- where sid and serial# are - replaced with the corresponding values for the open session.
Use with caution!
- If you feel the need to delete everything - related to the service, you can also issue the following:
-SVRMGR> drop tablespace birdnotes including contents cascade constraints;
- Dropping a PostgreSQL tablespace is easy. You have to stop any - AOLserver instances that are using the database that you wish to - drop. If you're using daemontools, this is simple, just use the - 'down' flag (-d). If you're using inittab, you have to comment out - your server in /etc/inittab, - reread the inittab with /sbin/init - q, and then restart-aolserver - birdnotes.
Then, to drop the db, just do:
-joeuser:~$ dropdb birdnotes
-DROP DATABASE
Install Full Text Search (OPTIONAL). If you have installed OpenFTS and enabled + OpenFTS, you can now install the OpenFTS Driver package and + Full Text Search Engine package in the OpenACS service.
This is a good time to make a backup of your service. If this is a + production site, you should set up automatic nightly backups.
If you want traffic reports, set up analog or another log + processing program.
Follow the instruction on the home page to + change the appearance of your service or add more + packages. (more information)
Proceed to the tutorial to learn how to develop your own packages.
Test your backup and recovery procedure.