Index: openacs-4/packages/acs-core-docs/www/acs-admin.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/acs-admin.html,v diff -u -r1.8 -r1.8.2.1 --- openacs-4/packages/acs-core-docs/www/acs-admin.html 10 Aug 2002 20:07:20 -0000 1.8 +++ openacs-4/packages/acs-core-docs/www/acs-admin.html 24 Nov 2002 21:29:17 -0000 1.8.2.1 @@ -1,4 +1,2 @@ -
Help to the folks keeping an OpenACS installation up and running.
Help to the folks keeping an OpenACS installation up and running.
This is the place to look if you want to extend OpenACS and build on top - of what's already here. Here you can find out about the guts of the system.
Table of Contents
This is the place to look if you want to extend OpenACS and build on top + of what's already here. Here you can find out about the guts of the system.
Table of Contents
- Mat Kovach is graciously maintaining an AOLServer distribution that - includes all the patches and modules needed to run OpenACS 4.5. These - instructions will describe how to install using his source - distribution. He also has binaries for SuSE 7.3 and OpenBSD 2.8 (and - perhaps more to come), currently located at uptime.openacs.org. -
- It's also possible to download all the pieces and patches yourself: -
- AOLServer is available at aolserver.com -
- ArsDigita's AOLServer distribution (including - internationalization patches, nscache, nsrewrite, nssha1 and the - oracle driver) is available at arsdigita.com -
- The OpenACS PostgreSQL driver is available from OpenACS -
- nsxml is available at http://acs-misc.sourceforge.net. -
- The patch that makes exec work - on BSD is available at sourceforge.net -
- The patch that makes ns_uuencode - work for binary files is available at sourceforge.net -
- The patch that makes AOLServer respect the - -g flag is available at sourceforge.net -
+
+ Mat Kovach is graciously maintaining an AOLServer distribution that + includes all the patches and modules needed to run OpenACS 4.6. These + instructions will describe how to install using his source + distribution. He also has binaries for SuSE 7.3 and OpenBSD 2.8 (and + perhaps more to come), currently located at uptime.openacs.org. +
+ It's also possible to download all the pieces and patches yourself: +
+ AOLServer is available at aolserver.com +
+ ArsDigita's AOLServer distribution (including + internationalization patches, nscache, nsrewrite, nssha1 and the + oracle driver) is available at arsdigita.com +
+ The OpenACS PostgreSQL driver is available from OpenACS +
+ nsxml is available at http://acs-misc.sourceforge.net. +
+ The patch that makes exec work + on BSD is available at sourceforge.net +
+ The patch that makes ns_uuencode + work for binary files is available at sourceforge.net +
+ The patch that makes AOLServer respect the + -g flag is available at sourceforge.net +
- .... or just Download Mat's - AOLServer distribution to - /tmp + .... or just Download Mat's + AOLServer distribution to + /tmp -
+joeuser:~$ cd /tmp joeuser:/tmp$ wget -c http://uptime.openacs.org/aolserver-openacs/aolserver3.3ad13-oacs1-beta-src.tar.gz joeuser:/tmp$ cd- As root, untar - aolserver3.3ad13-oacs1-beta-src.tar.gz - into /usr/local/src + As root, untar + aolserver3.3ad13-oacs1-beta-src.tar.gz + into /usr/local/src -
+joeuser:~$ su - Password: ********** -root:~$ cd /usr/local/src -root:/usr/local/src# tar xzf /tmp/aolserver3.3ad13-oacs1-beta-src.tar.gz
- You will need a special user account for running AOLServer. This user - will be called nsadmin and belong - to the special group web. - nsadmin's home directory will - be /usr/local/aolserver.You must - execute these steps as root. -
- Run these commands: -
+root:~# cd /usr/local/src +root:/usr/local/src# tar xzf /tmp/aolserver3.3ad13-oacs1-beta-src.tar.gz +root:/usr/local/src# chown -R root.root aolserver
+ + 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 him 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 as the + nobody user and the + web group. We'll add your regular + user account to the web group and + make sure that OpenACS files are group readable and writable. + +
+ Run these commands: +
root:/usr/local/src# cd -root:~# groupadd nsadmin root:~# groupadd web -root:~# useradd -g nsadmin -G web -d /usr/local/aolserver nsadmin -root:~# passwd nsadmin -; Set password for nsadmin - -root:~# mkdir -p /web /usr/local/aolserver -root:~# chown -R nsadmin.web /usr/local/aolserver /web /usr/local/src/aolserver -root:~# chmod 775 /usr/local/aolserver /web -root:~# exit
At this point, you should customize the - nsadmin login scripts. Login as - nsadmin and add the following - lines to your - /usr/local/aolserver/.bash_profile: -
-joeuser:~$ su - nsadmin -Password: *********** -nsadmin:~$ emacs .bash_profile
- Add the first set of lines, if you're using Oracle. The 2nd set - of lines, if you're using PostgreSQL. Oracle - Note: 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. -
+root:~# adduser joeuser web
+root:~# exit+ + Next, we'll set up our environment variables. Add the following lines + to your /home/joeuser/.bash_profile: + +
+joeuser:~$ emacs .bash_profile
+ + Add the first set of lines, if you're using Oracle. The 2nd set of + lines, if you're using PostgreSQL. Oracle Note: + 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. + +
# For Oracle export ORACLE_BASE=/ora8/m01/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/8.1.7 @@ -98,136 +100,192 @@ # For PostgreSQL export PATH=$PATH:/usr/local/pgsql/bin export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/pgsql/lib
- Be absolutely certain that you have entered these lines correctly - and that you have saved the file - a slight error in these lines - can lead to many inscrutable error messages. Logout and log back - in so these settings will take effect. Use the - echo command to be sure that the - environment variables have been properly assigned. -
-nsadmin:~$ exit -joeuser:~$ su - nsadmin + + Be absolutely certain that you have entered these lines correctly and + that you have saved the file - a slight error in these lines can lead + to many inscrutable error messages. Logout and log back in so these + settings will take effect. Use the + echo command to be sure that the + environment variables have been properly assigned. + ++joeuser:~$ exit +LOGIN: joeuser Password: ********* -nsadmin:~$ echo $PATH +joeuser:~$ echo $PATH ...some other directory paths...:/usr/local/pgsql/bin -nsadmin:~$ echo $LD_LIBRARY_PATH +joeuser:~$ echo $LD_LIBRARY_PATH :/usr/local/pgsql/lib- Note: The result should be different if you're using Oracle. - /ora8/m01/app/oracle/product/8.1.7 - should have been in $PATH. -
- In order for nsxml to compile, you need libxml2 - (available from http://xmlsoft.org). On Debian, - this can be installed by doing apt-get install - libxml2-dev. Users of other distributions can - download rpms from ftp.gnome.org. You'll - need the libxml2 and - libxml2-devel packages. -
Prepare the distribution
-nsadmin:~$ cd /usr/local/src/aolserver -nsadmin:/usr/local/src/aolserver$ ./conf-clean + Note: The result should be different if you're using Oracle. + /ora8/m01/app/oracle/product/8.1.7 + should have been in $PATH. + +
+ + In order for nsxml to compile, you need libxml2 + (available from http://xmlsoft.org). On Debian, + this can be installed by doing apt-get install + libxml2-dev. Users of other distributions can + download rpms from rpmfind.net. You'll + need the libxml2 and + libxml2-devel packages. +
Prepare the distribution. You need to be root.
+joeuser:~$ su -p +Password: ******** +root:~# mkdir -p /usr/local/aolserver +root:~# cd /usr/local/src/aolserver +root:/usr/local/src/aolserver# ./conf-clean cat: BUILD-MODULES: No such file or directory Done.
- Put the name of the driver(s) that you want into - conf-db. This can be - "postgresql", - "oracle", or the word - "both" if you want both drivers - installed. -
-nsadmin:/usr/local/src/aolserver$ echo "postgresql" > conf-db
+ Put the name of the driver(s) that you want into + conf-db. This can be + "postgresql", + "oracle", or the word + "both" if you want both drivers + installed. - conf-inst should contain the - location where AOLserver is to be installed. This defaults to - /usr/local/aolserver, so we - don't need to change it. +
+root:/usr/local/src/aolserver# echo "postgresql" > conf-db
-
+ conf-inst should contain the + location where AOLserver is to be installed. This defaults to + /usr/local/aolserver, so we + don't need to change it. - conf-make should contain the - name of the GNU Make command on your system. It defaults to - gmake. You may need to change - this to make. -
-nsadmin:/usr/local/src/aolserver$ echo "make" > conf-make
- If you're going to be installing the Postgresql driver, you'll - have to adjust the makefile first. This will hopefully be cleaned - up in future versions of this distribution. -
-nsadmin:/usr/local/src/aolserver$ emacs pgdriver/makefile
- Edit the lines containing PGLIB and PGINC so they look like this: -
+
+ + conf-make should contain the + name of the GNU Make command on your system. It defaults to + gmake. You may need to change + this to make. +
+root:/usr/local/src/aolserver# echo "make" > conf-make
+ If you're going to be installing the Postgresql driver, you'll + have to adjust the makefile first. This will hopefully be cleaned + up in future versions of this distribution. +
+root:/usr/local/src/aolserver# emacs pgdriver/makefile
+ Edit the lines containing PGLIB and PGINC so they look like this: +
PGINC=/usr/local/pgsql/include PGLIB=/usr/local/pgsql/lib
Compile and install AOLserver and modules
-nsadmin:/usr/local/src/aolserver$ ./conf
- This takes about 5 minutes. All of the results are logged to - files in - /usr/local/src/aolserver/log. Make - sure to check these files to see if any errors occurred. -
- You will now test to ensure AOLserver is running correctly. We'll - use the sample config file provided with AOLserver. This file - will attempt to guess your IP address and hostname. It will then - set up the server at port 8000 of that IP address. -
-nsadmin:/usr/local/src/aolserver$ cd -nsadmin:~$ ./bin/nsd -t sample-config.tcl
- As the AOLserver daemon starts up, you should see a few normal - warnings (listed below), which are safe to ignore. -
+root:/usr/local/src/aolserver# ./conf
+ + This takes about 5 minutes. All of the results are logged to + files in + /usr/local/src/aolserver/log. Make + sure to check these files to see if any errors occurred. + +
+ + In order to test AOLserver, we'll run it using the sample-config.tcl + file provided in the AOLserver distribution. We need to adjust + permissions a little since AOLserver needs to be able to write its + logs properly. + +
+root:/usr/local/src/aolserver# cd /usr/local/aolserver +root:/usr/local/aolserver# chown -R root.web log servers +root:/usr/local/aolserver# chmod -R g+w log servers +root:/usr/local/aolserver# ls -l + drwxr-sr-x 8 root staff 1024 Nov 12 01:35 . + drwxrwsr-x 12 root staff 1024 Nov 12 01:25 .. + drwxr-xr-x 2 root staff 1024 Nov 12 01:36 bin + drwxr-xr-x 2 root staff 1024 Jun 11 2001 include + drwxr-xr-x 3 root staff 1024 Nov 12 01:36 lib + drwxrwxr-x 2 root web 1024 Nov 12 01:45 log + drwxr-xr-x 3 root staff 1024 Nov 12 01:35 modules + -rw-r--r-- 1 root staff 7320 Mar 31 2001 sample-config.tcl + drwxrwxr-x 3 root web 1024 Nov 12 01:35 servers
+
+ + Now, we'll run a quick test to ensure AOLserver is running + correctly. We'll use the sample config file provided with + AOLserver. This file will attempt to guess your IP address and + hostname. It will then start up the server at port 8000 of that + IP address. + +
+root:/usr/local/aolserver# ./bin/nsd -t sample-config.tcl -u nobody -g web
+ + As the AOLserver daemon starts up, you should see a few normal + warnings (listed below), which are safe to ignore. + +
Warning: nsd.tcl: nsssl not loaded -- key/cert files do not exist. -Warning: nsd.tcl: nscp not loaded -- user/password is not set.
- The first warning means that the server is missing files for - running ssl, a necessary module - for encrypted HTTPS. See Scott Goodwin's excellent - documentation if you want to set up SSL. The second - warning means that the AOLserver control panel, a special module - for administering AOLserver, could not be loaded. If you're - interested in configuring nscp, please see the AOLserver - documentation. -
- Test to see if AOLserver is working by starting - Mozilla or - Lynx, and surfing over to your - web page: -
-nsadmin:~$ lynx localhost:8000
- You should see a "Welcome to AOLserver" page. If this - doesn't work, try going to - http://127.0.0.1:8000/. If this - still doesn't work, check out the Troubleshooting AOLServer section below. -
- Shutdown the test server:
-nsadmin:~$ killall nsd
- The killall command will kill - all processes with the name nsd, - but clearly this is not a good tool to use for managing your - services in general. We cover this topic in the Keep AOLServer alive section. -
If you can't view the welcome page, it's likely - there's a problem with your server configuration. Start by - viewing your AOLserver log, which is in - /usr/local/aolserver/log/server.log. - You should also try to find lines of the form:
+Warning: nsd.tcl: nscp not loaded -- user/password is not set.
+ + The first warning means that the server is missing files for + running ssl, a necessary module + for encrypted HTTPS. See Scott Goodwin's excellent + documentation if you want to set up SSL. The second + warning means that the AOLserver control panel, a special module + for administering AOLserver, could not be loaded. If you're + interested in configuring nscp, please see the AOLserver + documentation. + +
+ + Test to see if AOLserver is working by starting + Mozilla or + Lynx, and surfing over to your + web page: + +
+root:~# lynx localhost:8000
+ + You should see a "Welcome to AOLserver" page. If this + doesn't work, try going to + http://127.0.0.1:8000/. If this + still doesn't work, check out the Troubleshooting AOLServer section below. + +
+ + Shutdown the test server: + +
+root:~# killall nsd
+ + The killall command will kill + all processes with the name nsd, + but clearly this is not a good tool to use for managing your + services in general. We cover this topic in the Keep AOLServer alive section. + +
+ + If you can't view the welcome page, it's likely there's a + problem with your server configuration. Start by viewing your + AOLserver log, which is in + /usr/local/aolserver/log/server.log. + You should also try to find lines of the form: + +
[01/Jun/2000:12:11:20][5914.2051][-nssock-] Notice: nssock: listening on http://localhost.localdomain:8000 (127.0.0.1:8000) -[01/Jun/2000:12:11:20][5914.2051][-nssock-] Notice: accepting connections
If you can find these lines, try entering the URL the server is - listening on. If you cannot find these lines, there must be an error - somewhere in the file. Search for lines beginning with the word - Error instead of - Notice.
The sample-config.tcl file grabs - your address and hostname from your OS settings.
+[01/Jun/2000:12:11:20][5914.2051][-nssock-] Notice: accepting connections
+ + If you can find these lines, try entering the URL the server is + listening on. If you cannot find these lines, there must be an error + somewhere in the file. Search for lines beginning with the word + Error instead of + Notice. + +
+ + The sample-config.tcl file grabs + your address and hostname from your OS settings. + +
set hostname [ns_info hostname] -set address [ns_info address]
If you get an error that nssock can't get the requested address, - you can set these manually:
-#set hostname [ns_info hostname] -set hostname 127.0.0.1 +set address [ns_info address]
+ + If you get an error that nssock can't get the requested address, you + can set these manually. If you type 0.0.0.0, AOLserver will try to + listen on all available addresses. + +
+set hostname [ns_info hostname] #set address [ns_info address] -set address 127.0.0.1
- If you get an error that nssock can't assign the requested port, - then that port may already be taken by another service. Try specifying - a different port in the config file. -
Pat Developer has a client project and wants to model the company, its offices, its divisions, and its departments as groups and the employees as -users.
We start with Groups, which contain members; the -member can be either a person or another group (i.e. a +users.
We start with Groups, which contain members; the +member can be either a person or another group (i.e. a member is a party).
In addition to membership, the party and groups system defines a -composition relationship that may exist between groups: A -group can be a component of another group. The child group +composition relationship that may exist between groups: A +group can be a component of another group. The child group is called a component group; the parent group is called a -composite group.
A group Gc can be a member and/or a component -of another group Gp; the difference is in the way -the members of Gc are related to -Gp:
If a party P is a member (or a component) of -Gc and if Gc is a -component of Gp, then P is also -a member (or a component) of Gp
If a party P is a member (or a component) of -Gc and if Gc is a -member of Gp, then no -relationship between P and -Gp exists as a result of the relationship between -Gp and Gp.
Consider an example to make this less abstract: Pretend that the Sierra +composite group.
A group Gc can be a member and/or a component +of another group Gp; the difference is in the way +the members of Gc are related to +Gp:
If a party P is a member (or a component) of +Gc and if Gc is a +component of Gp, then P is also +a member (or a component) of Gp
If a party P is a member (or a component) of +Gc and if Gc is a +member of Gp, then no +relationship between P and +Gp exists as a result of the relationship between +Gp and Gp.
Consider an example to make this less abstract: Pretend that the Sierra Club is a member of Greenpeace. The Sierra Club has chapters; each chapter is a component of the Sierra Club. If Eddie Environmentalist is a member of the Massachusetts Chapter of the Sierra Club, Eddie is @@ -68,160 +68,158 @@ Massachusetts chapter), and between the Sierra Club and Greenpeace.
Membership requirements can vary from group to group. The parties and groups system must provide a base type that specifies the bare minimum necessary to join a group.
The parties and groups system must support constraints between a composite -group GP and any of its component groups, -GC. For example, the system should be able to -enforce a rule like: Do not allow a party P to become a -member of GC unless P is already -a member of GP.
The data model for the parties and groups system must provide support for -the following types of entities:
The data model for the parties and groups system must provide support for +the following types of entities:
A party is an entity used to represent either a -group or a person.
The data model should enforce these constraints:
10.10 A party has an email address, which can be -empty.
10.20 A party may have multiple email addresses -associated with it.
10.30 The email address of a party must be unique within -an OpenACS system.
A party is an entity used to represent either a +group or a person.
The data model should enforce these constraints:
10.10 A party has an email address, which can be +empty.
10.20 A party may have multiple email addresses +associated with it.
10.30 The email address of a party must be unique within +an OpenACS system.
A group is a collection of zero or more parties.
20.10 The data model should support the subclassing of -groups via OpenACS Objects.
A group is a collection of zero or more parties.
20.10 The data model should support the subclassing of +groups via OpenACS Objects.
A person represents an actual human being, past or -present.
A person represents an actual human being, past or +present.
A user is a person who has registered with an OpenACS site. A -user may have additional attributes, such as a screen name.
The data model should enforce these constraints:
40.10 A user must have a non-empty email address.
40.20 Two different users may not have the same email +
A user is a person who has registered with an OpenACS site. A +user may have additional attributes, such as a screen name.
The data model should enforce these constraints:
40.10 A user must have a non-empty email address.
40.20 Two different users may not have the same email address on a single OpenACS installation; i.e., an email address identifies a -single user on the system.
40.30 A user may have multiple email addresses; for -example, two or more email addresses may identify a single user.
40.40 A user must have password field which can be +single user on the system.
40.30 A user may have multiple email addresses; for +example, two or more email addresses may identify a single user.
40.40 A user must have password field which can be empty.
The data model for the parties and groups system must provide support for -the following types of relationships between entities:
-A party P is considered a member of a -group G
when a direct membership relationship exists between P -and G
or when there exists a direct membership relationship between -P and some group GC and -GC has a composition relationship (c.f., 60.0) with G.
50.10 A party may be a member of multiple groups.
50.20 A party may be a member of the same group multiple +A party P is considered a member of a +group G
when a direct membership relationship exists between P +and G
or when there exists a direct membership relationship between +P and some group GC and +GC has a composition relationship (c.f., 60.0) with G.
50.10 A party may be a member of multiple groups.
50.20 A party may be a member of the same group multiple times only when all the memberships have different types; for example, Jane may be a member of The Company by being both an Employee and an -Executive.
50.30 A party as a member of itself is not supported.
50.40 The data model must support membership -constraints.
50.50The data model should support the subclassing of +Executive.
50.30 A party as a member of itself is not supported.
50.40 The data model must support membership +constraints.
50.50The data model should support the subclassing of membership via OpenACS Relationships.
A group GC is considered a -component of a second group -GP
when a direct composition relationship exists between -GC and GP
or when there exists a direct composition relationship between -GC and some group Gi -and Gi has a composition relationship with -GP.
60.10A group may be a component of multiple groups.
60.20A group as a component of itself is not -supported.
60.30The data model must support component -constraints.
60.40The data model should support the subclassing of -composition via OpenACS Relationships.
The API should let programmers accomplish the following tasks:
A group GC is considered a +component of a second group +GP
when a direct composition relationship exists between +GC and GP
or when there exists a direct composition relationship between +GC and some group Gi +and Gi has a composition relationship with +GP.
60.10A group may be a component of multiple groups.
60.20A group as a component of itself is not +supported.
60.30The data model must support component +constraints.
60.40The data model should support the subclassing of +composition via OpenACS Relationships.
The API should let programmers accomplish the following tasks:
The parties and groups system provides a well defined API call that creates a new group by running the appropriate transactions on the parties and groups system data model. This API is subject to the constraints laid out -in the data model.
The parties and groups system provides a well defined API call that creates a new person by running the appropriate transactions on the parties and groups system data model. This API is subject to the constraints laid out -in the data model.
The parties and groups system provides a well defined API call that creates a new user by running the appropriate transactions on the parties and groups system data model. This API is subject to the constraints laid out in -the data model.
The parties and groups system provides a well defined API call that creates a new user by running the appropriate transactions on an existing person entity. This API is subject to the constraints laid out in the data -model.
The parties and groups system provides a well defined API call that demotes an existing user entity to a person entity by running the appropriate transactions on the existing user. This API is subject to the constraints -laid out in the data model.
The programmer should be able to modify, add, and delete attributes on any -party. This API is subject to the constraints laid out in the data model.
The programmer should be able to view the attributes on any party. This -API is subject to the constraints laid out in the data model.
The system provides an API for deleting a party. This API is subject to -the constraints laid out in the data model.
100.30 The system may provide a single API call to remove -the party from all groups and then delete the party.
100.40 In the case of a group, the system may provide a +the constraints laid out in the data model.
100.30 The system may provide a single API call to remove +the party from all groups and then delete the party.
100.40 In the case of a group, the system may provide a single API call to remove all parties from a group and then delete the -group.
The parties and groups system provides an API for adding a party as a member of a group. This API is subject to the constraints laid out in the -data model.
The parties and groups system provides an API for adding a group as a component of a second group. This API is subject to the constraints laid out -in the data model.
The parties and groups system provides an API for deleting a party's membership in a group. This API is subject to the constraints laid out in the -data model.
The parties and groups system provides an API for deleting a group's composition in a second group. This API is subject to the constraints laid -out in the data model.
The parties and groups system provides an API for answering the question: -"Is party P a member of group -G?"
The parties and groups system provides an API for answering the question: -"Is group GC a component of group -GP?"
The parties and groups system provides an API for answering the question: -"Which parties are members of group G?"
The parties and groups system provides an API for answering the question: -"Which groups are components of group G?"
The parties and groups system provides an API for answering the question: -"Of which groups is party P a member?"
The parties and groups system provides an API for answering the question: -"Of which groups is group G a component?"
The parties and groups system provides an API for answering the question: -"Is party P allowed to become a member of group -G?"
The parties and groups system provides an API for answering the question: -"Is group GC allowed to become a component -of group GP?"
Since many pages at a site may check membership in a group before serving a page (e.g., as part of a general permissions check), the data model must support the efficient storage and retrieval of party attributes and -membership.
Since many SQL queries will check membership in a group as part of the where clause, whatever mechanism is used to check membership in SQL should be fairly small and simple.
The user interface is a set of HTML pages that are used to drive the -underlying API. The user interface may provide the following functions:
200.0 Create a party
210.0 View the attributes of a party
220.0 Update the attributes of a party
240.0 Delete a party
250.0 Add a party to a group
260.0 Remove a party from a group
270.0 Perform the membership and composition checks -outlined in 130.x to 165.x
| Document Revision # | Action Taken, Notes | When? | By Whom? |
| 0.1 | Creation | 08/16/2000 | Rafael Schloming |
| 0.2 | Initial revision | 08/19/2000 | Mark Thomas |
| 0.3 | Edited and reviewed, conforms to requirements template | 08/23/2000 | Kai Wu |
| 0.4 | Further revised, added UI requirements | 08/24/2000 | Mark Thomas |
| 0.5 | Final edits, pending freeze | 08/24/2000 | Kai Wu |
| 0.6 | More revisions, added composition requirements | 08/30/2000 | Mark Thomas |
| 0.7 | More revisions, added composition requirements | 09/08/2000 | Mark Thomas |
200.0 Create a party
210.0 View the attributes of a party
220.0 Update the attributes of a party
240.0 Delete a party
250.0 Add a party to a group
260.0 Remove a party from a group
270.0 Perform the membership and composition checks +outlined in 130.x to 165.x
| Document Revision # | Action Taken, Notes | When? | By Whom? |
| 0.1 | Creation | 08/16/2000 | Rafael Schloming |
| 0.2 | Initial revision | 08/19/2000 | Mark Thomas |
| 0.3 | Edited and reviewed, conforms to requirements template | 08/23/2000 | Kai Wu |
| 0.4 | Further revised, added UI requirements | 08/24/2000 | Mark Thomas |
| 0.5 | Final edits, pending freeze | 08/24/2000 | Kai Wu |
| 0.6 | More revisions, added composition requirements | 08/30/2000 | Mark Thomas |
| 0.7 | More revisions, added composition requirements | 09/08/2000 | Mark Thomas |
Table of Contents
Table of Contents
Table of Contents
Table of Contents
- Compared to its predecessors, version 4.5 of OpenACS has a much +
+ Compared to its predecessors, version 4.6 of OpenACS has a much more structured organization, i.e. the most significant change is found at the system architecture level, reflected in the following hierarchy: -
The OpenACS 4.5 Kernel, which handles system-wide necessities +
The OpenACS 4.6 Kernel, which handles system-wide necessities such as metadata, security, users and groups, subsites, and package management and deployment. -
The OpenACS 4.5 Core, which comprises all the other packages +
The OpenACS 4.6 Core, which comprises all the other packages that ship with the kernel and are most frequently needed by users, such as templating, bboard, and user registration/management. The packages tend to be developed and distributed with the kernel. -
OpenACS 4.5 Application packages, which typically provide +
OpenACS 4.6 Application packages, which typically provide user-level web services built on top of the Kernel and Core. Such packages include those built by ArsDigita as well as external contributors. Application packages are developed separately from the Kernel, and are typically released independently of it.
This document provides a high level overview of the kernel package. Documentation for the other packages can be found elsewhere. -
Here are some tips from Don Baccus regarding backup strategy:
- The need for making backups should be self-explanatory. There are - several strategies you can use. My own strategy for minimizing the - odds that I'll lose all my data is quite simple: -
- The database is stored on a mirrored (RAID 1) disk. -
- The machine has battery backup. -
- Backups are made nightly onto a third disk on another controller -
- FTP is used to copy the resulting backup to two separate remote - servers in two locations -
- Rather than making remote copies, you might choose to dump to tape or - writeable CD media. Whatever strategy you use, it is important to - routinely check dumps to make sure they can be reloaded. The strategy - outlined above means that in the case of catastrophic failure, I'll - lose at most one day's data. +
- By mirroring disks and using a battery backup, preferably one that - can trigger an automatic and controlled shutdown of the system when - the battery runs low, you greatly lower the odds of ever having to - use your nightly backup. Despite this, it is important to take - backups seriously if the data stored at your site is valuable to you - or your users. -
- While you're working with Oracle, you should configure it to do - automatic exports. An export is a separate backup copy of the - database. This copy includes all of the database's state at the - time that the export was initiated. If your database is corrupted, - you can restore from one of these backups. You should do this step as - root. -
- Download the backup script. Save the file export-oracle.txt as - /tmp/export-oracle.txt -
- Login as root. The following commands will install the export script: -
-nsadmin:~$ su - + Here are some tips from Don Baccus regarding backup strategy: + ++ + The need for making backups should be self-explanatory. There are + several strategies you can use. My own strategy for minimizing the + odds that I'll lose all my data is quite simple: + +
+ The database is stored on a mirrored (RAID 1) disk. +
+ The machine has battery backup. +
+ Backups are made nightly onto a third disk on another controller +
+ FTP is used to copy the resulting backup to two separate remote + servers in two locations +
+ + Rather than making remote copies, you might choose to dump to tape or + writeable CD media. Whatever strategy you use, it is important to + routinely check dumps to make sure they can be reloaded. The strategy + outlined above means that in the case of catastrophic failure, I'll + lose at most one day's data. + +
+ + By mirroring disks and using a battery backup, preferably one that + can trigger an automatic and controlled shutdown of the system when + the battery runs low, you greatly lower the odds of ever having to + use your nightly backup. Despite this, it is important to take + backups seriously if the data stored at your site is valuable to you + or your users. + +
+ While you're working with Oracle, you should configure it to do + automatic exports. An export is a separate backup copy of the + database. This copy includes all of the database's state at the + time that the export was initiated. If your database is corrupted, + you can restore from one of these backups. You should do this step as + root. +
+ Download the backup script. Save the file export-oracle.txt as + /tmp/export-oracle.txt +
+ Login as root. The following commands will install the export script: +
+joeuser:~$ su - Password: *********** root:~# cp /tmp/export-oracle.txt /usr/sbin/export-oracle root:~# chmod 700 /usr/sbin/export-oracle
@@ -52,17 +62,17 @@ root:~# mkdir /ora8/m02/oracle-exports root:~# chown oracle.dba /ora8/m02/oracle-exports root:~# chmod 770 /ora8/m02/oracle-exports
- Now edit - /usr/sbin/export-oracle and - change the SERVICE_NAME and - DATABASE_PASSWORD fields to - their correct values. If you want to use a directory other than - /ora8/m02/oracle-exports, you - also need to change the - exportdir setting. -
- Test the export procedure by running the command: -
+ Now edit + /usr/sbin/export-oracle and + change the SERVICE_NAME and + DATABASE_PASSWORD fields to + their correct values. If you want to use a directory other than + /ora8/m02/oracle-exports, you + also need to change the + exportdir setting. ++ Test the export procedure by running the command: +
root:~# /usr/sbin/export-oracle mv: /ora8/m02/oracle-exports/oraexport-service_name.dmp.gz: No such file or directory @@ -100,217 +110,227 @@ . exporting post-schema procedural objects and actions . exporting statistics Export terminated successfully without warnings.If you don't have any warnings, proceed to automate the - backups.
- Automating backups is accomplished using the UNIX - crontab facility.
- While still root, run the - following command. You can replace the - EDITOR="emacs -nw" - portion with whatever editor your prefer, such as - EDITOR=vi. -
+ backups.
+ Automating backups is accomplished using the UNIX + crontab facility.
+ While still root, run the + following command. You can replace the + EDITOR="emacs -nw" + portion with whatever editor your prefer, such as + EDITOR=vi. +
root:~# export EDITOR="emacs -nw" root:~# crontab -e
Now add the following line on a line by itself
0 23 * * * /usr/sbin/export-oracle
- Save the file, exit the editor. Verify that the addition - succeeded by checking the output of the following command.
+ Save the file, exit the editor. Verify that the addition + succeeded by checking the output of the following command.root:~# crontab -l | grep export-oracle 0 23 * * * /usr/sbin/export-oracle root:~# exit ; LogoutIf you see the line, go ahead and log out.
- Dowload this script - to /tmp. At the top of the script - are several variables that you'll need to customize: -
- bak - location where you want - local backups to be saved -
- servername - name of your server - (and database instance) -
- ftp_user - username on your ftp - account -
- ftp_password - password on your - ftp account -
- ftp_dir - path on the remote - server where your backups will be uploaded -
- ftp_server - your ftp server -
+ Dowload this script + to /tmp. At the top of the script + are several variables that you'll need to customize: +
+ bak - location where you want + local backups to be saved +
+ servername - name of your server + (and database instance) +
+ ftp_user - username on your ftp + account +
+ ftp_password - password on your + ftp account +
+ ftp_dir - path on the remote + server where your backups will be uploaded +
+ ftp_server - your ftp server +
- Next, we'll save this file to our server's - tcl directory so that it will be - loaded on startup. It will automatically be run every night at - midnight. Note that this script only backs up the database - not the - OpenACS scripts and file content. -
-nsadmin:~$ cp /tmp/acs-pgbackup-init.txt /web/birdnotes/tcl/acs-pgbackup-init.tcl -nsadmin:~$ restart-aolserver birdnotes
- That's it! The script will email you with each successful backup (or - if it fails, it will send you an email with the reason) -
- The "vacuum" command must be run periodically to reclaim space. The - "vacuum analyze" form additionally collects statistics on the - disbursion of columns in the database, which the optimizer uses when - it calculates just how to execute queries. The availability of this - data can make a tremendous difference in the execution speed of - queries. This command can also be run from cron, but it probably makes - more sense to run this command as part of your nightly backup - procedure - if "vacuum" is going to screw up the database, you'd - prefer it to happen immediately after (not before!) you've made a - backup! The "vacuum" command is very reliable, but conservatism is - the key to good system management. So, if you're using the export - procedure described above, you don't need to do this extra step. -
Edit your crontab:
-nsadmin:~$ crontab -e
We'll set vacuum up to run nightly at 1 AM. Add the following - line:
+ Next, we'll save this file to our server's + tcl directory so that it will be + loaded on startup. It will automatically be run every night at + midnight. Note that this script only backs up the database - not the + OpenACS scripts and file content. ++joeuser:~$ cp /tmp/acs-pgbackup-init.txt ~/web/birdnotes/tcl/acs-pgbackup-init.tcl +joeuser:~$ restart-aolserver birdnotes+ That's it! The script will email you with each successful backup (or + if it fails, it will send you an email with the reason) +
+ The "vacuum" command must be run periodically to reclaim space. The + "vacuum analyze" form additionally collects statistics on the + disbursion of columns in the database, which the optimizer uses when + it calculates just how to execute queries. The availability of this + data can make a tremendous difference in the execution speed of + queries. This command can also be run from cron, but it probably makes + more sense to run this command as part of your nightly backup + procedure - if "vacuum" is going to screw up the database, you'd + prefer it to happen immediately after (not before!) you've made a + backup! The "vacuum" command is very reliable, but conservatism is + the key to good system management. So, if you're using the export + procedure described above, you don't need to do this extra step. +
Edit your crontab:
+joeuser:~$ crontab -e
We'll set vacuum up to run nightly at 1 AM. Add the following + line:
0 1 * * * /usr/local/pgsql/bin/vacuumdb birdnotes
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
- Download another copy of openacs4.tcl.txt - into /tmp.
-nsadmin:~$ cp /tmp/openacs4.tcl.txt ./birdnotes-dev.tcl -nsadmin:~$ chmod 660 birdnotes-dev.tcl -nsadmin:~$ emacs birdnotes-dev.tcl
Just like in the section called “Configuring AOLserver”, - 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.
+ 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 “Configuring AOLserver”, + 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. + 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.
- You can either copy your current OpenACS installation: -
-nsadmin:~$ cd /web -nsadmin:~$ cp -r birdnotes birdnotes-dev
- Or Download the OpenACS - 4 software into /tmp again. -
-nsadmin:~$ cd /web -nsadmin:/web$ tar xzvf /tmp/alpha2.tgz -nsadmin:/web$ mv openacs-4 birdnotes-dev
- Start your new server! -
-nsadmin:/web$ cd
-nsadmin:~$ /usr/local/aolserver/bin/nsd-postgres -t /usr/local/aolserver/birdnotes-dev.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.
- OpenACS uses the OpenFTS package to - implement site-wide-search. You'll need to have the Tcl development - libraries and headers installed. (Debian users: - apt-get install tcl8.3-dev) -
- As root, download the - Search-OpenFTS driver. -
-nsadmin:~$ su - + OpenACS uses the OpenFTS package to + implement site-wide-search. As of this writing, the current version + is 0.3.2. There are good instructions included in the OpenFTS + instructions which I will repeat here. Be sure to look at those + instructions if you're installing a version later than 0.3.2; the + instructions may have changed. You'll need to have the Tcl + development libraries and headers installed. (Debian users: + apt-get install tcl8.3-dev) + +
+ + As root, download the latest TCL + version of the Search-OpenFTS driver from SourceForge + into /tmp. Extract the source + into /usr/local/src + +
+joeuser:~$ su - Password: ********** -root:~# cd /tmp -root:/tmp# wget http://prdownloads.sourceforge.net/openfts/Search-OpenFTS-tcl-0.2.tar.gz root:~# cd /usr/local/src -root:/usr/local/src# tar xzf /tmp/Search-OpenFTS-tcl-0.2.tar.gz -root:/usr/local/src# chown -R nsadmin.web Search-OpenFTS-tcl-0.2 -root:/usr/local/src# exit- Configure it. Note that you may need to set - --with-tcl=(your Tcl library - location). For Debian, add this to the end of the - ./configure command: - --with-tcl=/usr/lib/tcl8.3 -
-nsadmin:~$ cd /usr/local/src/Search-OpenFTS-tcl-0.2 -nsadmin:/usr/local/src/Search-OpenFTS-tcl-0.2$ ./configure --with-aolserver-src=/usr/local/src/aolserver/aolserver- In order to compile on Debian, I had to edit my - Makefile.global. Add - -I/usr/include/tcl8.3 to the - line where INC is defined, so it looks like this: -
-INC = ../include -I/usr/include/tcl8.3Then compile it:
-nsadmin:/usr/local/src/Search-OpenFTS-tcl-0.2$ make -nsadmin:/usr/local/src/Search-OpenFTS-tcl-0.2$ cd aolserver -nsadmin:/usr/local/src/Search-OpenFTS-tcl-0.2/aolserver$ make- Install it. You need to do this step as root since some of the - libraries will be installed alongside your TCL libraries and some - alongside your PostgreSQL libraries. -
-nsadmin:/usr/local/src/Search-OpenFTS-tcl-0.2/aolserver$ su - -Password: *********** -root:~# cd /usr/local/src/Search-OpenFTS-tcl-0.2 -root:/usr/local/src/Search-OpenFTS-tcl-0.2# make install -root:/usr/local/src/Search-OpenFTS-tcl-0.2# exit -nsadmin:/usr/local/src/Search-OpenFTS-tcl-0.2/aolserver$ cp nsfts.so /usr/local/aolserver/bin/- Add the following line to your aolserver config file (in our - example: - /usr/local/aolserver/birdnotes.tcl) - in the "ns_section ns/server/${server}/modules" section: -
+root:/usr/local/src# tar xzf /tmp/Search-OpenFTS-tcl-0.3.2.tar.gz +root:/usr/local/src# chown -R root.root Search-OpenFTS-tcl-0.3.2 +root:/usr/local/src# cd Search-OpenFTS-tcl-0.3.2+ + Configure it. Note that you may need to set + --with-tcl=(your Tcl library + location). For Debian, add this to the end of the + ./configure command: + --with-tcl=/usr/lib/tcl8.3 + +
+root:/usr/local/src/Search-OpenFTS-tcl-0.3.2# ./configure --with-aolserver-src=/usr/local/src/aolserver/aolserver+ + Then compile it, copy the module to your AOLserver + bin directory, and copy the TCL + files to your AOLserver tcl + directory: + +
+root:/usr/local/src/Search-OpenFTS-tcl-0.3.2# cd aolserver +root:/usr/local/src/Search-OpenFTS-tcl-0.3.2/aolserver# make +root:/usr/local/src/Search-OpenFTS-tcl-0.3.2/aolserver# cp nsfts.so /usr/local/aolserver/bin +root:/usr/local/src/Search-OpenFTS-tcl-0.3.2/aolserver# cd ..+ + Load the tsearch module SQL into your database and then compile + the openfts module in the Postgresql contrib directory. + +
+root:/usr/local/src/Search-OpenFTS-tcl-0.3.2# cp -r pgsql_contrib_openfts /usr/local/src/postgresql-7.2.3/contrib +root:/usr/local/src/Search-OpenFTS-tcl-0.3.2# cd /usr/local/src/postgresql-7.2.3/contrib/pgsql_contrib_openfts +root:/usr/local/postgresql-7.2.3/contrib/pgsql_contrib_openfts# make +root:/usr/local/postgresql-7.2.3/contrib/pgsql_contrib_openfts# su postgres +postgres:/usr/local/postgresql-7.2.3/contrib/pgsql_contrib_openfts$ make install +postgres:/usr/local/postgresql-7.2.3/contrib/pgsql_contrib_openfts$ /usr/local/pgsql/bin/psql birdnotes -f /usr/local/src/postgresql-7.2.3/contrib/tsearch/tsearch.sql +postgres:/usr/local/postgresql-7.2.3/contrib/pgsql_contrib_openfts$ /usr/local/pgsql/bin/psql birdnotes -f openfts.sql +postgres:/usr/local/postgresql-7.2.3/contrib/pgsql_contrib_openfts$ exit +root:/usr/local/postgresql-7.2.3/contrib/pgsql_contrib_openfts# exit+ + Uncomment the following line in your aolserver config file (in our + example: + ~/web/birdnotes/nsd.tcl) + in the "ns_section ns/server/${server}/modules" section: + +
ns_param nsfts ${bindir}/nsfts.so- Load the openFTS code into your database: -
-nsadmin:/usr/local/src/Search-OpenFTS-tcl-0.2/aolserver$ cd -nsadmin:~$ psql -f /web/birdnotes/packages/openfts-driver/sql/postgresql/load.sql birdnotes -nsadmin:~$ restart-aolserver birdnotes- Open a browser and go to your server - (http://yourserver:port). Click on the "Package Manager" link in - the "Quick Links" section on the right side of the page. -
- Click on the "Install packages" link and follow the instructions - to install the Note package and the OpenFTS Driver 4.2 package. -
- Restart your server. + Open a browser and go to your server + (http://yourserver:port). Click on the "Package Manager" link in + the "Quick Links" section on the right side of the page. +
+ Click on the "Install packages" link and follow the instructions + to install the Note package and the OpenFTS Driver 4.2 package. +
+ Restart your server. -
-nsadmin:~$ restart-aolserver birdnotes-- Give the server a few minutes to restart and then go back to your - server's front page and click on "Site Map" from the "Quick - Links" -
- Create a "new sub folder" under "Main Site". Call the url - "openfts". -
Click "mount" to mount the OpenFTS driver at the url - "openfts" (despite what the system says about these packages not - being meant to be mounted) -
Click on "Set parameters" for the OpenFTS instance - and make sure that openfts_tcl_src_path properly points to your - local copy of the Search package source code. If you've followed - these directions strictly, you shouldn't need to change it. -
- Create another folder under "Main Site" at the url - "search". Create a "new application". Call the application - "Search" and choose the "Search" package from the drop-down list. -
- Create a third folder under "Main Site" at the url - "notes". Create a "new application". Call the application "Notes" - and choose the "Note" package from the drop-down list. -
- Restart the server. -
- Return to your home page. Near the bottom of the page, Click on - the "OpenFTS Driver" link. Then click on - "Administration". Finally, click on "Initialize OpenFTS - Engine". Accept the defaults and continue. -
- Click on the "Main Site" link to get back to the home page. Now, - click on the "ACS Service Contract" link near the bottom of the - home page. -
- Click on the link to "install" the FtsEngineDriver. Also, click - the link to install the Note content provider. -
- Restart the server. You can try inserting some notes and then - going to the search page to search for stuff. Note that the - content may not get indexed immediately, so give it a few - minutes. -
+joeuser:~$ svc -t /service/birdnotes+
+ Give the server a few minutes to restart and then go back to your + server's front page and click on "Site Map" from the "Quick + Links" +
+ Create a "new sub folder" under "Main Site". Call the url + "openfts". +
Click "mount" to mount the OpenFTS driver at the url + "openfts" (despite what the system says about these packages not + being meant to be mounted) +
+ + Click the "Set parameters" link next to OpenFTS. Change the + openfts_tcl_src_path to + /usr/local/src/Search-OpenFTS-tcl-0.3.2 + +
+ Create another folder under "Main Site" at the url + "search". Create a "new application". Call the application + "Search" and choose the "Search" package from the drop-down list. +
+ Create a third folder under "Main Site" at the url + "notes". Create a "new application". Call the application "Notes" + and choose the "Note" package from the drop-down list. +
+ Restart the server. +
+ Return to your home page. Near the bottom of the page, Click on + the "OpenFTS Driver" link. Then click on + "Administration". Finally, click on "Initialize OpenFTS + Engine". Accept the defaults and continue. +
+ Click on the "Main Site" link to get back to the home page. Now, + click on the "ACS Service Contract" link near the bottom of the + home page. +
+ Click on the link to "install" the FtsEngineDriver. Also, click + the link to install the Note content provider. +
+ Restart the server. You can try inserting some notes and then + going to the search page to search for stuff. Note that the + content may not get indexed immediately, so give it a few + minutes. +
I'm currently using Debian GNU/Linux, so this guide may show that bias. Installation on any Linux distribution should be similar and @@ -43,22 +44,25 @@ to set aside a swap partition which is twice your RAM size.
Some things that you will need: -
| Requirement | Reason | ||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| recent kernel | Currently version 2.2.19 or - greater is the standard requirement. Some people are using 2.4.x - (2.4.16) kernels. | ||||||||||||||||||||||||||||||||||||||||||
| bash | Bash is the standard Linux shell.
- We assume you are using bash for these instructions. If you're
- not using bash, then you will need to substitute your shell's
- conventions for setting environment variables when appropriate.
+
Locations:
+ None of these locations are set in stone - they're simply the values that we've chosen. You are free to install your software in other locations, but you'll need to adjust the instructions in this document to point to those locations. - - Here's a list of some helpful documentation for various OS's -
- Once you get your OS installed, it's imperative that you secure your - installation. As Jon Griffin repeatedly warns us, "No distribution is - secure out of the box." Again, this topic is too big to cover properly - here, so see these links. -
($Id$)
+
+ + + Note that previous versions of this document recommended using + /web for the web root and running + AOLserver as the nsadmin user. For + security and compatibility reasons, this is no longer recommended. + + + + This guide will use joeuser as a + normal user. Substitute your own username wherever you see + joeuser. + + + Here's a list of some helpful documentation for various OS's +
+ + Once you get your OS installed, it's imperative that you secure your + installation. As Jon Griffin repeatedly warns us, "No distribution is + secure out of the box." Again, this topic is too big to cover properly + here, so see these links. + +
($Id$)
-The OpenACS 4.5 Permissions system allows developers and administrators to + +The OpenACS 4.6 Permissions system allows developers and administrators to set access control policies at the object level, that is, any application or system object represented by a row in the acs_objects table can be access-controlled via a simple @@ -14,7 +14,7 @@ Although this may all sound easy and wonderful, no developer or administrator would want to explicitly set access control rights for every user and every object on a -site. Therefore, OpenACS 4.5 has two auxiliary mechanisms for making this +site. Therefore, OpenACS 4.6 has two auxiliary mechanisms for making this easier: First, the Groups system allows users to be grouped together in flexible ways. Second, the object model defines a notion of object context, which allows applications to group objects @@ -26,7 +26,7 @@ define simple groupings of users. Each group had a human readable name and unique ID, and there was a single mapping table that mapped users to groups. (The actual data model was more complicated because it -contained a meta-data system much like the OpenACS 4.5 object type system, +contained a meta-data system much like the OpenACS 4.6 object type system, but that's not relevant right now.) The 3.x groups system, while very useful, was limited in few ways. The @@ -48,7 +48,7 @@ member of Greenpeace, its members are not necessarily members of Greenpeace. -OpenACS 4.5 solves both of these modeling problems by introducing a new +OpenACS 4.6 solves both of these modeling problems by introducing a new abstraction called a party. Parties have a recursive definition, and we can illustrate how it works with the following simplified data model. First, we define the parties @@ -105,23 +105,27 @@ tutorial - I've just given you what you need to understand how permissions work. For further detail, you can look at Parties in OpenACS 4 or OpenACS 4 Groups Design. + NOTE: Much more detailed information about the permissions system + and how to use it is available in the + OpenACS Permissions Tediously Explained document. + The permissions data model is actually pretty simple. The data model is a mapping between privileges, parties and objects. We already know what parties and objects are, but we don't know what privileges are. -In OpenACS 4.5, a privilege models the right to perform some operation on +In OpenACS 4.6, a privilege models the right to perform some operation on some object. They are the basic units out of which we build access control policies. For example, in the Unix filesystem we typically implement access control by granting users some combination of -read. write or execute privileges on files and directories. In OpenACS 4.5, +read. write or execute privileges on files and directories. In OpenACS 4.6, the table of privileges is organized hierarchically so that developers can define privileges that aggregate some set of privileges together. For example, if we have read, write, create and delete privileges, it might be convenient to combine them into a new privilege called "admin". Then if we grant a user this privilege she is automatically granted all the child privileges that the privilege -contains. The OpenACS 4.5 kernel data model actually defines these +contains. The OpenACS 4.6 kernel data model actually defines these privileges as follows: @@ -161,7 +165,7 @@ permissions to large groups of objects in the site, all at once. We use contexts to achieve this goal. -In OpenACS 4.5, an object context is a generalization of the scoping +In OpenACS 4.6, an object context is a generalization of the scoping mechanism introduced in OpenACS 3.x. "Scoping" and "scope" are terms best explained by example: consider some hypothetical rows in the address_book table: @@ -176,7 +180,7 @@ person or a group of people or the general public (itself a group of people). -In OpenACS 4.5, rather than breaking the world into a limited set of scopes, +In OpenACS 4.6, rather than breaking the world into a limited set of scopes, every object lives in a single context. A context is just an another object that represents the security domain to which the object belongs. By convention, if an object A doesn't have any permissions @@ -193,7 +197,7 @@ application. With only row-level permissions it is not obvious how to reasonably initialize the access control list when creating a message. At best, we have to explicitly grant various read and write -privileges whenever we create a message, which is tedious. In OpenACS 4.5, +privileges whenever we create a message, which is tedious. In OpenACS 4.6, a reasonable thing to do is to create an object representing a forum, and point the context_id field of a new message at the forum. Then, suppose we grant every user in the system read-access to @@ -207,7 +211,7 @@ hierarchy that matches the structure they need for access control in their application. The following picture shows a typical context hierarchy for a hypothetical site: - + A few things to note here. First, the top two contexts in the picture are "magic" in some sense because they are created by default by OpenACS for a specific purpose. The object default_context @@ -327,7 +331,7 @@ This displays the title of the note as either a link or plain text depending on whether or not we have write privileges on the object. -The if tag is something that the OpenACS 4.5 template system +The if tag is something that the OpenACS 4.6 template system defines for you to support conditional presentation. The templates developer guide provides more information about this. If you study the rest of the system, you will also notice that the @@ -341,7 +345,7 @@ permissions to notes that she wanted to make public or whatever. But that's beyond the scope of this example. -OpenACS 4.5 defines three separate mechanisms for specifying access control +OpenACS 4.6 defines three separate mechanisms for specifying access control in applications. The Groups data model allows you to define hierarchical organizations of users and groups of users. The Permissions data model allows you to define a hierarchy of user rights. Finally, @@ -351,6 +355,4 @@ In the next section, we'll look at a more complex page for adding and editing notes, and discuss these issues further. - ($Id$) ($Id$)
+
+ From now on, PostgreSQL should start automatically each time you boot
+ up and it should shutdown gracefully each time you shut down. (Note:
+ Debian defaults to starting all services on runlevels 2-5. Red Hat
+ defaults to starting services on 3-5. So, on Red Hat, PostgreSQL won't
+ start on runlevel 2 unless you alter the above commands a
+ little. This usually isn't a problem as Red Hat defaults to runlevel 3)
+
+ + + Here are some links: + +
($Id$) |
+
Briefly explain to the reader what this document is for, whether it records the requirements for a new system, a client application, a toolkit subsystem, etc. Remember your audience: fellow programmers, @@ -47,21 +47,21 @@ leave generous gaps on the first writing of requirements (e.g. 1, 10, 20, 30, 40, etc.) because you'll want to leave room for any missing key requirements that may arise. -
10.0 A Common Solution
+
10.0 A Common Solution
Programmers and designers should only have to learn a single system that serves as a UI substrate for all the functionally specific modules in the toolkit. -
10.0.1
+
10.0.1
The system should not make any assumptions about how pages should look or function. -
10.0.5
+
10.0.5
Publishers should be able to change the default presentation of any module using a single methodology with minimal exposure to code.
For guidelines writing requirements, take a look - at the quality standards, along with a good example, such as OpenACS 4.5 Package Manager Requirements. + at the quality standards, along with a good example, such as OpenACS 4.6 Package Manager Requirements.
Besides writing requirements in natural language, consider using the following techniques as needed: @@ -81,6 +81,4 @@ pre-existing system or prototype first, and thus you may want to write some thoughts on implementation, for aiding and guiding yourself or other programmers. -