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.19 -r1.19.2.1 --- openacs-4/packages/acs-core-docs/www/acs-admin.html 11 Nov 2003 12:54:56 -0000 1.19 +++ openacs-4/packages/acs-core-docs/www/acs-admin.html 21 Nov 2003 11:14:06 -0000 1.19.2.1 @@ -1 +1 @@ -Part�II.�Administrator's Guide

Administrator's Guide

Table of Contents

2. Installation Overview
Basic Steps
Prerequisite Software
3. Complete Installation
Install Unix-like system and supporting software
Install Oracle 8.1.7
Install PostGreSQL
Install AOLserver 3.3oacs1
Install OpenACS 5.0.0b1
OpenACS Installation Guide for Windows2000
OpenACS Installation Guide for Mac OS X
4. Configuring a New Service
5. Upgrading
Support for upgrades.
6. Maintenance
Hosting Web Sites
Database Management
Backup and Recovery
A. Install Red Hat 8/9
B. Install additional supporting software
Unpack the OpenACS tarball
Initialize CVS (OPTIONAL)
Add PSGML commands to emacs init file (OPTIONAL)
Install Daemontools (OPTIONAL)
Install qmail (OPTIONAL)
Install Analog web file analyzer
Install nspam
Install Full Text Search
Install nsopenssl
Install tclwebtest.
C. Credits
Where did this document come from?
Linux Install Guides
Security Information
Resources
View comments on this page at openacs.org
+Part�II.�Administrator's Guide

Administrator's Guide

Table of Contents

2. Installation Overview
Basic Steps
Prerequisite Software
3. Complete Installation
Install Unix-like system and supporting software
Install Oracle 8.1.7
Install PostGreSQL
Install AOLserver 3.3oacs1
Install OpenACS 5.0.0b2
OpenACS Installation Guide for Windows2000
OpenACS Installation Guide for Mac OS X
4. Configuring a New Service
5. Upgrading
Upgrading
6. Maintenance
Hosting Web Sites
Database Management
Backup and Recovery
A. Install Red Hat 8/9
B. Install additional supporting software
Unpack the OpenACS tarball
Initialize CVS (OPTIONAL)
Add PSGML commands to emacs init file (OPTIONAL)
Install Daemontools (OPTIONAL)
Install qmail (OPTIONAL)
Install Analog web file analyzer
Install nspam
Install Full Text Search
Install nsopenssl
Install tclwebtest.
C. Credits
Where did this document come from?
Linux Install Guides
Security Information
Resources
View comments on this page at openacs.org
Index: openacs-4/packages/acs-core-docs/www/acs-package-dev.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/acs-package-dev.html,v diff -u -r1.9 -r1.9.2.1 --- openacs-4/packages/acs-core-docs/www/acs-package-dev.html 11 Nov 2003 12:54:56 -0000 1.9 +++ openacs-4/packages/acs-core-docs/www/acs-package-dev.html 21 Nov 2003 11:14:06 -0000 1.9.2.1 @@ -1,2 +1,2 @@ -Part�III.�For OpenACS Package Developers

For OpenACS Package Developers

Tutorials and reference material for creating new OpenACS packages. -

View comments on this page at openacs.org
+Part�III.�For OpenACS Package Developers

For OpenACS Package Developers

Tutorials and reference material for creating new OpenACS packages. +

View comments on this page at openacs.org
Index: openacs-4/packages/acs-core-docs/www/acs-plat-dev.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/acs-plat-dev.html,v diff -u -r1.10 -r1.10.2.1 --- openacs-4/packages/acs-core-docs/www/acs-plat-dev.html 11 Nov 2003 12:54:56 -0000 1.10 +++ openacs-4/packages/acs-core-docs/www/acs-plat-dev.html 21 Nov 2003 11:14:06 -0000 1.10.2.1 @@ -1 +1 @@ -Part�IV.�For OpenACS Platform Developers

For OpenACS Platform Developers

Table of Contents

Platform Development
10. Kernel Documentation
Overview
OpenACS 4 Object Model Requirements
OpenACS 4 Object Model Design
OpenACS 4 Permissions Requirements
OpenACS 4 Permissions Design
OpenACS 4 Groups Requirements
OpenACS 4 Groups Design
OpenACS 4 Subsites Requirements
OpenACS 4 Subsites Design Document
OpenACS 5.0.0b1 Package Manager Requirements
OpenACS 5.0.0b1 Package Manager Design
Database Access API
OpenACS Internationalization Requirements
Internationalization
OpenACS 4 Security Requirements
OpenACS 4 Security Design
OpenACS 4 Security Notes
OpenACS 4 Request Processor Requirements
OpenACS 4 Request Processor Design
Documenting Tcl Files: Page Contracts and Libraries
Bootstrapping OpenACS
External Authentication Requirements
View comments on this page at openacs.org
+Part�IV.�For OpenACS Platform Developers

For OpenACS Platform Developers

Table of Contents

Platform Development
10. Kernel Documentation
Overview
OpenACS 4 Object Model Requirements
OpenACS 4 Object Model Design
OpenACS 4 Permissions Requirements
OpenACS 4 Permissions Design
OpenACS 4 Groups Requirements
OpenACS 4 Groups Design
OpenACS 4 Subsites Requirements
OpenACS 4 Subsites Design Document
OpenACS 5.0.0b2 Package Manager Requirements
OpenACS 5.0.0b2 Package Manager Design
Database Access API
OpenACS Internationalization Requirements
Internationalization
OpenACS 4 Security Requirements
OpenACS 4 Security Design
OpenACS 4 Security Notes
OpenACS 4 Request Processor Requirements
OpenACS 4 Request Processor Design
Documenting Tcl Files: Page Contracts and Libraries
Bootstrapping OpenACS
External Authentication Requirements
View comments on this page at openacs.org
Index: openacs-4/packages/acs-core-docs/www/analog-install.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/analog-install.html,v diff -u -r1.5 -r1.5.2.1 --- openacs-4/packages/acs-core-docs/www/analog-install.html 11 Nov 2003 10:28:27 -0000 1.5 +++ openacs-4/packages/acs-core-docs/www/analog-install.html 21 Nov 2003 11:14:06 -0000 1.5.2.1 @@ -1,4 +1,4 @@ -Install Analog web file analyzer

Install Analog web file analyzer

Download the Analog source tarball in +Install Analog web file analyzer

Install Analog web file analyzer

Download the Analog source tarball in /tmp. Unpack, compile, and install analog.

[root@yourserver aolserver]# cd /usr/local/src
 [root@yourserver src]# tar xzf /tmp/analog-5.32.tar.gz
 [root@yourserver src]# cd analog-5.32
Index: openacs-4/packages/acs-core-docs/www/aolserver.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/aolserver.html,v
diff -u -r1.23.2.1 -r1.23.2.2
--- openacs-4/packages/acs-core-docs/www/aolserver.html	14 Nov 2003 09:43:44 -0000	1.23.2.1
+++ openacs-4/packages/acs-core-docs/www/aolserver.html	21 Nov 2003 11:14:06 -0000	1.23.2.2
@@ -1,8 +1,7 @@
-Install AOLserver 3.3oacs1

Install AOLserver 3.3oacs1

- by Vinod Kurup
+Install AOLserver 3.3oacs1

Install AOLserver 3.3oacs1

by Vinod Kurup

OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

  1. Unpack the Aolserver tarball.�Download the aolserver tarball and unpack it.

    [root@yourserver root]# cd /usr/local/src
    +        
  1. Unpack the Aolserver tarball.�Download the aolserver tarball and unpack it.

    [root@yourserver root]# cd /usr/local/src
     [root@yourserver src]# wget --passive http://uptime.openacs.org/aolserver-openacs/aolserver3.3oacs1.tar.gz
     --15:38:08--  http://uptime.openacs.org/aolserver-openacs/aolserver3.3oacs1.tar.gz
                => `aolserver3.3oacs1.tar.gz'
    @@ -75,17 +74,17 @@
     	  communicate with the database.  There is one script each for
     	  Oracle and PostGreSQL.  They don't conflict, so if you plan
     	  to use both databases, install both.

    • Oracle

      [root@yourserver aolserver]# cd /usr/local/aolserver/bin
      -[root@yourserver bin]# cp /tmp/openacs-5.0.0b1/packages/acs-core-docs/www/files/nsd-oracle.txt ./nsd-oracle
      +[root@yourserver bin]# cp /tmp/openacs-5.0.0b2/packages/acs-core-docs/www/files/nsd-oracle.txt ./nsd-oracle
       [root@yourserver bin]# chmod 750 nsd-oracle
       [root@yourserver bin]#
       
      cd /usr/local/aolserver/bin
      -cp /tmp/openacs-5.0.0b1/packages/acs-core-docs/www/files/nsd-oracle.txt ./nsd-oracle
      +cp /tmp/openacs-5.0.0b2/packages/acs-core-docs/www/files/nsd-oracle.txt ./nsd-oracle
       chmod 750 nsd-oracle
    • PostGreSQL

      [root@yourserver aolserver]# cd /usr/local/aolserver/bin
      -[root@yourserver bin]# cp /tmp/openacs-5.0.0b1/packages/acs-core-docs/www/files/nsd-postgres.txt ./nsd-postgres
      +[root@yourserver bin]# cp /tmp/openacs-5.0.0b2/packages/acs-core-docs/www/files/nsd-postgres.txt ./nsd-postgres
       [root@yourserver bin]# chmod 755 nsd-postgres
       [root@yourserver bin]#
       
      cd /usr/local/aolserver/bin
      -cp /tmp/openacs-5.0.0b1/packages/acs-core-docs/www/files/nsd-postgres.txt ./nsd-postgres
      +cp /tmp/openacs-5.0.0b2/packages/acs-core-docs/www/files/nsd-postgres.txt ./nsd-postgres
       chmod 755 nsd-postgres
  2. Install tDOM.�Download the tDOM tarball, unpack it, adjust the configuration file to match our patched distribution of aolserver, and compile it.

    [root@yourserver root]# cd /usr/local/src
    @@ -107,20 +106,15 @@
     
    cd /usr/local/src
     wget --passive http://www.tdom.org/tDOM-0.7.8.tar.gz
     tar xzf tDOM-0.7.8.tar.gz
    -cd tDOM-0.7.8/unix

    Edit the file CONFIG and change this section: -

    # ----------------------------------------------------
    +cd tDOM-0.7.8/unix

Edit the file CONFIG and change this section:

# ----------------------------------------------------
 # aolsrc="/usr/src/aolserver-3.4"
 # ../configure --enable-threads --disable-tdomalloc \
 #   --with-aolserver=$aolsrc \
-#   --with-tcl=$aolsrc/tcl8.3.4/unix 

-

to

-

# ----------------------------------------------------
+#   --with-tcl=$aolsrc/tcl8.3.4/unix 

to

# ----------------------------------------------------
 aolsrc="/usr/local/src/aolserver/aolserver"
 ../configure --enable-threads --disable-tdomalloc \
   --with-aolserver=$aolsrc \
-  --with-tcl=$aolsrc/tcl8.3.2/unix

-

And configure and compile:

-

[root@yourserver unix]# sh CONFIG
+  --with-tcl=$aolsrc/tcl8.3.2/unix

And configure and compile:

[root@yourserver unix]# sh CONFIG
 creating cache ./config.cache
 checking for memmove... yes
   (many lines omitted)
@@ -141,8 +135,7 @@
 make
 cp libtdom0.7.8.so /usr/local/aolserver/bin/
 cd /usr/local/aolserver/bin
-ln -s libtdom0.7.8.so libtdom.so

-

  • Install nsopenssl +ln -s libtdom0.7.8.so libtdom.so

  • Install nsopenssl (OPTIONAL)

  • Install Full Text Search with OpenFTS (OPTIONAL)

  • Install nspam (OPTIONAL)

  • Test AOLserver.�In order to test AOLserver, we'll run it using the sample-config.tcl file provided in the AOLserver distribution, under the nobody user and web @@ -237,4 +230,4 @@ set hostname [ns_info hostname] #set address [ns_info address] set address 0.0.0.0

  • Install - Analog web file analyzer. (OPTIONAL)

  • ($Id$)
    View comments on this page at openacs.org
    + Analog web file analyzer. (OPTIONAL)

    ($Id$)
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/apm-design.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/apm-design.html,v diff -u -r1.21.2.1 -r1.21.2.2 --- openacs-4/packages/acs-core-docs/www/apm-design.html 14 Nov 2003 09:43:44 -0000 1.21.2.1 +++ openacs-4/packages/acs-core-docs/www/apm-design.html 21 Nov 2003 11:14:06 -0000 1.21.2.2 @@ -1,8 +1,7 @@ -OpenACS 5.0.0b1 Package Manager Design

    OpenACS 5.0.0b1 Package Manager Design

    -by Bryan Quinn
    +OpenACS 5.0.0b2 Package Manager Design

    OpenACS 5.0.0b2 Package Manager Design

    By Bryan Quinn

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

    Essentials

    • OpenACS Administrator directory

    • OpenACS 5.0.0b1 Package Manager Requirements

    • Packages

    • ER diagram

    • Tcl API

      Essentials

      • OpenACS Administrator directory

      • OpenACS 5.0.0b2 Package Manager Requirements

      • Packages

      • ER diagram

      • Tcl API

        • apm-procs.tcl

        • apm-install-procs.tcl (Supports installation of packages)

        • 20-apm-load-procs.tcl (Bootstraps APM for server startup)

        • @@ -18,7 +17,7 @@

          • OpenACS Applications: a "program or group of programs designed for end users" (the Webopedia definition); also known as modules, for historical reasons. -Examples of applications include Bboard and News. +Examples of applications include Forums and News.

          • OpenACS Services: the aforementioned building blocks. @@ -31,11 +30,11 @@ application and service instances that provide the end-user with capabilities and content customized to the particular subsite.

            This architecture supports the growth of collaborative commerce. For example, Jane User starts a forum focusing on the merits of View Cameras by -creating an instance of the Bboard application for her personal subsite on an +creating an instance of the Forum application for her personal subsite on an OpenACS Installation. Jack User discovers Jane's forum and includes a link to it in his subsite. As interest in Jane's forum grows, she creates a subsite specializing in providing information about View cameras. This -subsite now includes several package instances beyond Bboard; it could +subsite now includes several package instances beyond Forum; it could potentially include its own Ecommerce capabilities (ala Yahoo! Shopping). This could include a knowledge management application that allows users to spread expertise about view cameras and a portal application that links to reliable camera models @@ -88,7 +87,7 @@ packages for other ACS users to download and install.

            For a simple illustration of the difference between ACS without APM (pre-3.3) and ACS with APM (3.3 and beyond), consider a hypothetical ACS installation that uses only two of the thirty-odd modules available circa ACS -3.2 (say, bboard and e-commerce):

            APM itself is part of a package, the OpenACS Kernel, an OpenACS +3.2 (say, bboard and e-commerce):

            APM itself is part of a package, the OpenACS Kernel, an OpenACS service that is the only mandatory component of an OpenACS installation.

          Competitive Analysis

          The OpenACS is a platform for web-based application software, and any software platform has the potential to develop problems like those described above. Fortunately, there are many precedents for systematic solutions, @@ -466,7 +465,7 @@

          Data Model Discussion

          The central piece of the data model is the apm_package_types table where each package is registered. When a new application or service is installed on an OpenACS instance, a corresponding row in this table is inserted -with information about the type of package, e.g. if the bboard package is installed on your OpenACS server, a row +with information about the type of package, e.g. if the forum package is installed on your OpenACS server, a row in apm_package_types will be created, noting that it's an application package type.

          The apm_packages table is used to contain information about the instances of packages currently created in the system. The @@ -541,4 +540,4 @@ all of this functionality in one interface and it can be confusing from a usability perspective.

          Authors

          • System creator: Bryan Quinn, Jon Salz, Michael Yoon, Lars Pind, Todd Nightingale.

          • System owner: Bryan Quinn

          • Documentation author: Bryan Quinn, building from earlier versions by Jon -Salz, Michael Yoon, and Lars Pind.

          Revision History

          Document Revision #Action Taken, NotesWhen?By Whom?
          0.1Creation9/25/2000Bryan Quinn
          0.8Ready for QA9/29/2000Bryan Quinn
          0.9Edited for ACS 4 Beta release10/02/2000Kai Wu
          1.0Edited for OpenACS 5.0.0b1 Beta release03/02/2002Roberto Mello
        View comments on this page at openacs.org
        +Salz, Michael Yoon, and Lars Pind.

      Revision History

      Document Revision #Action Taken, NotesWhen?By Whom?
      0.1Creation9/25/2000Bryan Quinn
      0.8Ready for QA9/29/2000Bryan Quinn
      0.9Edited for ACS 4 Beta release10/02/2000Kai Wu
      1.0Edited for OpenACS 5.0.0b2 Beta release03/02/2002Roberto Mello
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/apm-requirements.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/apm-requirements.html,v diff -u -r1.16 -r1.16.2.1 --- openacs-4/packages/acs-core-docs/www/apm-requirements.html 11 Nov 2003 12:54:56 -0000 1.16 +++ openacs-4/packages/acs-core-docs/www/apm-requirements.html 21 Nov 2003 11:14:06 -0000 1.16.2.1 @@ -1,8 +1,7 @@ -OpenACS 5.0.0b1 Package Manager Requirements

    OpenACS 5.0.0b1 Package Manager Requirements

    -by Bryan Quinn and Todd Nightingale
    +OpenACS 5.0.0b2 Package Manager Requirements

    OpenACS 5.0.0b2 Package Manager Requirements

    By Bryan Quinn and Todd Nightingale

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

    Introduction

    The following is a requirements document for the OpenACS Package Manager +

    Introduction

    The following is a requirements document for the OpenACS Package Manager (APM), version 4.0 (APM4). APM4 offers a superset of APM v3.3 functionality with the following specific enhancements:

    • A public procedural API. (v 3.3 only has web-based UI)

    • Support for dependency checking.

    • Support for compound packages (to support installation chaining).

    • Support for on-line parameter setting.

    • Support for sub-site level configuration (requires revised ad_parameter and /admin pages at sub-site level; deprecation of site-wide parameter @@ -154,7 +153,7 @@ adding new files, by scanning the file system for new files automatically, and allowing the developer to confirm adding them.

      20.10 The developer cannot add files to a given package via the UI that do not exist in the file system already.

      20.15 Package file structure must follow a specified -convention. Please see the design +convention. Please see the design document for what we do currently.

    • 30.0 Remove files from a package

      The developer must be able to remove files from a package. This can be done in two ways.

      • 30.1 Access the APM UI, browse the file list, and remove files.

        30.1.1If a file is removed from the package list, but not @@ -292,4 +291,4 @@ are set using the acs_attribute_values table. The automatic web interface for setting package parameters should be one and the same with the interface for setting acs object attribute values. Consequently, the implementation of -these features should be quite straightforward.

      Revision History

      Document Revision #Action Taken, NotesWhen?By Whom?
      0.1Creation8/10/2000Bryan Quinn, Todd Nightingale
      Reviewed8/11/2000John Prevost, Mark Thomas, and Pete Su
      0.2Revised and updated8/12/2000Bryan Quinn
      0.3Reviewed, revised, and updated - conforms to requirements template.8/18/2000Kai Wu
      0.4Minor edits before ACS 4 Beta.9/30/2000Kai Wu
    View comments on this page at openacs.org
    +these features should be quite straightforward.

    Revision History

    Document Revision #Action Taken, NotesWhen?By Whom?
    0.1Creation8/10/2000Bryan Quinn, Todd Nightingale
    Reviewed8/11/2000John Prevost, Mark Thomas, and Pete Su
    0.2Revised and updated8/12/2000Bryan Quinn
    0.3Reviewed, revised, and updated - conforms to requirements template.8/18/2000Kai Wu
    0.4Minor edits before ACS 4 Beta.9/30/2000Kai Wu
    View comments on this page at openacs.org
    Fisheye: Tag 1.1 refers to a dead (removed) revision in file `openacs-4/packages/acs-core-docs/www/automated-testing-best-practices.html'. Fisheye: No comparison available. Pass `N' to diff? Index: openacs-4/packages/acs-core-docs/www/backup-recovery.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/backup-recovery.html,v diff -u -r1.15.2.1 -r1.15.2.2 --- openacs-4/packages/acs-core-docs/www/backup-recovery.html 14 Nov 2003 09:43:45 -0000 1.15.2.1 +++ openacs-4/packages/acs-core-docs/www/backup-recovery.html 21 Nov 2003 11:14:06 -0000 1.15.2.2 @@ -1,275 +1,273 @@ -Backup and Recovery

    Backup and Recovery

    - by Don Baccus - - with additions by Joel Aufrecht
    +Backup and Recovery

    Backup and Recovery

    By Don Baccus with additions + by Joel Aufrecht

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

    Backup Strategy

    +

    Backup Strategy

    The purpose of backup is to enable recovery. Backup and recovery are always risky; here are some steps that minimize the chance recovery is necessary:

    • - Store everything on a fault-tolerant disk array (RAID 1 or 5 - or better). -

    • - Use battery backup. -

    • - Use more reliable hardware, such as SCSI instead of IDE. -

    These steps improve the chances of successful recovery:

    • - Store backups on a third disk on another controller -

    • - Store backups on a different computer on a different network - in a different physical location. (Compared to off-line - backup such as tapes and CDRs, on-line backup is faster and - more likely to succeed, but requires maintenance of another machine.) -

    • - Plan and configure for recovery from the beginning. -

    • - Test your recovery strategy from time to time. -

    • - Make it easy to maintain and test your recovery strategy, so - that you are more likely to do it. -

    - OpenACS installations comprise files and database contents. - If you follow the reference install and put all files, - including configuration files, in - /var/lib/aolserver/service0/, - and back up the database nightly to a file in - /var/lib/aolserver/service0/database-backup, - then you can apply standard file-based backup strategies to - /var/lib/aolserver/service0 -

    Snapshot backup and recovery

    This section describes how to make a one-time backup and - restore of the files and database. This is useful for rolling back to - known-good versions of a service, such as at initial - installation and just before an upgrade. First, you back up the - database to a file within the file tree. Then, you back up the - file tree. All of the information needed to rebuild the site, - including the AOLserver config files, is then in tree for - regular file system backup.

    1. Back up the database to a file.�

      • Oracle.�

        • - 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
        • - Setup the export directory; this is the directory where backups will - be stored. We recommend the directory - /ora8/m02/oracle-exports.

          -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: -

          -root:~# /usr/sbin/export-oracle
          -mv: /ora8/m02/oracle-exports/oraexport-service_name.dmp.gz: No such file or directory
          +      Store everything on a fault-tolerant disk array (RAID 1 or 5
          +      or better).
          +      

        • + Use battery backup. +

        • + Use more reliable hardware, such as SCSI instead of IDE. +

        These steps improve the chances of successful recovery:

        • + Store backups on a third disk on another controller +

        • + Store backups on a different computer on a different network + in a different physical location. (Compared to off-line + backup such as tapes and CDRs, on-line backup is faster and + more likely to succeed, but requires maintenance of another machine.) +

        • + Plan and configure for recovery from the beginning. +

        • + Test your recovery strategy from time to time. +

        • + Make it easy to maintain and test your recovery strategy, so + that you are more likely to do it. +

        + OpenACS installations comprise files and database contents. + If you follow the reference install and put all files, + including configuration files, in + /var/lib/aolserver/service0/, + and back up the database nightly to a file in + /var/lib/aolserver/service0/database-backup, + then you can apply standard file-based backup strategies to + /var/lib/aolserver/service0 +

      Snapshot backup and recovery

      This section describes how to make a one-time backup and + restore of the files and database. This is useful for rolling back to + known-good versions of a service, such as at initial + installation and just before an upgrade. First, you back up the + database to a file within the file tree. Then, you back up the + file tree. All of the information needed to rebuild the site, + including the AOLserver config files, is then in tree for + regular file system backup.

      1. Back up the database to a file.�

        • Oracle.�

          • + 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
          • + Setup the export directory; this is the directory where backups will + be stored. We recommend the directory + /ora8/m02/oracle-exports.

            +                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: +

            +                root:~# /usr/sbin/export-oracle
            +                mv: /ora8/m02/oracle-exports/oraexport-service_name.dmp.gz: No such file or directory
             
            -Export: Release 8.1.6.1.0 - Production on Sun Jun 11 18:07:45 2000
            +                Export: Release 8.1.6.1.0 - Production on Sun Jun 11 18:07:45 2000
             
            -(c) Copyright 1999 Oracle Corporation.  All rights reserved.
            +                (c) Copyright 1999 Oracle Corporation.  All rights reserved.
             
             
            -Connected to: Oracle8i Enterprise Edition Release 8.1.6.1.0 - Production
            -With the Partitioning option
            -JServer Release 8.1.6.0.0 - Production
            -Export done in US7ASCII character set and US7ASCII NCHAR character set
            -. exporting pre-schema procedural objects and actions
            -. exporting foreign function library names for user SERVICE_NAME 
            -. exporting object type definitions for user SERVICE_NAME 
            -About to export SERVICE_NAME's objects ...
            -. exporting database links
            -. exporting sequence numbers
            -. exporting cluster definitions
            -. about to export SERVICE_NAME's tables via Conventional Path ...
            -. exporting synonyms
            -. exporting views
            -. exporting stored procedures
            -. exporting operators
            -. exporting referential integrity constraints
            -. exporting triggers
            -. exporting indextypes
            -. exporting bitmap, functional and extensible indexes
            -. exporting posttables actions
            -. exporting snapshots
            -. exporting snapshot logs
            -. exporting job queues
            -. exporting refresh groups and children
            -. exporting dimensions
            -. exporting post-schema procedural objects and actions
            -. exporting statistics
            -Export terminated successfully without warnings.
        • PostGreSQL.�Create a backup file and verify that it was created and has a reasonable size (several megabytes).

          [root@localhost root]# su - service0
          -[service0@localhost service0]$ pg_dump -f /var/lib/aolserver/service0/database-backup/before_upgrade_to_4.6.dmp service0
          -[service0@localhost service0]$ ls -al /var/lib/aolserver/service0/database-backup/before_upgrade_to_4.6.dmp 
          --rw-rw-r-x    1 service0  service0   4005995 Feb 21 18:28 /var/lib/aolserver/service0/database-backup/before_upgrade_to_4.6.dmp
          -[service0@localhost service0]$ exit
          -[root@localhost root]#
          -
          su - service0
          -pg_dump -f /var/lib/aolserver/service0/database-backup/before_upgrade_to_4.6.dmp openacs-dev
          -ls -al /var/lib/aolserver/service0/database-backup/before_upgrade_to_4.6.dmp
          -exit
      2. Back up the file system.�Back up all of the files in the service, including the - database backup file but excluding the auto-generated - supervise directory, which is - unneccesary and has complicated permissions.

        In the tar command,

        • c create a - new tar archive

        • p preserves permissions.

        • s preserves file sort order

        • j compresses the output with bz2.

        • The --exclude clauses skips some daemontools files that - are owned by root and thus cannot be backed up by the - service owner. These files are autogenerated and we don't - break anything by omitting them.

        • The --file clause - specifies the name of the output file to be generated; we - manually add the correct extensions.

        • The last clause, - /var/lib/aolserver/service0/, - specifies the starting point for backup. Tar defaults to - recursive backup.

        [root@yourserver root]# su - service0
        -[service0@yourserver service0]$ tar -cpsj --exclude /var/lib/aolserver/service0/etc/daemontools/supervise --file /tmp/service0-backup.tar.bz2 /var/lib/aolserver/service0/ 
        -tar: Removing leading `/' from member names
        -[service0@yourserver service0]$
      3. Suffer a catastrophic failure on your production system.�(We'll simulate this step)

        [root@yourserver root]# svc -d /service/service0
        -[root@yourserver root]# mv /var/lib/aolserver/service0/ /var/lib/aolserver/service0.lost
        -[root@yourserver root]# rm /service/service0
        -rm: remove symbolic link `/service/service0'? y
        -[root@yourserver root]# ps -auxw | grep service0
        -root      1496  0.0  0.0  1312  252 ?        S    16:58   0:00 supervise service0
        -[root@yourserver root]# kill 1496
        -[root@yourserver root]# ps -auxw | grep service0
        -[root@yourserver root]# su - postgres
        -[postgres@yourserver pgsql]$ dropdb service0
        -DROP DATABASE
        -[postgres@yourserver pgsql]$ dropuser service0
        -DROP USER
        -[postgres@yourserver pgsql]$ exit
        -logout
        -[root@yourserver root]#
      4. Recovery.�

        1. Restore the operating system and required software. - You can do this with standard backup processes or by - keeping copies of the install material (OS CDs, OpenACS - tarball and supporting software) and repeating the install - guide. Recreate the service user (service0).

        2. Restore the OpenACS files and database backup file.

          [root@yourserver root]# su - service0
          -[service0@yourserver service0]$ cd /var/lib/aolserver
          -[service0@yourserver aolserver]$ tar xjf /tmp/service0-backup.tar.bz2
          -[service0@yourserver aolserver]$ chmod -R 775 service0
          -[service0@yourserver aolserver]$ chown -R service0.web service0
          +                Connected to: Oracle8i Enterprise Edition Release 8.1.6.1.0 - Production
          +                With the Partitioning option
          +                JServer Release 8.1.6.0.0 - Production
          +                Export done in US7ASCII character set and US7ASCII NCHAR character set
          +                . exporting pre-schema procedural objects and actions
          +                . exporting foreign function library names for user SERVICE_NAME 
          +                . exporting object type definitions for user SERVICE_NAME 
          +                About to export SERVICE_NAME's objects ...
          +                . exporting database links
          +                . exporting sequence numbers
          +                . exporting cluster definitions
          +                . about to export SERVICE_NAME's tables via Conventional Path ...
          +                . exporting synonyms
          +                . exporting views
          +                . exporting stored procedures
          +                . exporting operators
          +                . exporting referential integrity constraints
          +                . exporting triggers
          +                . exporting indextypes
          +                . exporting bitmap, functional and extensible indexes
          +                . exporting posttables actions
          +                . exporting snapshots
          +                . exporting snapshot logs
          +                . exporting job queues
          +                . exporting refresh groups and children
          +                . exporting dimensions
          +                . exporting post-schema procedural objects and actions
          +                . exporting statistics
          +              Export terminated successfully without warnings.
      5. PostGreSQL.�Create a backup file and verify that it was created and has a reasonable size (several megabytes).

        [root@localhost root]# su - service0
        +            [service0@localhost service0]$ pg_dump -f /var/lib/aolserver/service0/database-backup/before_upgrade_to_4.6.dmp service0
        +            [service0@localhost service0]$ ls -al /var/lib/aolserver/service0/database-backup/before_upgrade_to_4.6.dmp 
        +            -rw-rw-r-x    1 service0  service0   4005995 Feb 21 18:28 /var/lib/aolserver/service0/database-backup/before_upgrade_to_4.6.dmp
        +            [service0@localhost service0]$ exit
        +            [root@localhost root]#
        +            
        su - service0
        +            pg_dump -f /var/lib/aolserver/service0/database-backup/before_upgrade_to_4.6.dmp openacs-dev
        +            ls -al /var/lib/aolserver/service0/database-backup/before_upgrade_to_4.6.dmp
        +            exit
    2. Back up the file system.�Back up all of the files in the service, including the + database backup file but excluding the auto-generated + supervise directory, which is + unneccesary and has complicated permissions.

      In the tar command,

      • c create a + new tar archive

      • p preserves permissions.

      • s preserves file sort order

      • j compresses the output with bz2.

      • The --exclude clauses skips some daemontools files that + are owned by root and thus cannot be backed up by the + service owner. These files are autogenerated and we don't + break anything by omitting them.

      • The --file clause + specifies the name of the output file to be generated; we + manually add the correct extensions.

      • The last clause, + /var/lib/aolserver/service0/, + specifies the starting point for backup. Tar defaults to + recursive backup.

      [root@yourserver root]# su - service0
      +        [service0@yourserver service0]$ tar -cpsj --exclude /var/lib/aolserver/service0/etc/daemontools/supervise --file /tmp/service0-backup.tar.bz2 /var/lib/aolserver/service0/ 
      +        tar: Removing leading `/' from member names
      +        [service0@yourserver service0]$
    3. Suffer a catastrophic failure on your production system.�(We'll simulate this step)

      [root@yourserver root]# svc -d /service/service0
      +        [root@yourserver root]# mv /var/lib/aolserver/service0/ /var/lib/aolserver/service0.lost
      +        [root@yourserver root]# rm /service/service0
      +        rm: remove symbolic link `/service/service0'? y
      +        [root@yourserver root]# ps -auxw | grep service0
      +        root      1496  0.0  0.0  1312  252 ?        S    16:58   0:00 supervise service0
      +        [root@yourserver root]# kill 1496
      +        [root@yourserver root]# ps -auxw | grep service0
      +        [root@yourserver root]# su - postgres
      +        [postgres@yourserver pgsql]$ dropdb service0
      +        DROP DATABASE
      +        [postgres@yourserver pgsql]$ dropuser service0
      +        DROP USER
      +        [postgres@yourserver pgsql]$ exit
      +        logout
      +        [root@yourserver root]#
    4. Recovery.�

      1. Restore the operating system and required software. + You can do this with standard backup processes or by + keeping copies of the install material (OS CDs, OpenACS + tarball and supporting software) and repeating the install + guide. Recreate the service user (service0).

      2. Restore the OpenACS files and database backup file.

        [root@yourserver root]# su - service0
        +            [service0@yourserver service0]$ cd /var/lib/aolserver
        +            [service0@yourserver aolserver]$ tar xjf /tmp/service0-backup.tar.bz2
        +            [service0@yourserver aolserver]$ chmod -R 775 service0
        +            [service0@yourserver aolserver]$ chown -R service0.web service0
         
        -
      3. Restore the database

        • Oracle.�

          1. Set up a clean Oracle database user and - tablespace (more information).

          2. Invoke the import command

            imp service0/service0 FILE=/var/lib/aolserver/service0/database-backup/nighty_backup.dmp
        • Postgres.�

          Because of a bug in Postgres backup-recovery, database objects are not guaranteed to be created in the right order. To compensate, we pre-creating some critical items first, which leads to some harmless errors.

          [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
          -[service0@yourserver web]$ createdb service0
          -CREATE DATABASE
          -[service0@yourserver web]$ psql -f /var/lib/aolserver/service0/packages/acs-kernel/sql/postgresql/postgresql.sql service0
          -(many lines omitted)
          -[service0@yourserver web]$ psql service0 < /var/lib/aolserver/service0/database-backup/database-backup.dmp
          -(many lines omitted)
          -[service0@yourserver web]$ exit
          -[postgres@yourserver pgsql]$ exit
          -logout
          -
      4. Activate the service

        [root@yourserver root]# ln -s /var/lib/aolserver/service0/etc/daemontools /service/service0
        -[root@yourserver root]# sleep 10
        -[root@yourserver root]# svgroup web /service/service0
        -[root@yourserver root]#

    Automated Backup (OPTIONAL)

    Backup can encompass all files in +

  • Restore the database

    • Oracle.�

      1. Set up a clean Oracle database user and + tablespace (more information).

      2. Invoke the import command

        imp service0/service0 FILE=/var/lib/aolserver/service0/database-backup/nighty_backup.dmp
    • Postgres.�

      Because of a bug in Postgres backup-recovery, database objects are not guaranteed to be created in the right order. To compensate, we pre-creating some critical items first, which leads to some harmless errors.

      [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
      +                [service0@yourserver web]$ createdb service0
      +                CREATE DATABASE
      +                [service0@yourserver web]$ psql -f /var/lib/aolserver/service0/packages/acs-kernel/sql/postgresql/postgresql.sql service0
      +                (many lines omitted)
      +                [service0@yourserver web]$ psql service0 < /var/lib/aolserver/service0/database-backup/database-backup.dmp
      +                (many lines omitted)
      +                [service0@yourserver web]$ exit
      +                [postgres@yourserver pgsql]$ exit
      +                logout
      +                
  • Activate the service

    [root@yourserver root]# ln -s /var/lib/aolserver/service0/etc/daemontools /service/service0
    +            [root@yourserver root]# sleep 10
    +            [root@yourserver root]# svgroup web /service/service0
    +            [root@yourserver root]#
  • Automated Backup (OPTIONAL)

    Backup can encompass all files in /var/lib/aolserver/service0. Use one cron job to back up the database to a file in - /var/lib/aolserver/service0/database-backup, and a second cron job to back up the entire file tree.

    Postgres automatic backup

    Backing up the database consists of creating a file - which is a picture of the database at a particular moment. - Postgres can be backed up while running.

    Depending on your overall backup strategy, you can - create a series of database backup files (recommended for a development server where you are using the section called “Using CVS for backup-recovery”), or you can create a - single nightly backup file which is then collected into a - bigger backup file that includes the other parts of the - service. The latter technique is more generally recommended. To make a new file every - night, edit the crontab file for service0:

    [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/pg_dump -f /var/lib/aolserver/service0/database-backup/service0_`date +\%Y-\%m-\%d`.dmp service0

    If you plan to back up the whole /var/lib/aolserver/service0 directory, then it would be redundant to keep a history of database backups. In that case, set up the cron job to overwrite the previous backup each time:

    0 1 * * * /usr/local/pgsql/bin/pg_dump -f /var/lib/aolserver/service0/database-backup/service0_nightly.dmp service0

    A full Backup/Recovery cycle

    On a test service, make sure that your backup-recovery process work. After backing up the database and file system, delete the service as detailed below and then recover it.

    Other Backup Strategies

    Earlier strategies, included here because this section - hasn't been fully updated yet.

    Set Up Nightly Oracle Exports

    Edit the backup script to save the backup + /var/lib/aolserver/service0/database-backup, and a second cron job to back up the entire file tree.

    Postgres automatic backup

    Backing up the database consists of creating a file + which is a picture of the database at a particular moment. + Postgres can be backed up while running.

    Depending on your overall backup strategy, you can + create a series of database backup files (recommended for a development server where you are using the section called “Using CVS for backup-recovery”), or you can create a + single nightly backup file which is then collected into a + bigger backup file that includes the other parts of the + service. The latter technique is more generally recommended. To make a new file every + night, edit the crontab file for service0:

    [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/pg_dump -f /var/lib/aolserver/service0/database-backup/service0_`date +\%Y-\%m-\%d`.dmp service0

    If you plan to back up the whole /var/lib/aolserver/service0 directory, then it would be redundant to keep a history of database backups. In that case, set up the cron job to overwrite the previous backup each time:

    0 1 * * * /usr/local/pgsql/bin/pg_dump -f /var/lib/aolserver/service0/database-backup/service0_nightly.dmp service0

    A full Backup/Recovery cycle

    On a test service, make sure that your backup-recovery process work. After backing up the database and file system, delete the service as detailed below and then recover it.

    Other Backup Strategies

    Earlier strategies, included here because this section + hasn't been fully updated yet.

    Set Up Nightly Oracle Exports

    Edit the backup script to save the backup file in /var/lib/aolserver/service0/database-backup. 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. -

    - 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.

    -root:~# crontab -l | grep export-oracle
    -0 23 * * * /usr/sbin/export-oracle
    -root:~# exit
    -; Logout

    If you see the line, go ahead and log out.

    Set up nightly Postgres exports

    This is an alternate method to the crontabls - backup. +

    + 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.

    +        root:~# crontab -l | grep export-oracle
    +        0 23 * * * /usr/sbin/export-oracle
    +        root:~# exit
    +      ; Logout

    If you see the line, go ahead and log out.

    Set up nightly Postgres exports

    This is an alternate method to the crontabls - backup. 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 +

      • + bak - location where you want + local backups to be saved

      • - servername - name of your server - (and database instance) + servername - name of your server + (and database instance)

      • - ftp_user - username on your ftp - account + ftp_user - username on your ftp + account

      • - ftp_password - password 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_dir - path on the remote + server where your backups will be uploaded

      • - ftp_server - your ftp server + 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. -

      -joeuser:~$ cp /tmp/acs-pgbackup-init.txt ~/var/lib/aolserver/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) -

    Using CVS for backup-recovery

    If you are already using CVS, you probably don't - need to do anything to back up your files. Just make - sure that your current work is checked into the system. - You can then roll back based on date - note the - current system time, down to the minute. For maximum - safety, you can apply a tag to your current - files. You will still need to back up your database.

    Note that, if you did the CVS options in this document, the /var/lib/aolserver/service0/etc directory is not included in cvs and you may want to add it.

    [root@localhost root]# su - service0
    -[service0@localhost service0]$ cd /var/lib/aolserver/service0
    -[service0@localhost service0]$ cvs commit -m "last-minute commits before upgrade to 4.6"
    -cvs commit: Examining .
    -cvs commit: Examining bin
    -(many lines omitted)
    -[service0@localhost service0]$ cvs tag before_upgrade_to_4_6
    -cvs server: Tagging bin
    -T bin/acs-4-0-publish.sh
    -T bin/ad-context-server.pl
    -(many lines omitted)
    -[service0@localhost service0]$ exit
    -[root@localhost root]# 
    -
    su - service0
    -cd /var/lib/aolserver/service0
    -cvs commit -m "last-minute commits before upgrade to 4.6"
    -cvs tag before_upgrade_to_4_6
    -exit

    To restore files from a cvs tag such as the one used above:

    [root@localhost root]# su - service0
    -[service0@localhost service0]$ cd /var/lib/aolserver/service0
    -[service0@localhost service0]$ cvs up -r current
    -[service0@localhost service0]$ exit
    -
    su - service0
    -cd /var/lib/aolserver/service0
    -cvs up -r current
    ($Id$)
    View comments on this page at openacs.org
    + 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 ~/var/lib/aolserver/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) +

    Using CVS for backup-recovery

    If you are already using CVS, you probably don't + need to do anything to back up your files. Just make + sure that your current work is checked into the system. + You can then roll back based on date - note the + current system time, down to the minute. For maximum + safety, you can apply a tag to your current + files. You will still need to back up your database.

    Note that, if you did the CVS options in this document, the /var/lib/aolserver/service0/etc directory is not included in cvs and you may want to add it.

    [root@localhost root]# su - service0
    +    [service0@localhost service0]$ cd /var/lib/aolserver/service0
    +    [service0@localhost service0]$ cvs commit -m "last-minute commits before upgrade to 4.6"
    +    cvs commit: Examining .
    +    cvs commit: Examining bin
    +    (many lines omitted)
    +    [service0@localhost service0]$ cvs tag before_upgrade_to_4_6
    +    cvs server: Tagging bin
    +    T bin/acs-4-0-publish.sh
    +    T bin/ad-context-server.pl
    +    (many lines omitted)
    +    [service0@localhost service0]$ exit
    +    [root@localhost root]# 
    +    
    su - service0
    +    cd /var/lib/aolserver/service0
    +    cvs commit -m "last-minute commits before upgrade to 4.6"
    +    cvs tag before_upgrade_to_4_6
    +    exit

    To restore files from a cvs tag such as the one used above:

    [root@localhost root]# su - service0
    +    [service0@localhost service0]$ cd /var/lib/aolserver/service0
    +    [service0@localhost service0]$ cvs up -r current
    +    [service0@localhost service0]$ exit
    +    
    su - service0
    +    cd /var/lib/aolserver/service0
    +    cvs up -r current
    ($Id$)
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/bootstrap-acs.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/bootstrap-acs.html,v diff -u -r1.22.2.1 -r1.22.2.2 --- openacs-4/packages/acs-core-docs/www/bootstrap-acs.html 14 Nov 2003 09:43:45 -0000 1.22.2.1 +++ openacs-4/packages/acs-core-docs/www/bootstrap-acs.html 21 Nov 2003 11:14:06 -0000 1.22.2.2 @@ -1,8 +1,7 @@ -Bootstrapping OpenACS

    Bootstrapping OpenACS

    -by Jon Salz
    +Bootstrapping OpenACS

    Bootstrapping OpenACS

    By Jon Salz

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

    • Tcl code: /tcl/0-acs-init.tcl and /packages/acs-kernel/bootstrap.tcl

    This document describes the startup (bootstrapping) process for an AOLserver +

    • Tcl code: /tcl/0-acs-init.tcl and /packages/acs-kernel/bootstrap.tcl

    This document describes the startup (bootstrapping) process for an AOLserver running OpenACS.

    The Big Picture

    Before OpenACS 3.3, the OpenACS startup process was extremely simple: after AOLserver Index: openacs-4/packages/acs-core-docs/www/complete-install.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/complete-install.html,v diff -u -r1.4 -r1.4.2.1 --- openacs-4/packages/acs-core-docs/www/complete-install.html 11 Nov 2003 12:54:57 -0000 1.4 +++ openacs-4/packages/acs-core-docs/www/complete-install.html 21 Nov 2003 11:14:06 -0000 1.4.2.1 @@ -1 +1 @@ -Chapter�3.�Complete Installation

    View comments on this page at openacs.org
    +Chapter�3.�Complete Installation
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/configure.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/Attic/configure.html,v diff -u -r1.6 -r1.6.2.1 --- openacs-4/packages/acs-core-docs/www/configure.html 11 Nov 2003 10:28:27 -0000 1.6 +++ openacs-4/packages/acs-core-docs/www/configure.html 21 Nov 2003 11:14:06 -0000 1.6.2.1 @@ -1 +1 @@ -Chapter�4.�Configuring a New Service

    Chapter�4.�Configuring a New Service

    Placeholder

    View comments on this page at openacs.org
    +Chapter�4.�Configuring a New Service

    Chapter�4.�Configuring a New Service

    Placeholder

    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/credits.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/credits.html,v diff -u -r1.22.2.1 -r1.22.2.2 --- openacs-4/packages/acs-core-docs/www/credits.html 14 Nov 2003 09:43:45 -0000 1.22.2.1 +++ openacs-4/packages/acs-core-docs/www/credits.html 21 Nov 2003 11:14:06 -0000 1.22.2.2 @@ -1,8 +1,7 @@ -Appendix�C.�Credits

    Appendix�C.�Credits

    - by Vinod Kurup
    +Appendix�C.�Credits

    Appendix�C.�Credits

    By Vinod Kurup

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

    Vinod Kurup put +

    Vinod Kurup put together the January 2002 version of this guide from many sources of information.

    Joel Aufrecht updated the document starting in March 2003.

    • @@ -32,5 +31,5 @@ Sussdorff, Stan Kaufman and Pascal Scheffers.

      All questions and comments regarding - this guide should be posted on the OpenACS bboards. + this guide should be posted on the OpenACS forums.

      ($Id$)
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/cvs-service-import.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/Attic/cvs-service-import.html,v diff -u -r1.13.2.1 -r1.13.2.2 --- openacs-4/packages/acs-core-docs/www/cvs-service-import.html 14 Nov 2003 09:43:45 -0000 1.13.2.1 +++ openacs-4/packages/acs-core-docs/www/cvs-service-import.html 21 Nov 2003 11:14:06 -0000 1.13.2.2 @@ -1,4 +1,4 @@ -Add the Service to CVS - OPTIONAL

    Add the Service to CVS - OPTIONAL

    These steps take an existing OpenACS directory and add +Add the Service to CVS - OPTIONAL

    Add the Service to CVS - OPTIONAL

    These steps take an existing OpenACS directory and add it to a CVS repository..

    1. Create and set permissions on a subdirectory in the local cvs repository.

      [root@yourserver root]# mkdir /cvsroot/service0
       [root@yourserver root]# chown service0.web /cvsroot/service0
      @@ -17,11 +17,11 @@
                   plus this string,
                   i.e.
                   /cvsroot/service0.
      -            "OpenACS" is the vendor tag, and "openacs-5-0-0b1" is the
      +            "OpenACS" is the vendor tag, and "openacs-5-0-0b2" is the
                   release tag.  These tags will be useful in upgrading and
                   branching.  -m sets the version comment.

      [root@yourserver root]# su - service0
       [service0@yourserver service0]$ cd /web/service0
      -[service0@yourserver service0]$ cvs import -m "initial install" service0 OpenACS openacs-5-0-0b1
      +[service0@yourserver service0]$ cvs import -m "initial install" service0 OpenACS openacs-5-0-0b2
       N service0/license.txt
       N service0/readme.txt
       (many lines omitted)
      @@ -32,7 +32,7 @@
       [service0@yourserver service0]$
       
      su - service0
       cd /web/service0
      -cvs import -m "initial install" service0 OpenACS openacs-5-0-0b1

      Move the original directory to a temporary location, and check out the cvs repository in its place. If the service starts correctly, come back and remove the temporary copy of the uploaded files.

      [service0@yourserver service0]$ cd ..
      +cvs import -m "initial install" service0 OpenACS openacs-5-0-0b2

      Move the original directory to a temporary location, and check out the cvs repository in its place. If the service starts correctly, come back and remove the temporary copy of the uploaded files.

      [service0@yourserver service0]$ cd ..
       [service0@yourserver web]$ mv service0 service0.orig
       [service0@yourserver web]$ cvs checkout service0
       cvs checkout: Updating service0
      Index: openacs-4/packages/acs-core-docs/www/cvs-tips.html
      ===================================================================
      RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/cvs-tips.html,v
      diff -u -r1.6 -r1.6.2.1
      --- openacs-4/packages/acs-core-docs/www/cvs-tips.html	11 Nov 2003 10:28:27 -0000	1.6
      +++ openacs-4/packages/acs-core-docs/www/cvs-tips.html	21 Nov 2003 11:14:06 -0000	1.6.2.1
      @@ -1,5 +1,4 @@
      -Appendix�D.�Using CVS with an OpenACS Site

      Appendix�D.�Using CVS with an OpenACS Site

      - by Joel Aufrecht
      +Appendix�D.�Using CVS with an OpenACS Site

      Appendix�D.�Using CVS with an OpenACS Site

      By Joel Aufrecht

      OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

      View comments on this page at openacs.org
      +
      View comments on this page at openacs.org
      Index: openacs-4/packages/acs-core-docs/www/database-management.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/database-management.html,v diff -u -r1.14.2.1 -r1.14.2.2 --- openacs-4/packages/acs-core-docs/www/database-management.html 14 Nov 2003 09:43:45 -0000 1.14.2.1 +++ openacs-4/packages/acs-core-docs/www/database-management.html 21 Nov 2003 11:14:06 -0000 1.14.2.2 @@ -1,8 +1,7 @@ -Database Management

      Database Management

      - by Joel Aufrecht
      +Database Management

      Database Management

      By Joel Aufrecht

      OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

      Running a PostGreSQL database on another server

      To run a database on a different machine than the +

      Running a PostGreSQL database on another server

      To run a database on a different machine than the webserver requires changes to the database configuration file and access control file, and to the OpenACS service's configuration file.

      • Edit the database configuration file, which in a @@ -37,7 +36,7 @@ your server in /etc/inittab, reread the inittab with /sbin/init q, and then restart-aolserver - service0.

        Then, to drop the db, just do:

        +        service0.

        Then, to drop the db, just do:

         service0:~$ dropdb service0
         DROP DATABASE

      Vacuum Postgres nightly

      The "vacuum" command must be run periodically to reclaim space. The @@ -55,4 +54,4 @@

      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
      ($Id$)
      View comments on this page at openacs.org
      +0 1 * * * /usr/local/pgsql/bin/vacuumdb birdnotes
      ($Id$)
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/db-api-detailed.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/db-api-detailed.html,v diff -u -r1.22.2.1 -r1.22.2.2 --- openacs-4/packages/acs-core-docs/www/db-api-detailed.html 14 Nov 2003 09:43:45 -0000 1.22.2.1 +++ openacs-4/packages/acs-core-docs/www/db-api-detailed.html 21 Nov 2003 11:14:06 -0000 1.22.2.2 @@ -1,10 +1,7 @@ -Database Access API

    Database Access API

    -by Jon Salz. Revised and expanded by -Roberto Mello (rmello at fslc dot usu dot edu), July 2002. -
    +Database Access API

    Database Access API

    By Jon Salz. Revised and expanded by Roberto Mello (rmello at fslc dot usu dot edu), July 2002.

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

    • Tcl procedures: /packages/acs-kernel/10-database-procs.tcl

    • Tcl initialization: /packages/acs-kernel/database-init.tcl

    The Big Picture

    +

    • Tcl procedures: /packages/acs-kernel/10-database-procs.tcl

    • Tcl initialization: /packages/acs-kernel/database-init.tcl

    The Big Picture

    One of OpenACS's great strengths is that code written for it is very close to the database. It is very easy to interact with the database from anywhere within OpenACS. Our goal is to develop a coherent API for database access which @@ -555,9 +552,9 @@

    Performs the SQL query sql, saving results in variables of the form - var_name:1, var_name:2, etc, - setting var_name:rowcount to the total number - of rows, and setting var_name:columns to a + var_name:1, var_name:2, etc, + setting var_name:rowcount to the total number + of rows, and setting var_name:columns to a list of column names.

    Each row also has a column, rownum, automatically @@ -578,7 +575,7 @@ multirow.

    You may also add additional, computed columns to the multirow, using the - -extend { col_1 col_2 ... } switch. This is + -extend { col_1 col_2 ... } switch. This is useful for things like constructing a URL for the object retrieved by the query.

    @@ -730,4 +727,4 @@ The nsv containing the list is initialized by the bootstrap script and should never be referenced directly by user code. Returns the current rdbms type and version. -

    ($Id$)
    View comments on this page at openacs.org
    +

    ($Id$)
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/db-api.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/db-api.html,v diff -u -r1.22.2.1 -r1.22.2.2 --- openacs-4/packages/acs-core-docs/www/db-api.html 14 Nov 2003 09:43:45 -0000 1.22.2.1 +++ openacs-4/packages/acs-core-docs/www/db-api.html 21 Nov 2003 11:14:06 -0000 1.22.2.2 @@ -1,7 +1,5 @@ -The OpenACS Database Access API

    The OpenACS Database Access API

    - By Pete Su and - Jon Salz. Modified - by Roberto Mello. +The OpenACS Database Access API

    The OpenACS Database Access API

    + By Pete Su and Jon Salz. Modified by Roberto Mello.

    Overview

    One of OpenACS's great strengths is that code written for it is very close to the database. It is very easy to interact with the @@ -76,15 +74,15 @@ and some_table.condition_p = 'foo'

    There are a few problems with this: -

    1. +

      1. If the literal value is a huge string, then we waste a lot of time in the database server doing useless parsing. -

      2. +

      3. Second, if the literal value contains characters like single quotes, we have to be careful to double-quote them, because not quoting them will lead to surprising errors. -

      4. +

      5. Third, no type checking occurs on the literal value. Finally, if the Tcl variable is passed in or between web forms or otherwise subject to external modification, @@ -355,9 +353,9 @@

        Performs the SQL query sql, saving results in variables of the form - var_name:1, var_name:2, etc, - setting var_name:rowcount to the total number - of rows, and setting var_name:columns to a + var_name:1, var_name:2, etc, + setting var_name:rowcount to the total number + of rows, and setting var_name:columns to a list of column names.

        Each row also has a column, rownum, automatically @@ -378,7 +376,7 @@ multirow.

        You may also add additional, computed columns to the multirow, using the - -extend { col_1 col_2 ... } switch. This is + -extend { col_1 col_2 ... } switch. This is useful for things like constructing a URL for the object retrieved by the query.

        @@ -684,4 +682,4 @@

      ($Id$)

      -

    View comments on this page at openacs.org
    +

    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/dev-guide.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/dev-guide.html,v diff -u -r1.17 -r1.17.2.1 --- openacs-4/packages/acs-core-docs/www/dev-guide.html 11 Nov 2003 12:54:57 -0000 1.17 +++ openacs-4/packages/acs-core-docs/www/dev-guide.html 21 Nov 2003 11:14:06 -0000 1.17.2.1 @@ -1 +1 @@ -Chapter�8.�Development Reference
    View comments on this page at openacs.org
    +Chapter�8.�Development Reference
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/docbook-primer.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/docbook-primer.html,v diff -u -r1.23.2.1 -r1.23.2.2 --- openacs-4/packages/acs-core-docs/www/docbook-primer.html 14 Nov 2003 09:43:45 -0000 1.23.2.1 +++ openacs-4/packages/acs-core-docs/www/docbook-primer.html 21 Nov 2003 11:14:06 -0000 1.23.2.2 @@ -1,8 +1,7 @@ -OpenACS Documentation Guide

    OpenACS Documentation Guide

    - By claus@arsdigita.com, with - additions by Roberto +OpenACS Documentation Guide

    OpenACS Documentation Guide

    + By Claus Rasmussen, with additions by Roberto Mello and the OpenACS Community -

    Overview of OpenACS 5.0.0b1 Documentation

    +

    Overview of OpenACS 5.0.0b2 Documentation

    ArsDigita created a good documentation ground for us to build upon. Some sections of the documentation, however, lack details and examples; others are simply nonexistant. Our goal is to give @@ -19,19 +18,21 @@ DocBook are explained in more details in the Why DocBook? section. I will add the reasons why we are using Docbook XML instead of Docbook SGML: -

    • Consistency. We already have a bunch of +

      • + Consistency. We already have a bunch of .xml files that ArsDigita wrote. Trying to re-write them to conform to the SGML DTD would be unnecessary work (I tried). -

      • It does not require extra +

      • + It does not require extra effort. Writing in XML is almost identical to SGML, with a couple extra rules. More details in the LDP Author Guide. -

    Why DocBook?

    +

    Why DocBook?

    In order to separate content and presentation, all OpenACS documentation will be marked up to conform to the DocBook XML DTD - + This enables us to publish in a variety of formats and relieves each contributor of the burden of presentation, freeing him to focus on content and sharing knowledge. @@ -52,7 +53,7 @@ list of elements and use more exotic features in your documents. The list is made up of SGML-elements but basically the same elements are valid in the XML DTD as long as you remember to: - +

    • Always close your tags with corresponding end-tags and to not use other tag minimization @@ -63,24 +64,27 @@

    Tools

    You are going to need the following to work with the OpenACS Docbook XML documentation: -

    • Docbook XML +

      • + Docbook XML DTD - The document type definition for XML. You can find an RPM or DEB package or you can download a zip file from the site linked from here. -

      • XSL +

      • + XSL Stylesheets (docbook-xsl) - The stylesheets to convert to HTML. We have been using a stylesheet based upon NWalsh's chunk.xsl. -

      • xsltproc - The processor that +

      • + xsltproc - The processor that will take an XML document and, given a xsl stylesheet, convert it to HTML. It needs libxml2 and libxslt (available in RPM and DEB formats or from xmlsoft.org. -

      • +

      • Some editing tool. A popular one is Emacs with the psgml mode. We have a intro to the PSGML Mode in Emacs as part of our documentation. You can read about other editing tools in the LDP Author Guide. -

    Writing New Docs

    +

    Writing New Docs

    After you have the tools mentioned above, you need to define a title for your document. Then start thinking about the possible sections and subsections you will have in your document. Make @@ -98,7 +102,7 @@ The documentation for each package will make up a little "book" that is structured like this - examples are emphasized: - +

         book                        : Docs for one package - templating
    @@ -122,20 +126,20 @@
           sources of these DocBook documents
           to get an idea of how they are tied together.
         

    Headlines, Sections

    - + Given that your job starts at the sect1-level, all your documents should open with a <sect1>-tag and end with the corresponding </sect1>.

    - + You need to feed every <sect1> two attributes. The first attribute, id, is standard and can be used with all elements. It comes in very handy when interlinking between documents (more about this when talking about links in the section called “Links”). The value of id has to be unique throughout the book you're making since the id's in your sect1's will turn into filenames when the book is parsed into HTML.

    - + The other attribute is xreflabel. The value of this is the text that will appear as the link when referring to this sect1.

    @@ -150,7 +154,7 @@ </sect1>

    - + Inside this container your document will be split up into <sect2>'s, each with the same requirements - id and xreflabel @@ -159,7 +163,7 @@ When it comes to naming your sect2's and below, prefix them with some abbreviation of the id in the sect1 such as requirements-overview.

    Code

    - + For displaying a snippet of code, a filename or anything else you just want to appear as a part of a sentence, we will use the tag <computeroutput>. @@ -169,12 +173,12 @@ <programlisting> is used. Just wrap your code block in it; mono-spacing, indents and all that stuff is taken care of automatically.

    Links

    - + Linking falls into two different categories: inside the book you're making and outside:

    1. Inside linking, cross-referencing other parts of your book

    By having unique id's you can cross-reference any part of your book with a simple tag, regardless of where that part is. -

    Check out how I link to a subsection of the Developer's Guide:

    +	  

    Check out how I link to a subsection of the Developer's Guide:

     
     	    Put this in your XML:
     
    @@ -212,7 +216,7 @@
     	    packages-looks, the
     	    parser will try its best to explain where the link takes you.
     	  

    2. Linking outside the documentation

    - + If you're hyper-linking out of the documentation, it works almost the same way as HTML - the tag is just a little different @@ -233,7 +237,7 @@ do it, so if you want to start converting your documents right away, start out with the ones without graphics ;)

    - + To insert a graphic we use the elements <mediaobject>, <imageobject>, @@ -259,7 +263,7 @@ Put your graphics in a separate directory ("images") and link to them only with relative paths.

    Lists

    - + Here's how you make the DocBook equivalent of the three usual HTML-lists:

    1. How to make an <ul>

    Making an unordered list is pretty much like doing the same thing in HTML - if you close your <li>, that is. The only differences are that each list item has to be wrapped in something more, such as @@ -304,7 +308,7 @@ </variablelist>

    Tables

    - + DocBook supports several types of tables, but in most cases, the <informaltable> is enough: @@ -341,7 +345,7 @@ <table> for an example.

    Emphasis

    - + Our documentation uses two flavors of emphasis - italics and bold type. DocBook uses one - <emphasis>.

    @@ -357,9 +361,7 @@ <primary> and <secondary> for this. See these links for an explanation. -

    Converting to HTML

    Note

    - This section is quoted almost verbatim from the LDP Author Guide. -

    +

    Converting to HTML

    Note

    This section is quoted almost verbatim from the LDP Author Guide.

    Once you have the Docbook Tools installed, you can convert your xml documents to HTML (or other formats. Let me know if you are able to convert to other @@ -374,25 +376,24 @@ use the command:

     bash$  xsltproc -o outputfilename.xml /usr/share/sgml/docbook/stylesheet/xsl/nwalsh/html/html.xsl filename.xml
    -    

    Note

    +

    Note

    This example uses Daniel Veillard's xsltproc command available as part of libxslt from http://www.xmlsoft.org/XSLT/. If you are using other XML processors such as Xalan or Saxon, you will need to change the command line appropriately. -

    +

    To generate a set of linked HTML pages, with a separate page for each <chapter>, <sect1> or <appendix> tag, use the following command:

     bash$  xsltproc /usr/share/sgml/docbook/stylesheet/xsl/nwalsh/html/chunk.xsl filename.xml
    -    

    Further Reading

    • +

    Further Reading

    • The LDP Author Guide has a lot of good information, a table of docbook elements and their "look" in HTML and lots of good links for tools. -

    • - David - Lutterkort +

    • + David Lutterkort wrote an intro to the PSGML Mode in Emacs

    • For checking if your document is well-formed, James Clark's free Java parser, @@ -411,7 +412,7 @@ In the process of transforming your HTML into XML, HTML tidy can be a a handy tool to make your HTML "regexp'able". - Brandoch Calef has made a + Brandoch Calef has made a Perl script that gets you most of the way. Index: openacs-4/packages/acs-core-docs/www/eng-standards-constraint-naming.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/eng-standards-constraint-naming.html,v diff -u -r1.22.2.1 -r1.22.2.2 --- openacs-4/packages/acs-core-docs/www/eng-standards-constraint-naming.html 14 Nov 2003 09:43:45 -0000 1.22.2.1 +++ openacs-4/packages/acs-core-docs/www/eng-standards-constraint-naming.html 21 Nov 2003 11:14:06 -0000 1.22.2.2 @@ -1,7 +1,7 @@ -Constraint naming standard

      Constraint naming standard

      By mbryzek@arsdigita.com


      +Constraint naming standard

      Constraint naming standard

      By Michael Bryzek

      OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

      The Big Picture

      +

      The Big Picture

      Constraint naming standard is important for one reason: The SYS_* name oracle assigns to unnamed constraints is not very understandable. By correctly naming all contraints, we can quickly associate a particular constraint @@ -73,7 +73,10 @@ Isn't it nice to see "EXAMPLE_TOPICS_TOPIC_ID_PK" in the trace and know exactly which table oracle is using at each step?

      Naming not null constraints is optional...

      -ArsDigita is split on whether or not we should be naming not null constraints... So, if you want to name them, please do so and follow the above naming standard. But, naming not null constraints is not a requirement at ArsDigita. +People disagree on whether or not we should be naming not null +constraints. So, if you want to name them, please do so and follow +the above naming standard. But, naming not null constraints is not a +requirement.

      About Naming the not null constraints

      Index: openacs-4/packages/acs-core-docs/www/eng-standards-filenaming.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/eng-standards-filenaming.html,v diff -u -r1.22.2.1 -r1.22.2.2 --- openacs-4/packages/acs-core-docs/www/eng-standards-filenaming.html 14 Nov 2003 09:43:45 -0000 1.22.2.1 +++ openacs-4/packages/acs-core-docs/www/eng-standards-filenaming.html 21 Nov 2003 11:14:07 -0000 1.22.2.2 @@ -1,8 +1,7 @@ -ACS File Naming and Formatting Standards

      ACS File Naming and Formatting Standards

      By michael@arsdigita.com and -aure@arsdigita.com


      +ACS File Naming and Formatting Standards

      ACS File Naming and Formatting Standards

      By Michael Yoon and Aurelius Prochazka

      OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

      +

      To ensure consistency (and its collateral benefit, maintainability), we define and adhere to standards in the following areas:

      File Nomenclature

      @@ -110,7 +109,7 @@ @param password_from_from The password the user entered. @param return_url What url to return to after successful login. @param persistent_cookie_p Specifies whether a cookie should be set to keep the user logged in forever. - @author John Doe (jdoe@arsdigita.com) + @author John Doe (jdoe@example.com) @cvs-id file-standards.html,v 1.2 2000/09/19 07:22:45 ron Exp } { user_id:integer,notnull @@ -152,7 +151,7 @@ ad_library { Provides helper routines for the Wimpy Point module. - @author John Doe (jdoe@arsdigita.com) + @author John Doe (jdoe@example.com) @cvs-id file-standards.html,v 1.2 2000/09/19 07:22:45 ron Exp }

      Non-Tcl Files

      Index: openacs-4/packages/acs-core-docs/www/eng-standards-plsql.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/eng-standards-plsql.html,v diff -u -r1.22.2.1 -r1.22.2.2 --- openacs-4/packages/acs-core-docs/www/eng-standards-plsql.html 14 Nov 2003 09:43:45 -0000 1.22.2.1 +++ openacs-4/packages/acs-core-docs/www/eng-standards-plsql.html 21 Nov 2003 11:14:07 -0000 1.22.2.2 @@ -1,10 +1,9 @@ -PL/SQL Standards

      PL/SQL Standards

      -By richardl@arsdigita.com -and yon@arsdigita.com -


      +PL/SQL Standards

      PL/SQL Standards

      +By Richard Li and Yon Feldman +

      OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

      +

      Like any other part of the OpenACS, PL/SQL (or pl/pgsql) code must be maintainable and professional. This means that it must be consistent and therefore must abide by certain standards. The standards will ensure that @@ -152,4 +151,4 @@ as possible to all source code readers.

    • Lowercase everything, with the exception of %TYPE and %ROWTYPE. -

    ($Id$)
    View comments on this page at openacs.org
    +

    ($Id$)
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/eng-standards-versioning.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/eng-standards-versioning.html,v diff -u -r1.22.2.1 -r1.22.2.2 --- openacs-4/packages/acs-core-docs/www/eng-standards-versioning.html 14 Nov 2003 09:43:45 -0000 1.22.2.1 +++ openacs-4/packages/acs-core-docs/www/eng-standards-versioning.html 21 Nov 2003 11:14:07 -0000 1.22.2.2 @@ -1,7 +1,7 @@ -Release Version Numbering

    Release Version Numbering

    By Ron Henderson


    +Release Version Numbering

    Release Version Numbering

    By Ron Henderson

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

    +

    OpenACS version numbers help identify at a high-level what is in a particular release and what has changed since the last release. A "version number" is really just a string of the form: Index: openacs-4/packages/acs-core-docs/www/eng-standards.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/eng-standards.html,v diff -u -r1.14 -r1.14.2.1 --- openacs-4/packages/acs-core-docs/www/eng-standards.html 11 Nov 2003 10:28:27 -0000 1.14 +++ openacs-4/packages/acs-core-docs/www/eng-standards.html 21 Nov 2003 11:14:07 -0000 1.14.2.1 @@ -1 +1 @@ -Chapter�9.�Engineering Standards

    View comments on this page at openacs.org
    +Chapter�9.�Engineering Standards
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/ext-auth-requirements.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/ext-auth-requirements.html,v diff -u -r1.11.2.1 -r1.11.2.2 --- openacs-4/packages/acs-core-docs/www/ext-auth-requirements.html 14 Nov 2003 09:43:45 -0000 1.11.2.1 +++ openacs-4/packages/acs-core-docs/www/ext-auth-requirements.html 21 Nov 2003 11:14:07 -0000 1.11.2.2 @@ -1,4 +1,4 @@ -External Authentication Requirements

    External Authentication Requirements

    Vision

    People have plenty of usernames and passwords already, we +External Authentication Requirements

    External Authentication Requirements

    Vision

    People have plenty of usernames and passwords already, we don't want them to have yet another. We want people to be able to log in to OpenACS with the same password they use to log in to any other system.

    Besides, administrators have better things to do than create @@ -44,7 +44,7 @@ only one implementation of the authentication API, namly the one included in OpenACS Core.

  • Authentication Driver API: The service contract which authentication drivers implement.

  • Conceptual Pictures

    Authentication:

    -

    Account Management (NO PICTURE YET)

    Batch Synchronization (NO PICTURE YET)

    Requirements

    New API

    FeatureStatusDescription
    EXT-AUTH-01AExtend Authentication/Acct Status API
    EXT-AUTH-03AAccount Creation API
    EXT-AUTH-05APassword Management API
    EXT-AUTH-30AAuthority Management API

    Login

    FeatureStatusDescription
    EXT-AUTH-04ARewrite login, register, and admin pages to use APIs
    EXT-AUTH-38Aad_form complain feature
    EXT-AUTH-19ARewrite password recovery to use API
    EXT-AUTH-21ARewrite email verification with API
    EXT-AUTH-28AUsername is email switch

    Users will log in using a username, a authority, and a +

    Account Management (NO PICTURE YET)

    Batch Synchronization (NO PICTURE YET)

    Requirements

    New API

    FeatureStatusDescription
    EXT-AUTH-01AExtend Authentication/Acct Status API
    EXT-AUTH-03AAccount Creation API
    EXT-AUTH-05APassword Management API
    EXT-AUTH-30AAuthority Management API

    Login

    FeatureStatusDescription
    EXT-AUTH-04ARewrite login, register, and admin pages to use APIs
    EXT-AUTH-38Aad_form complain feature
    EXT-AUTH-19ARewrite password recovery to use API
    EXT-AUTH-21ARewrite email verification with API
    EXT-AUTH-28AUsername is email switch

    Users will log in using a username, a authority, and a password. The authority is the source for user/password verification. OpenACS can be an authority itself.

    Each user in OpenACS will belong to exactly one authority, which can either be the "local" OpenACS users table, in which case the @@ -376,4 +376,4 @@ PAM specification

  • Draft Proposal by Andrew Grumet.

  • Yale CAS, a centrl authentication service a' la - Passport.

  • Revision History

    Document Revision #Action Taken, NotesWhen?By Whom?
    1Updated work-in-progress for consortium-sponsored ext-auth work at Collaboraid.20 Aug 2003Joel Aufrecht
    View comments on this page at openacs.org
    + Passport.

    Revision History

    Document Revision #Action Taken, NotesWhen?By Whom?
    1Updated work-in-progress for consortium-sponsored ext-auth work at Collaboraid.20 Aug 2003Joel Aufrecht
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/filename.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/filename.html,v diff -u -r1.22.2.1 -r1.22.2.2 --- openacs-4/packages/acs-core-docs/www/filename.html 14 Nov 2003 09:43:45 -0000 1.22.2.1 +++ openacs-4/packages/acs-core-docs/www/filename.html 21 Nov 2003 11:14:07 -0000 1.22.2.2 @@ -1,4 +1,4 @@ -Detailed Design Documentation Template

    Detailed Design Documentation Template

    By You

    Start Note

    +Detailed Design Documentation Template

    Detailed Design Documentation Template

    By You

    Start Note

    NOTE: Some of the sections of this template may not apply to your package, e.g. there may be no user-visible UI elements for a component of the OpenACS Core. Furthermore, it may be easier in some circumstances @@ -114,7 +114,7 @@ within the OpenACS, this section's details are likely to shift from UI specifics to template interface specifics.

    Configuration/Parameters

    - Under OpenACS 5.0.0b1, parameters are set at two levels: at the global level by + Under OpenACS 5.0.0b2, parameters are set at two levels: at the global level by the OpenACS-admin, and at the subsite level by a sub-admin. In this section, list and discuss both levels of parameters.

    Future Improvements/Areas of Likely Change

    Index: openacs-4/packages/acs-core-docs/www/for-everyone.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/for-everyone.html,v diff -u -r1.13 -r1.13.2.1 --- openacs-4/packages/acs-core-docs/www/for-everyone.html 11 Nov 2003 10:28:27 -0000 1.13 +++ openacs-4/packages/acs-core-docs/www/for-everyone.html 21 Nov 2003 11:14:07 -0000 1.13.2.1 @@ -1 +1 @@ -Part�I.�OpenACS For Everyone

    View comments on this page at openacs.org
    +Part�I.�OpenACS For Everyone
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/general-documents.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/general-documents.html,v diff -u -r1.13 -r1.13.2.1 --- openacs-4/packages/acs-core-docs/www/general-documents.html 11 Nov 2003 10:28:27 -0000 1.13 +++ openacs-4/packages/acs-core-docs/www/general-documents.html 21 Nov 2003 11:14:07 -0000 1.13.2.1 @@ -1 +1 @@ -Chapter�1.�High level information: What is OpenACS?

    Chapter�1.�High level information: What is OpenACS?

    View comments on this page at openacs.org
    +Chapter�1.�High level information: What is OpenACS?

    Chapter�1.�High level information: What is OpenACS?

    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/groups-design.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/groups-design.html,v diff -u -r1.15 -r1.15.2.1 --- openacs-4/packages/acs-core-docs/www/groups-design.html 11 Nov 2003 10:28:27 -0000 1.15 +++ openacs-4/packages/acs-core-docs/www/groups-design.html 21 Nov 2003 11:14:07 -0000 1.15.2.1 @@ -1,8 +1,7 @@ -OpenACS 4 Groups Design

    OpenACS 4 Groups Design

    -by Rafael H. Schloming and Mark Thomas
    +OpenACS 4 Groups Design

    OpenACS 4 Groups Design

    By Rafael H. Schloming and Mark Thomas

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

    Essentials

    • User directory

    • Sitewide administrator directory

    • Subsite administrator directory

    • TCL script directory

    • OpenACS 4 Groups Requirements

    • Data model

    • PL/SQL file

      Essentials

      Introduction

      Almost all database-backed websites have users, and need to model the grouping of users. The OpenACS 4 Parties and Groups system is intended to provide the flexibility needed to model complex real-world organizational structures, @@ -300,4 +299,8 @@

      Rafael H. Schloming

      Documentation author -

      Mark Thomas

    Revision History

    Document Revision #Action Taken, NotesWhen?By Whom?
    0.1Creation08/22/2000Rafael H. Schloming
    0.2Initial Revision08/30/2000Mark Thomas
    0.3Additional revisions; tried to clarify membership/compostion09/08/2000Mark Thomas
    View comments on this page at openacs.org
    +

    Mark Thomas

    Revision History

    Document Revision #Action Taken, NotesWhen?By Whom?
    0.1Creation08/22/2000Rafael H. Schloming
    0.2Initial Revision08/30/2000 +Mark Thomas +
    0.3Additional revisions; tried to clarify membership/compostion09/08/2000 +Mark Thomas +
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/groups-requirements.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/groups-requirements.html,v diff -u -r1.15 -r1.15.2.1 --- openacs-4/packages/acs-core-docs/www/groups-requirements.html 11 Nov 2003 10:28:27 -0000 1.15 +++ openacs-4/packages/acs-core-docs/www/groups-requirements.html 21 Nov 2003 11:14:07 -0000 1.15.2.1 @@ -1,8 +1,7 @@ -OpenACS 4 Groups Requirements

    OpenACS 4 Groups Requirements

    -by Rafael H. Schloming, Mark Thomas
    +OpenACS 4 Groups Requirements

    OpenACS 4 Groups Requirements

    By Rafael H. Schloming, Mark Thomas

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

    Introduction

    Almost all database-backed websites have users, and need to model the +

    Introduction

    Almost all database-backed websites have users, and need to model the grouping of users. The OpenACS 4 Parties and Groups system is intended to provide the flexibility needed to model complex real-world organizational structures, particularly to support powerful subsite services; that is, where one OpenACS @@ -14,7 +13,7 @@ and their departments) or regions (the Boston office, the LA office); a person who is employed by (is a member of) a specific department is also a member of the division and the corporation, and works at (is a member of, but -in a different sense) a particular office. OpenACS 4's Parties and Groups +in a different sense) a particular office. OpenACS's Parties and Groups system will support such complex relations faithfully.

    Historical Motivations

    The primary limitation of the OpenACS 3.x user group system is that it restricts the application developer to representing a "flat group" that contains only users: The user_groups table may contain the Index: openacs-4/packages/acs-core-docs/www/i18n-requirements.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/i18n-requirements.html,v diff -u -r1.6 -r1.6.2.1 --- openacs-4/packages/acs-core-docs/www/i18n-requirements.html 11 Nov 2003 10:28:27 -0000 1.6 +++ openacs-4/packages/acs-core-docs/www/i18n-requirements.html 21 Nov 2003 11:14:07 -0000 1.6.2.1 @@ -1,14 +1,12 @@ -OpenACS Internationalization Requirements

    OpenACS Internationalization Requirements

    - by Henry Minsky, +OpenACS Internationalization Requirements

    OpenACS Internationalization Requirements

    by Henry Minsky, Yon Feldman, Lars Pind, Peter Marklund, Christian Hvid, - and others. -
    + and others.

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

    Introduction

    +

    Introduction

    This document describes the requirements for functionality in the OpenACS platform to support globalization of the core and optional modules. The goal is to make it possible to support delivery of @@ -45,7 +43,7 @@ kind of globalization support would be large and ongoing, since without a mechanism to incorporate the locale-specific changes cleanly back into the code base, it would require making a new fork -of the source code for each locale.

    System/Application Overview

    A globalized application will perform some or all of the +of the source code for each locale.

    System/Application Overview

    A globalized application will perform some or all of the following steps to handle a page request for a specific locale:

    1. Decide what the target locale is for an incoming page request

    2. Decide which character set encoding the output should be @@ -79,8 +77,8 @@ developer.

      What do they need to modify to make this work? Can their localization work be easily folded in to future releases of OpenACS?

    3. A developer needs to author a web site which operates in -multiple languages simultaneously. For example, arsDigita.com with -content and navigation in English, German, and Japanese.

      The site would have an end-user visible UI to support these +multiple languages simultaneously. For example, www.un.org with +content and navigation in multiple languages.

      The site would have an end-user visible UI to support these languages, and the content management system must allow articles to be posted in these languages. In some cases it may be necessary to make the modules' admin UI's operate in more than one @@ -113,7 +111,7 @@ the system. A locale refers to a language and territory, and is uniquely identified by a combination of ISO language and ISO country abbreviations.

      See -Content +Content Repository Requirement 100.20

      10.10 Provide a consistent representation and API for creating and referencing a locale

      10.20 There will be a Tcl library of locale-aware formatting and parsing functions for numbers, dates @@ -131,13 +129,13 @@ computed by the following method, in descending order of priority:

      • get locale associated with subsite or package id

      • get locale from user preference

      • get locale from site wide default

        20.20 An API will be provided for getting the current request locale from the -ad_conn structure.

    Resource Bundles / Content Repository

    30.0

    A mechanism must be provided for a developer to group a set +ad_conn structure.

    Resource Bundles / Content Repository

    30.0

    A mechanism must be provided for a developer to group a set of arbitrary content resources together, keyed by a unique identifier and a locale.

    For example, what approaches could be used to implement a localizable nav-bar mechanism for a site? A navigation bar might be made up of a set of text strings and graphics, where the graphics themselves are locale-specific, such as images of English or -Japanese text (as on www.arsdigita.com). It should be easy to +Japanese text (as on www.un.org). It should be easy to specify alternate configurations of text and graphics to lay out the page for different locales.

    Design note: Alternative mechanisms to implement this functionality might include using templates, Java ResourceBundles, Index: openacs-4/packages/acs-core-docs/www/i18n.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/i18n.html,v diff -u -r1.13.2.1 -r1.13.2.2 --- openacs-4/packages/acs-core-docs/www/i18n.html 14 Nov 2003 09:43:45 -0000 1.13.2.1 +++ openacs-4/packages/acs-core-docs/www/i18n.html 21 Nov 2003 11:14:07 -0000 1.13.2.2 @@ -1,10 +1,10 @@ -Internationalization

    Internationalization

    +Internationalization

    Internationalization

    By Peter Marklund and Lars Pind -


    +

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

    Introduction

    +

    Introduction

    This document describes how to develop internationalized OpenACS packages, including writing new packages with internationalization and converting old packages. Text that @@ -38,7 +38,7 @@ which are static and mostly text, it may be easier to create a new ADP page for each language. In this case, the pages are distinguished by a file naming convention. -

    Separate Templates for each Locale

    If the request processor finds a file named filename.locale.adp, where locale matches the user's locale, it will process that file instead of filename.adp. For example, for a user with locale tl_PH, the file index.tl_PH.adp, if found, will be used instead of index.adp. The locale-specific file should thus contain text in the language appropriate for that locale. The code in the page, however, should still be in English. Message keys are still processed.

    Message Keys in Template Files (ADP Files)

    +

    Separate Templates for each Locale

    If the request processor finds a file named filename.locale.adp, where locale matches the user's locale, it will process that file instead of filename.adp. For example, for a user with locale tl_PH, the file index.tl_PH.adp, if found, will be used instead of index.adp. The locale-specific file should thus contain text in the language appropriate for that locale. The code in the page, however, should still be in English. Message keys are still processed.

    Message Keys in Template Files (ADP Files)

    Internationalizing templates is about replacing human readable text in a certain language with internal message keys, which can then be dynamically replaced with real human language in @@ -55,16 +55,16 @@ usable before you have done localization.

    • The short: - #package_key.message_key# + #package_key.message_key#

      The advantage of the short syntax is that it's short. It's as simple as inserting the value of a variable. Example: - #forum.title# + #forum.title#

    • The verbose: <trn - key="package_key.message_key" - locale="locale">default - text</trn> + key="package_key.message_key" + locale="locale">default + text</trn>

      The verbose syntax allows you to specify a default text in a certain language. This syntax is not recommended @@ -76,8 +76,8 @@ key="forum.title" locale="en_US">Title</trn>

    • The temporary: - <#message_key - original text#> + <#message_key + original text#>

      This syntax has been designed to make it easy to internationalize existing pages. This is not a syntax that @@ -101,9 +101,9 @@

      Here are a couple of examples. Say we have the following two parameters, taken directly from the dotlrn package. -

      Table�10.1.�

      Parameter NameParameter Value
      class_instance_pages_csv#dotlrn.class_page_home_title#,Simple 2-Column;#dotlrn.class_page_calendar_title#,Simple 1-Column;#dotlrn.class_page_file_storage_title#,Simple 1-Column
      departments_pretty_name#departments_pretty_name#

      +

      Parameter NameParameter Value
      class_instance_pages_csv#dotlrn.class_page_home_title#,Simple 2-Column;#dotlrn.class_page_calendar_title#,Simple 1-Column;#dotlrn.class_page_file_storage_title#,Simple 1-Column
      departments_pretty_name#departments_pretty_name#

      Then, depending on how we retrieve the value, here's what we get: -

      Table�10.2.�

      Command used to retrieve ValueRetrieved Value
      parameter::get -localize -parameter class_instances_pages_csvKurs Startseite,Simple 2-Column;Kalender,Simple 1-Column;Dateien,Simple 1-Column
      parameter::get -localize -parameter departments_pretty_nameAbteilung
      parameter::get -parameter departments_pretty_name#departments_pretty_name#

      +

      Command used to retrieve ValueRetrieved Value
      parameter::get -localize -parameter class_instances_pages_csvKurs Startseite,Simple 2-Column;Kalender,Simple 1-Column;Dateien,Simple 1-Column
      parameter::get -localize -parameter departments_pretty_nameAbteilung
      parameter::get -parameter departments_pretty_name#departments_pretty_name#

      The value in the rightmost column in the table above is the value returned by an invocation of parameter::get. Note that for localization to happen you must use the -localize flag. @@ -151,7 +151,7 @@ Use the *_pretty version in your ADP page.

    To internationalize numbers, use lc_numeric $value, which formats the number using the appropriate decimal point and thousand separator for the locale. -

    Internationalizing Forms

    When coding forms, remember to use message keys for each piece of text that is user-visible, including form option labels and button labels.

    Internationalizing Existing Packages

    Internationalize Message text in ADP and TCL

    Acs-lang includes tools to automate some +

    Internationalizing Forms

    When coding forms, remember to use message keys for each piece of text that is user-visible, including form option labels and button labels.

    Internationalizing Existing Packages

    Internationalize Message text in ADP and TCL

    Acs-lang includes tools to automate some internationalization. From /acs-admin/apm/, select a package and then click on @@ -240,9 +240,9 @@ with the appropriate notation for the type of file, and store the text in the message catalog. You need to run the process twice, once for ADP files, and once for Tcl files. -

    Internationalize Package Parameters with visible messages

    +

    Internationalize Package Parameters with visible messages

    See Multilingual APM Parameters -

    Internationalize Date and Time queries

    1. Find datetime in .xql files. Use command line tools to find suspect SQL code:

      grep -r "to_char.*H" *
      +    

    Internationalize Date and Time queries

    1. Find datetime in .xql files. Use command line tools to find suspect SQL code:

      grep -r "to_char.*H" *
       grep -r "to_date.*H" *
       
    2. In SQL statements, replace the format string with the ANSI standard format, YYYY-MM-DD HH24:MI:SS and change the field name to *_ansi so that it cannot be confused with previous, improperly formatting fields. For example,

      to_char(timestamp,'MM/DD/YYYY HH:MI:SS') as foo_date_pretty

      becomes

      to_char(timestamp,'YYYY-MM-DD HH24:MI:SS') as foo_date_ansi
    3. In TCL files where the date fields are used, convert the datetime from local server timezone, which is how it's stored in the database, to the user's timezone for display. Do this with the localizing function lc_time_system_to_conn:

       set foo_date_ansi [lc_time_system_to_conn $foo_date_ansi]

      When a datetime will be written to the database, first convert it from the user's local time to the server's timezone with lc_time_conn_to_system. Index: openacs-4/packages/acs-core-docs/www/index.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/index.html,v diff -u -r1.22.2.1 -r1.22.2.2 --- openacs-4/packages/acs-core-docs/www/index.html 14 Nov 2003 09:43:45 -0000 1.22.2.1 +++ openacs-4/packages/acs-core-docs/www/index.html 21 Nov 2003 11:14:07 -0000 1.22.2.2 @@ -1 +1 @@ -OpenACS Core Documentation

      OpenACS Core Documentation


      Table of Contents

      I. OpenACS For Everyone
      1. High level information: What is OpenACS?
      Overview
      OpenACS Release Notes
      II. Administrator's Guide
      2. Installation Overview
      Basic Steps
      Prerequisite Software
      3. Complete Installation
      Install Unix-like system and supporting software
      Install Oracle 8.1.7
      Install PostGreSQL
      Install AOLserver 3.3oacs1
      Install OpenACS 5.0.0b1
      OpenACS Installation Guide for Windows2000
      OpenACS Installation Guide for Mac OS X
      4. Configuring a New Service
      5. Upgrading
      Support for upgrades.
      6. Maintenance
      Hosting Web Sites
      Database Management
      Backup and Recovery
      A. Install Red Hat 8/9
      B. Install additional supporting software
      Unpack the OpenACS tarball
      Initialize CVS (OPTIONAL)
      Add PSGML commands to emacs init file (OPTIONAL)
      Install Daemontools (OPTIONAL)
      Install qmail (OPTIONAL)
      Install Analog web file analyzer
      Install nspam
      Install Full Text Search
      Install nsopenssl
      Install tclwebtest.
      C. Credits
      Where did this document come from?
      Linux Install Guides
      Security Information
      Resources
      III. For OpenACS Package Developers
      7. Development Tutorial
      Creating a Package
      Setting Up Database Objects
      Creating Web Pages
      Debugging and Automated Testing
      Advanced Topics
      8. Development Reference
      OpenACS 5.0.0b1 Packages
      OpenACS Data Models and the Object System
      The Request Processor
      The OpenACS Database Access API
      Using Templates in OpenACS 5.0.0b1
      Groups, Context, Permissions
      Writing OpenACS 5.0.0b1 Application Pages
      Parties in OpenACS 5.0.0b1
      OpenACS 4.x Permissions Tediously Explained
      Object Identity
      Programming with AOLserver
      9. Engineering Standards
      OpenACS Documentation Guide
      Using PSGML mode in Emacs
      Detailed Design Documentation Template
      System/Application Requirements Template
      Release Version Numbering
      Constraint naming standard
      ACS File Naming and Formatting Standards
      PL/SQL Standards
      D. Using CVS with an OpenACS Site
      Add the Service to CVS - OPTIONAL
      E. How to package and release OpenACS
      IV. For OpenACS Platform Developers
      Platform Development
      10. Kernel Documentation
      Overview
      OpenACS 4 Object Model Requirements
      OpenACS 4 Object Model Design
      OpenACS 4 Permissions Requirements
      OpenACS 4 Permissions Design
      OpenACS 4 Groups Requirements
      OpenACS 4 Groups Design
      OpenACS 4 Subsites Requirements
      OpenACS 4 Subsites Design Document
      OpenACS 5.0.0b1 Package Manager Requirements
      OpenACS 5.0.0b1 Package Manager Design
      Database Access API
      OpenACS Internationalization Requirements
      Internationalization
      OpenACS 4 Security Requirements
      OpenACS 4 Security Design
      OpenACS 4 Security Notes
      OpenACS 4 Request Processor Requirements
      OpenACS 4 Request Processor Design
      Documenting Tcl Files: Page Contracts and Libraries
      Bootstrapping OpenACS
      External Authentication Requirements

      List of Tables

      8.1.
      8.2.
      8.3.
      8.4.
      8.5.
      8.6.
      8.7.
      8.8.
      8.9.
      8.10.
      8.11.
      8.12.
      10.1.
      10.2.
      View comments on this page at openacs.org
      +OpenACS Core Documentation

      OpenACS Core Documentation


      Table of Contents

      I. OpenACS For Everyone
      1. High level information: What is OpenACS?
      Overview
      OpenACS Release Notes
      II. Administrator's Guide
      2. Installation Overview
      Basic Steps
      Prerequisite Software
      3. Complete Installation
      Install Unix-like system and supporting software
      Install Oracle 8.1.7
      Install PostGreSQL
      Install AOLserver 3.3oacs1
      Install OpenACS 5.0.0b2
      OpenACS Installation Guide for Windows2000
      OpenACS Installation Guide for Mac OS X
      4. Configuring a New Service
      5. Upgrading
      Upgrading
      6. Maintenance
      Hosting Web Sites
      Database Management
      Backup and Recovery
      A. Install Red Hat 8/9
      B. Install additional supporting software
      Unpack the OpenACS tarball
      Initialize CVS (OPTIONAL)
      Add PSGML commands to emacs init file (OPTIONAL)
      Install Daemontools (OPTIONAL)
      Install qmail (OPTIONAL)
      Install Analog web file analyzer
      Install nspam
      Install Full Text Search
      Install nsopenssl
      Install tclwebtest.
      C. Credits
      Where did this document come from?
      Linux Install Guides
      Security Information
      Resources
      III. For OpenACS Package Developers
      7. Development Tutorial
      Creating a Package
      Setting Up Database Objects
      Creating Web Pages
      Debugging and Automated Testing
      Advanced Topics
      8. Development Reference
      OpenACS 5.0.0b2 Packages
      OpenACS Data Models and the Object System
      The Request Processor
      The OpenACS Database Access API
      Using Templates in OpenACS 5.0.0b2
      Groups, Context, Permissions
      Writing OpenACS 5.0.0b2 Application Pages
      Parties in OpenACS 5.0.0b2
      OpenACS 4.x Permissions Tediously Explained
      Object Identity
      Programming with AOLserver
      9. Engineering Standards
      OpenACS Documentation Guide
      Using PSGML mode in Emacs
      Detailed Design Documentation Template
      System/Application Requirements Template
      Release Version Numbering
      Constraint naming standard
      ACS File Naming and Formatting Standards
      PL/SQL Standards
      Variables
      Automated Testing
      D. Using CVS with an OpenACS Site
      Add the Service to CVS - OPTIONAL
      E. How to package and release OpenACS
      IV. For OpenACS Platform Developers
      Platform Development
      10. Kernel Documentation
      Overview
      OpenACS 4 Object Model Requirements
      OpenACS 4 Object Model Design
      OpenACS 4 Permissions Requirements
      OpenACS 4 Permissions Design
      OpenACS 4 Groups Requirements
      OpenACS 4 Groups Design
      OpenACS 4 Subsites Requirements
      OpenACS 4 Subsites Design Document
      OpenACS 5.0.0b2 Package Manager Requirements
      OpenACS 5.0.0b2 Package Manager Design
      Database Access API
      OpenACS Internationalization Requirements
      Internationalization
      OpenACS 4 Security Requirements
      OpenACS 4 Security Design
      OpenACS 4 Security Notes
      OpenACS 4 Request Processor Requirements
      OpenACS 4 Request Processor Design
      Documenting Tcl Files: Page Contracts and Libraries
      Bootstrapping OpenACS
      External Authentication Requirements
      Index
      View comments on this page at openacs.org
      Index: openacs-4/packages/acs-core-docs/www/individual-programs.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/individual-programs.html,v diff -u -r1.13 -r1.13.2.1 --- openacs-4/packages/acs-core-docs/www/individual-programs.html 11 Nov 2003 12:54:57 -0000 1.13 +++ openacs-4/packages/acs-core-docs/www/individual-programs.html 21 Nov 2003 11:14:07 -0000 1.13.2.1 @@ -1,13 +1,12 @@ -Prerequisite Software

      Prerequisite Software

      - by Joel Aufrecht
      +Prerequisite Software

      Prerequisite Software

      by Joel Aufrecht

      OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

      +

      OpenACS requires, at a minimum, an operating system, database, and webserver. Many additional programs, such as a Mail Transport Agent and source control system, are also needed for a fully effective instance. -

      • OpenACS 5.0.0b1.�The OpenACS tarball comprises the core packages and +

        • OpenACS 5.0.0b2.�The OpenACS tarball comprises the core packages and many useful additional packages. This includes a full set of documentation. The tarball works with both PostGreSQL and Oracle.

        • Operating System.�OpenACS is designed for a Unix-like system. It is @@ -39,7 +38,7 @@ distributions.

        • TCL 8.3 development headers and libraries, OPTIONAL.� The site-wide-search service, OpenFTS, requires these to compile. (Debian users: apt-get install tcl8.3-dev). You need this - to install OpenFTS.

      • tDOM, REQUIRED.�OpenACS 5.0.0b1 stores + to install OpenFTS.

    4. tDOM, REQUIRED.�OpenACS 5.0.0b2 stores queries in XML files, so we use an AOLserver module called tDOM to parse these files. (This replaces libxml2, which was used prior to 4.6.4.) tDOM is available from http://www.tdom.org).

    5. tclwebtest, OPTIONAL.�tclwebtest 0.3 is a tool for testing web interfaces @@ -50,22 +49,17 @@ running Apache with mod_nsd - see this post.

    6. nsopenssl 2.1a, OPTIONAL.�Provides SSL capabilities for AOLserver. It requires OpenSSL. You need this if you want users to make - secure (https) connections to your webserver.

    7. ns_pam + secure (https) connections to your webserver. (home + page)

    8. ns_pam 0.1, OPTIONAL.�Provides PAM capabilities for AOLserver. You need this if you want OpenACS users to authenticate through a PAM module (such as RADIUS). (home Index: openacs-4/packages/acs-core-docs/www/install-cvs.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-cvs.html,v diff -u -r1.12.2.1 -r1.12.2.2 --- openacs-4/packages/acs-core-docs/www/install-cvs.html 14 Nov 2003 09:43:45 -0000 1.12.2.1 +++ openacs-4/packages/acs-core-docs/www/install-cvs.html 21 Nov 2003 11:14:08 -0000 1.12.2.2 @@ -1,4 +1,4 @@ -Initialize CVS (OPTIONAL)

      Initialize CVS (OPTIONAL)

      CVS is a source control system. Create and initialize a +Initialize CVS (OPTIONAL)

      Initialize CVS (OPTIONAL)

      CVS is a source control system. Create and initialize a directory for a local cvs repository.

      [root@yourserver tmp]# mkdir /cvsroot
       [root@yourserver tmp]# cvs -d /cvsroot init
       [root@yourserver tmp]#
      Index: openacs-4/packages/acs-core-docs/www/install-daemontools.html
      ===================================================================
      RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-daemontools.html,v
      diff -u -r1.13.2.1 -r1.13.2.2
      --- openacs-4/packages/acs-core-docs/www/install-daemontools.html	14 Nov 2003 09:43:45 -0000	1.13.2.1
      +++ openacs-4/packages/acs-core-docs/www/install-daemontools.html	21 Nov 2003 11:14:08 -0000	1.13.2.2
      @@ -1,9 +1,9 @@
      -Install Daemontools (OPTIONAL)

      Install Daemontools (OPTIONAL)

      Daemontools is a collection of programs for controlling +Install Daemontools (OPTIONAL)

      Install Daemontools (OPTIONAL)

      Daemontools is a collection of programs for controlling other processes. We use daemontools to run and monitor AOLServer. It is installed in /package. These commands install daemontools and svgroup. svgroup is a script for granting permissions, to allow users other than root to use daemontools for specific - services.

      1. Install Daemontools

        download daemontools and install it.

        • Red Hat 8

          [root@yourserver root]# mkdir -p /package
          +      services.

          1. Install Daemontools

            download daemontools and install it.

            • Red Hat 8

              [root@yourserver root]# mkdir -p /package
               [root@yourserver root]# chmod 1755 /package/
               [root@yourserver root]# cd /package/
               [root@yourserver package]# tar xzf /tmp/daemontools-0.76.tar.gz
              @@ -61,7 +61,7 @@
               root     13294  0.0  0.1  1352  272 ?        S    09:51   0:00 svscan /service
               root     13295  0.0  0.0  1304  208 ?        S    09:51   0:00 readproctitle service errors: .......................................
               [root@yourserver root]#
            • Install a script to grant non-root users permission to - control daemontools services.

              [root@yourserver root]# cp /tmp/openacs-5.0.0b1/packages/acs-core-docs/www/files/svgroup.txt /usr/local/bin/svgroup
              +        control daemontools services.

              [root@yourserver root]# cp /tmp/openacs-5.0.0b2/packages/acs-core-docs/www/files/svgroup.txt /usr/local/bin/svgroup
               [root@yourserver root]# chmod 755 /usr/local/bin/svgroup
              -
              cp /tmp/openacs-5.0.0b1/packages/acs-core-docs/www/files/svgroup.txt /usr/local/bin/svgroup 
              +
              cp /tmp/openacs-5.0.0b2/packages/acs-core-docs/www/files/svgroup.txt /usr/local/bin/svgroup 
               chmod 755 /usr/local/bin/svgroup
        View comments on this page at openacs.org
        Index: openacs-4/packages/acs-core-docs/www/install-full-text-search.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/Attic/install-full-text-search.html,v diff -u -r1.11.2.1 -r1.11.2.2 --- openacs-4/packages/acs-core-docs/www/install-full-text-search.html 14 Nov 2003 09:43:45 -0000 1.11.2.1 +++ openacs-4/packages/acs-core-docs/www/install-full-text-search.html 21 Nov 2003 11:14:08 -0000 1.11.2.2 @@ -1,4 +1,4 @@ -Install Full Text Search

        Install Full Text Search

        Install OpenFTS module

        If you want full text search, and you are running PostGreSQL, install this module to support FTS. Do this step after you have installed both PostGreSQL and +Install Full Text Search

        Install Full Text Search

        Install OpenFTS module

        If you want full text search, and you are running PostGreSQL, install this module to support FTS. Do this step after you have installed both PostGreSQL and Aolserver. You will need the openfts tarball in /tmp.

        1. Install Tsearch. This is a PostGreSQL module that OpenFTS requires.

          [root@yourserver root]# su - postgres
          @@ -73,7 +73,7 @@
           make
           su postgres
           make install
          -exit

    Install OpenFTS prerequisites in PostGreSQL instance

    If you are installing Full Text Search, add required +exit

    Install OpenFTS prerequisites in PostGreSQL instance

    If you are installing Full Text Search, add required packages to the new database. (In order for full text search to work, you must also install the PostGreSQL OpenFTS module and prerequisites.)

    [service0@yourserver service0]$ /usr/local/pgsql/bin/psql service0 -f /usr/local/src/postgresql-7.2.4/contrib/tsearch/tsearch.sql
    Index: openacs-4/packages/acs-core-docs/www/install-more-software.html
    ===================================================================
    RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-more-software.html,v
    diff -u -r1.6 -r1.6.2.1
    --- openacs-4/packages/acs-core-docs/www/install-more-software.html	11 Nov 2003 10:28:27 -0000	1.6
    +++ openacs-4/packages/acs-core-docs/www/install-more-software.html	21 Nov 2003 11:14:08 -0000	1.6.2.1
    @@ -1,8 +1,7 @@
    -Appendix�B.�Install additional supporting software

    Appendix�B.�Install additional supporting software

    - by Joel Aufrecht
    +Appendix�B.�Install additional supporting software

    Appendix�B.�Install additional supporting software

    By Joel Aufrecht

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

    This section assumes that the source tarballs for supporting +

    This section assumes that the source tarballs for supporting software are in /tmp. It assumes that you begin each continuous block of commands as root, and you should end each block as root. It doesn't care which directory Index: openacs-4/packages/acs-core-docs/www/install-nsopenssl.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-nsopenssl.html,v diff -u -r1.7 -r1.7.2.1 --- openacs-4/packages/acs-core-docs/www/install-nsopenssl.html 11 Nov 2003 10:28:27 -0000 1.7 +++ openacs-4/packages/acs-core-docs/www/install-nsopenssl.html 21 Nov 2003 11:14:08 -0000 1.7.2.1 @@ -1,4 +1,4 @@ -Install nsopenssl

    Install nsopenssl

    This AOLserver module is required if you want people to connect to your site via +Install nsopenssl

    Install nsopenssl

    This AOLserver module is required if you want people to connect to your site via https. These commands compile nsopenssl and install it, along with a tcl helper script to handle https connections. You will also need ssl certificates. Because those should Index: openacs-4/packages/acs-core-docs/www/install-nspam.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-nspam.html,v diff -u -r1.2 -r1.2.2.1 --- openacs-4/packages/acs-core-docs/www/install-nspam.html 11 Nov 2003 10:28:27 -0000 1.2 +++ openacs-4/packages/acs-core-docs/www/install-nspam.html 21 Nov 2003 11:14:08 -0000 1.2.2.1 @@ -1 +1 @@ -Install nspam

    View comments on this page at openacs.org
    +Install nspam
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/install-origins.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-origins.html,v diff -u -r1.2 -r1.2.2.1 --- openacs-4/packages/acs-core-docs/www/install-origins.html 11 Nov 2003 10:28:27 -0000 1.2 +++ openacs-4/packages/acs-core-docs/www/install-origins.html 21 Nov 2003 11:14:08 -0000 1.2.2.1 @@ -1,15 +1,15 @@ -Where did this document come from?

    Where did this document come from?

    +Where did this document come from?

    Where did this document come from?

    This document was created by Vinod Kurup, but it's really just plagiarism from a number of documents that came before it. If I've used something that you've written without proper credit, let me know and I'll fix it right away.

    Versions 4.6.2 to present were edited by Joel Aufrecht.

    These are a few of my sources:

    +

    (I'm not sure if this next step is 100% necessary, but when I skip it I get problems. If you get the error 553 sorry, that domain isn't in my list of allowed rcpthosts (#5.7.1) then you need to do this.) AOLServer sends outgoing mail via the ns_sendmail command, which pipes a command to the sendmail executable. Or, in our @@ -40,10 +40,10 @@ Unless this mail is addressed to the same machine, qmail thinks that it's an attempt to relay mail, and rejects it. So these two commands set up an exception so that any mail sent from 127.0.0.1 is allowed to -send outgoing mail.

    [root@yourserver ucspi-tcp-0.88]# cp /tmp/openacs-5.0.0b1/packages/acs-core-docs/www/files/tcp.smtp.txt /etc/tcp.smtp
    +send outgoing mail.

    [root@yourserver ucspi-tcp-0.88]# cp /tmp/openacs-5.0.0b2/packages/acs-core-docs/www/files/tcp.smtp.txt /etc/tcp.smtp
     [root@yourserver ucspi-tcp-0.88]# tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
    -
    cp /tmp/openacs-5.0.0b1/packages/acs-core-docs/www/files/tcp.smtp.txt /etc/tcp.smtp 
    -tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp 
  • Install Qmail.�

    Download qmail, +

    cp /tmp/openacs-5.0.0b2/packages/acs-core-docs/www/files/tcp.smtp.txt /etc/tcp.smtp 
    +tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp 
  • Install Qmail.�

    Download qmail, set up the standard supporting users and build the binaries:

    [root@yourserver root]# cd /usr/local/src
     [root@yourserver src]# wget http://www.qmail.org/netqmail-1.04.tar.gz
     [root@yourserver src]# tar xzf netqmail-1.04.tar.gz
    @@ -102,7 +102,7 @@
     cd netqmail-1.04
     ./collate.sh
     cd netqmail-1.04
    -make setup check

    Replace sendmail with qmail's wrapper.

    [root@yourserver qmail-1.03]# rm -f /usr/bin/sendmail /usr/sbin/sendmail
    +make setup check

    Replace sendmail with qmail's wrapper.

    [root@yourserver qmail-1.03]# rm -f /usr/bin/sendmail /usr/sbin/sendmail
     [root@yourserver qmail-1.03]# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
     [root@yourserver qmail-1.03]#
     
    rm -f /usr/bin/sendmail /usr/sbin/sendmail
    @@ -124,13 +124,13 @@
     
    cd ~alias; touch .qmail-postmaster .qmail-mailer-daemon .qmail-root 
     chmod 644 ~alias/.qmail* 
     /var/qmail/bin/maildirmake ~alias/Maildir/ 
    -chown -R alias.nofiles /var/qmail/alias/Maildir

    Configure qmail to use the Maildir delivery format +chown -R alias.nofiles /var/qmail/alias/Maildir

    Configure qmail to use the Maildir delivery format (instead of mbox), and install a version of the qmail startup script modified to use Maildir.

    [root@yourserver alias]# echo "./Maildir" > /var/qmail/bin/.qmail
    -[root@yourserver alias]# cp /tmp/openacs-5.0.0b1/packages/acs-core-docs/www/files/qmail.rc.txt /var/qmail/rc
    +[root@yourserver alias]# cp /tmp/openacs-5.0.0b2/packages/acs-core-docs/www/files/qmail.rc.txt /var/qmail/rc
     [root@yourserver alias]# chmod 755 /var/qmail/rc
     [root@yourserver alias]# 
     
    echo "./Maildir" > /var/qmail/bin/.qmail 
    -cp /tmp/openacs-5.0.0b1/packages/acs-core-docs/www/files/qmail.rc.txt /var/qmail/rc 
    +cp /tmp/openacs-5.0.0b2/packages/acs-core-docs/www/files/qmail.rc.txt /var/qmail/rc 
     chmod 755 /var/qmail/rc 
     

    Set up the skeleton directory so that new users will be configured for qmail.

    [root@yourserver root]# /var/qmail/bin/maildirmake /etc/skel/Maildir
    @@ -142,13 +142,13 @@
     [root@yourserver root]# mkdir -p /var/qmail/supervise/qmail-smtpd/log
     [root@yourserver root]# mkdir /var/log/qmail
     [root@yourserver root]# chown qmaill /var/log/qmail
    -[root@yourserver root]# cp /tmp/openacs-5.0.0b1/packages/acs-core-docs/www/files/qmailctl.txt /var/qmail/bin/qmailctl
    +[root@yourserver root]# cp /tmp/openacs-5.0.0b2/packages/acs-core-docs/www/files/qmailctl.txt /var/qmail/bin/qmailctl
     [root@yourserver root]# chmod 755 /var/qmail/bin/qmailctl
     [root@yourserver root]# ln -s /var/qmail/bin/qmailctl /usr/bin
    -[root@yourserver root]# cp /tmp/openacs-5.0.0b1/packages/acs-core-docs/www/files/qmail-send-run.txt /var/qmail/supervise/qmail-send/run 
    -[root@yourserver root]# cp /tmp/openacs-5.0.0b1/packages/acs-core-docs/www/files/qmail-send-log-run.txt /var/qmail/supervise/qmail-send/log/run
    -[root@yourserver root]# cp /tmp/openacs-5.0.0b1/packages/acs-core-docs/www/files/qmail-smtpd-run.txt /var/qmail/supervise/qmail-smtpd/run
    -[root@yourserver root]# cp /tmp/openacs-5.0.0b1/packages/acs-core-docs/www/files/qmail-smtpd-log-run.txt /var/qmail/supervise/qmail-smtpd/log/run
    +[root@yourserver root]# cp /tmp/openacs-5.0.0b2/packages/acs-core-docs/www/files/qmail-send-run.txt /var/qmail/supervise/qmail-send/run 
    +[root@yourserver root]# cp /tmp/openacs-5.0.0b2/packages/acs-core-docs/www/files/qmail-send-log-run.txt /var/qmail/supervise/qmail-send/log/run
    +[root@yourserver root]# cp /tmp/openacs-5.0.0b2/packages/acs-core-docs/www/files/qmail-smtpd-run.txt /var/qmail/supervise/qmail-smtpd/run
    +[root@yourserver root]# cp /tmp/openacs-5.0.0b2/packages/acs-core-docs/www/files/qmail-smtpd-log-run.txt /var/qmail/supervise/qmail-smtpd/log/run
     [root@yourserver root]# chmod 755 /var/qmail/supervise/qmail-send/run
     [root@yourserver root]# chmod 755 /var/qmail/supervise/qmail-send/log/run
     [root@yourserver root]# chmod 755 /var/qmail/supervise/qmail-smtpd/run
    @@ -159,13 +159,13 @@
     mkdir -p /var/qmail/supervise/qmail-smtpd/log
     mkdir /var/log/qmail
     chown qmaill /var/log/qmail
    -cp /tmp/openacs-5.0.0b1/packages/acs-core-docs/www/files/qmailctl.txt /var/qmail/bin/qmailctl
    +cp /tmp/openacs-5.0.0b2/packages/acs-core-docs/www/files/qmailctl.txt /var/qmail/bin/qmailctl
     chmod 755 /var/qmail/bin/qmailctl
     ln -s /var/qmail/bin/qmailctl /usr/bin
    -cp /tmp/openacs-5.0.0b1/packages/acs-core-docs/www/files/qmail-send-run.txt /var/qmail/supervise/qmail-send/run
    -cp /tmp/openacs-5.0.0b1/packages/acs-core-docs/www/files/qmail-send-log-run.txt /var/qmail/supervise/qmail-send/log/run
    -cp /tmp/openacs-5.0.0b1/packages/acs-core-docs/www/files/qmail-smtpd-run.txt /var/qmail/supervise/qmail-smtpd/run
    -cp /tmp/openacs-5.0.0b1/packages/acs-core-docs/www/files/qmail-smtpd-log-run.txt /var/qmail/supervise/qmail-smtpd/log/run
    +cp /tmp/openacs-5.0.0b2/packages/acs-core-docs/www/files/qmail-send-run.txt /var/qmail/supervise/qmail-send/run
    +cp /tmp/openacs-5.0.0b2/packages/acs-core-docs/www/files/qmail-send-log-run.txt /var/qmail/supervise/qmail-send/log/run
    +cp /tmp/openacs-5.0.0b2/packages/acs-core-docs/www/files/qmail-smtpd-run.txt /var/qmail/supervise/qmail-smtpd/run
    +cp /tmp/openacs-5.0.0b2/packages/acs-core-docs/www/files/qmail-smtpd-log-run.txt /var/qmail/supervise/qmail-smtpd/log/run
     chmod 755 /var/qmail/supervise/qmail-send/run
     chmod 755 /var/qmail/supervise/qmail-send/log/run
     chmod 755 /var/qmail/supervise/qmail-smtpd/run
    Index: openacs-4/packages/acs-core-docs/www/install-redhat.html
    ===================================================================
    RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-redhat.html,v
    diff -u -r1.13.2.1 -r1.13.2.2
    --- openacs-4/packages/acs-core-docs/www/install-redhat.html	14 Nov 2003 09:43:45 -0000	1.13.2.1
    +++ openacs-4/packages/acs-core-docs/www/install-redhat.html	21 Nov 2003 11:14:08 -0000	1.13.2.2
    @@ -1,8 +1,7 @@
    -Appendix�A.�Install Red Hat 8/9

    Appendix�A.�Install Red Hat 8/9

    - by Joel Aufrecht
    +Appendix�A.�Install Red Hat 8/9

    Appendix�A.�Install Red Hat 8/9

    by Joel Aufrecht

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

    This section takes a blank PC and sets up some supporting +

    This section takes a blank PC and sets up some supporting software. You should do this section as-is if you have a machine you can reformat and you want to be sure that your installation works and is secure; it should take about an hour. (In my @@ -27,7 +26,7 @@

    1. Unplug the network cable from your computer. We don't want to connect to the network until we're sure the computer is secure. - + (Wherever you see the word secure, you should always read it as, "secure enough for our purposes, given the amount of work we're @@ -55,7 +54,7 @@ Review (and modify if needed) the partitions created and click Next

    2. On the pop-up window asking "Are you sure you want to do this?" click Yes - IF YOU ARE WIPING YOUR HARD DRIVE.

    3. Click Next on the boot loader screen

  • Configure Networking. + IF YOU ARE WIPING YOUR HARD DRIVE.

  • Click Next on the boot loader screen

  • Configure Networking. Again, if you know what you're doing, do this step yourself, being sure to note the firewall holes. Otherwise, follow the instructions in this step to set up a computer directly connected to the internet with a dedicated IP address.

    1. DHCP is a system by which a computer that @@ -76,7 +75,7 @@ Mail (SMTP). In the Other ports box, enter 443, 8000, 8443. Click Next. -Port 443 is for https (http over ssl), and 8000 and 8443 are http and https access to the development server we'll be setting up.

  • Select any additional languages you want the +Port 443 is for https (http over ssl), and 8000 and 8443 are http and https access to the development server we'll be setting up.

  • Select any additional languages you want the computer to support and then click Next

  • Choose your time zone and click Next.

  • Type in a root password, twice.

  • On the Package selection page, we're going to @@ -88,37 +87,13 @@ risk that's still screened by the firewall, or a resource hog. Just don't install a database or web server, because that would conflict with the database and web server we'll install later. -

    check�Editors�(this�installs�emacs),
    -click�Details�next�to�Text-based�Internet,�check�lynx,�and�click�OK;
    -check�Authoring�and�Publishing�(this�installs�docbook),
    -uncheck�Server�Configuration�Tools,
    -uncheck�Web�Server,
    -uncheck�Windows�File�Server,
    -check�SQL�Database
    -Server
    �(this�installs�PostGreSQL,
    -check�Development�Tools�(this�installs�gmake�and�other�build�tools),
    -uncheck�Administration�Tools,�and
    -uncheck�Printing�Support.�

    At the bottom, check Select Individual Packages and click Next

  • We need to fine-tune the exact list of packages. +

    check Editors (this installs emacs),
    click Details next to Text-based Internet, check lynx, and click OK;
    check Authoring and Publishing (this installs docbook),
    uncheck Server Configuration Tools,
    uncheck Web Server,
    uncheck Windows File Server,
    check SQL Database Server (this installs PostGreSQL),
    check Development Tools (this installs gmake and other build tools),
    uncheck Administration Tools, and
    uncheck Printing Support.

    At the bottom, check Select Individual Packages and click Next

  • We need to fine-tune the exact list of packages. The same rules apply as in the last step - you can add more stuff, but you shouldn't remove anything the guide adds. We're going to go through all the packages in one big list, so select Flat View and wait. In a minute, a -list of packages will appear.

    uncheck�apmd�(monitors�power,�not�very�useful�for�servers),�
    -check�ImageMagick�(required�for�the�photo-album�packages,�
    -uncheckisdn4k-utils�(unless�you�are�using�isdn,�this�installs�a�useless�daemon),�
    -check�mutt�(a�mail�program�that�reads�Maildir),
    -uncheck�nfs-utils�(nfs�is�a�major�security�risk),�
    -uncheck�pam-devel�(I�don't�remember�why,�but�we�don't�want�this),�
    -uncheck�portmap,�
    -uncheck�postfix�(this�is�an�MTA,�but�we're�going�to�install�qmail�later),�
    -check
    -postgresql-devel,
    -uncheck�rsh�(rsh�is�a�security�hole),�
    -uncheck�sendmail�(sendmail�is�an�insecure�MTA;�we're�going�to�install�qmail�instead�later),
    -check�tcl�(we�need�tcl),�and�
    -uncheck�xinetd�(xinetd�handles�incoming�tcp�connections.��We'll�install�a�different,�more�secure�program,�ucspi-tcp).
    -Click�Next

  • Red Hat isn't completely happy with the combination +list of packages will appear.

    uncheck apmd (monitors power, not very useful for servers),
    check ImageMagick (required for the photo-album packages,
    uncheckisdn4k-utils (unless you are using isdn, this installs a useless daemon),
    check mutt (a mail program that reads Maildir),
    uncheck nfs-utils (nfs is a major security risk),
    uncheck pam-devel (I don't remember why, but we don't want this),
    uncheck portmap,
    uncheck postfix (this is an MTA, but we're going to install qmail later),
    check postgresql-devel,
    uncheck rsh (rsh is a security hole),
    uncheck sendmail (sendmail is an insecure MTA; we're going to install qmail instead later),
    check tcl (we need tcl), and
    uncheck xinetd (xinetd handles incoming tcp connections. We'll install a different, more secure program, ucspi-tcp).
    Click Next
  • Red Hat isn't completely happy with the combination of packages we've selected, and wants to satisfy some dependencies. Don't let it. On the next screen, choose Ignore Package @@ -143,28 +118,37 @@ kernel and openssl/openssh root exploits, so you should be upgrading all of that. Since you are upgrading the kernel, reboot after this step. -

  • Lock down SSH

    1. -SSH is the protocol we use to connect - securely to the computer (replacing telnet, which is - insecure). sshd is the daemon that listens for incoming - ssh connections. As a security precaution, we are now going - to tell ssh not to allow anyone to connect directly to this - computer as root. Type this into the shell: -

      emacs /etc/ssh/sshd_config
    2. Search�for�the�word�"root"�by�typing�C-s�(that's�emacs-speak�for�control-s)�and�then�root.���
      -Make�the�following�changes:
      -

      #Protocol�2,1
      �to
      -������������
      Protocol�2

      -������������(this�prevents�any�connections�via�SSH�1,�which�is�insecure)
      -
      #PermitRootLogin�yes
      �to
      -������������
      PermitRootLogin�no

      -������������(this�prevents�the�root�user�from�logging�in�remotely�via
      -������������ssh.��If�you�do�this,�be�sure�to�create�a�remote�access
      -������������account,�such�as�"remadmin",�which�you�can�use�to�get�ssh
      -������������before�using�"su"�to�become�root.)
      -
      #PermitEmptyPasswords�no
      �to�
      PermitEmptyPasswords�no
      �(this�blocks�passwordless�accounts)
      -
      -�and�save�and�exit�by�typing�C-x�C-s�C-x�C-c

    3. Restart sshd so that the change takes effect.
      service sshd restart
  • Red Hat still installed a few services we -don't need, and which can be security holes. Use the service command to turn them off, and then use chkconfig to automatically edit the System V init directories to permanently (The System V init directories are the ones in /etc/rc.d. They consist of a bunch of scripts for starting and stopping programs, and directories of symlinks for each system level indicating which services should be up and down at any given service level. We'll use this system for PostGreSQL, but we'll use daemontools to perform a similar function for AOLServer. (The reason for this discrepencies is that, while daemontools is better, it's a pain in the ass to deal with and nobody's had any trouble leaving PostGreSQL the way it is.)

    [root@yourserver root]# service pcmcia stop
    +

  • Lock down SSH

    1. + + SSH is the protocol we use to connect + securely to the computer (replacing telnet, which is + insecure). sshd is the daemon that listens for incoming + ssh connections. As a security precaution, we are now going + to tell ssh not to allow anyone to connect directly to this + computer as root. Type this into the shell: +

      emacs /etc/ssh/sshd_config
    2. Search for the word "root" by typing C-s (that's emacs-speak for control-s) and then root.

    3. Make the following changes:

      #Protocol 2,1 to + Protocol 2 + (this prevents any connections via SSH 1, which is insecure)
      #PermitRootLogin yes to + PermitRootLogin no + (this prevents the root user from logging in remotely via + ssh. If you do this, be sure to create a remote access + account, such as "remadmin", which you can use to get ssh + before using "su" to become root)
      #PermitEmptyPasswords no to PermitEmptyPasswords no + (this blocks passwordless accounts) and save and exit by typing C-x C-s C-x C-c
    4. Restart sshd so that the change takes effect.

      service sshd restart
  • + Red Hat still installed a few services we don't need, and + which can be security holes. Use the service command to turn + them off, and then use chkconfig to automatically edit the + System V init directories to permanently (The System V init + directories are the ones in /etc/rc.d. They consist of a + bunch of scripts for starting and stopping programs, and + directories of symlinks for each system level indicating + which services should be up and down at any given service + level. We'll use this system for PostGreSQL, but we'll use + daemontools to perform a similar function for AOLServer. + (The reason for this discrepencies is that, while daemontools + is better, it's a pain in the ass to deal with and nobody's + had any trouble leaving PostGreSQL the way it is.) +

    [root@yourserver root]# service pcmcia stop
     [root@yourserver root]# service netfs stop
     [root@yourserver root]# chkconfig --del pcmcia
     [root@yourserver root]# chkconfig --del netfs
    Index: openacs-4/packages/acs-core-docs/www/install-resources.html
    ===================================================================
    RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-resources.html,v
    diff -u -r1.2 -r1.2.2.1
    --- openacs-4/packages/acs-core-docs/www/install-resources.html	11 Nov 2003 10:28:27 -0000	1.2
    +++ openacs-4/packages/acs-core-docs/www/install-resources.html	21 Nov 2003 11:14:08 -0000	1.2.2.1
    @@ -1,4 +1,4 @@
    -Resources

    Resources

    +Resources

    Resources

    Here are some resources that OpenACS users have found useful.

    Books

  • Paths and Users

    Figure�2.2.�Assumptions in this Chapter

    Fully qualified domain name of your serveryourserver.test
    name of administrative access accountremadmin
    OpenACS serviceservice0
    OpenACS service accountservice0
    OpenACS database nameservice0
    Root of OpenACS service file tree/var/lib/aolserver/service0
    Location of source code tarballs for new software/tmp
    The OpenACS tarball contains some files which +createdb server1

    Paths and Users

    Figure�2.2.�Assumptions in this Chapter

    Fully qualified domain name of your serveryourserver.test
    name of administrative access accountremadmin
    OpenACS serviceservice0
    OpenACS service accountservice0
    OpenACS database nameservice0
    Root of OpenACS service file tree/var/lib/aolserver/service0
    Location of source code tarballs for new software/tmp
    The OpenACS tarball contains some files which are useful while setting up other software. Those - files are located at:/tmp/openacs-5.0.0b1/packages/acs-core-docs/www/files
    Database backup directory/var/lib/aolserver/service0/database-backup
    Service config files/var/lib/aolserver/service0/etc
    Service log files/var/lib/aolserver/service0/log
    Compile directory/usr/local/src
    PostGreSQL directory/usr/local/pgsql
    AOLServer directory/usr/local/aolserver

    + files are located at:

    /tmp/openacs-5.0.0b2/packages/acs-core-docs/www/files
    Database backup directory/var/lib/aolserver/service0/database-backup
    Service config files/var/lib/aolserver/service0/etc
    Service log files/var/lib/aolserver/service0/log
    Compile directory/usr/local/src
    PostGreSQL directory/usr/local/pgsql
    AOLServer directory/usr/local/aolserver

    None of these locations are set in stone - they're simply the values that we've chosen. The values that you'll probably want to change, such as service name, are @@ -69,7 +69,7 @@ sense. Soon, you'll actually look forward to errors so that you can run to the log and diagnose the problem.

  • - Search the bboards at + Search the forums at openacs.org - you'll often find many people who have struggled through the same spot that you're in.

  • @@ -81,7 +81,7 @@ (#openacs). They're knowledgeable and quite friendly if you can keep them on topic.

  • - Post a question on the bboards. Make sure + Post a question on the forums. Make sure you've done a search first. When you do post, be sure to include your setup information (OS, etc) as well as the exact commands that are failing with the accompanying error. If Index: openacs-4/packages/acs-core-docs/www/install-tclwebtest.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-tclwebtest.html,v diff -u -r1.3 -r1.3.2.1 --- openacs-4/packages/acs-core-docs/www/install-tclwebtest.html 11 Nov 2003 10:28:27 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/install-tclwebtest.html 21 Nov 2003 11:14:08 -0000 1.3.2.1 @@ -1,4 +1,4 @@ -Install tclwebtest.

    Install tclwebtest.

    Download the tclwebtest +Install tclwebtest.

    Install tclwebtest.

    Download the tclwebtest source, unpack it, and put it an appropriate place. As root:

    cd /tmp
     tar xvzf tclwebtest-0.3.tar.gz
    Index: openacs-4/packages/acs-core-docs/www/ix01.html
    ===================================================================
    RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/ix01.html,v
    diff -u -r1.1 -r1.1.4.1
    --- openacs-4/packages/acs-core-docs/www/ix01.html	28 Feb 2003 05:36:04 -0000	1.1
    +++ openacs-4/packages/acs-core-docs/www/ix01.html	21 Nov 2003 11:14:08 -0000	1.1.4.1
    @@ -1,2 +1,2 @@
    -
    -Index

    Index

    D

    DocBook
    DTD, Why DocBook?
    Document structure, Document Structure

    G

    Graphics
    Images, Graphics

    L

    Linking, Links
    lists, Lists

    O

    OpenACS Package, What a Package Looks Like

    U

    Unicode, Compile and install PostgreSQL
    ulink, Links
    upgrade
    OpenACS 4.5 to 4.6, Upgrading on Linux/Unix

    X

    XML guidelines, Why DocBook?
    xref
    linkend, Links
    xreflabel, Headlines, Sections

    C

    computeroutput
    code, Code

    E

    emphasis
    bold, italics, Emphasis

    I

    informaltable
    table, Tables
    View comments on this page at openacs.org
    +Index

    Index

    A

    AOLserver
    configuration, Install from tarball
    Automated tests, Write automated tests

    C

    computeroutput
    code, Code
    cvs
    initializing, Initialize CVS (OPTIONAL)
    setup, Add the Service to CVS - OPTIONAL

    D

    daemontools
    installation, Install Daemontools (OPTIONAL)
    docbook
    installation, Install Red Hat 8/9
    DocBook
    DTD, Why DocBook?
    emacs configuration for, Add PSGML commands to emacs init file (OPTIONAL)
    Document structure, Document Structure

    E

    emacs
    installation, Install Red Hat 8/9
    emphasis
    bold, italics, Emphasis

    G

    Graphics
    Images, Graphics

    I

    informaltable
    table, Tables

    L

    language
    installation, Install Red Hat 8/9
    Linking, Links
    lists, Lists

    O

    OpenACS Package, What a Package Looks Like

    P

    photo-album
    installation (see ImageMagick)
    Postgres
    Vacuuming, Install from tarball

    Q

    qmail
    installation, Install qmail (OPTIONAL)
    Maildir, Install qmail (OPTIONAL)
    rcpthosts error message, Install qmail (OPTIONAL)

    T

    The publish point for new packages should be + fixed., Prepare the package for distribution.

    U

    ulink, Links
    Unicode
    in PostGreSQL, Install PostGreSQL
    upgrade
    OpenACS 4.5 to 4.6
    Linux/Unix, Upgrading 4.5 to 4.6

    X

    XML guidelines, Why DocBook?
    xref
    linkend, Links
    xreflabel, Headlines, Sections
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/kernel-doc.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/kernel-doc.html,v diff -u -r1.17 -r1.17.2.1 --- openacs-4/packages/acs-core-docs/www/kernel-doc.html 11 Nov 2003 12:54:57 -0000 1.17 +++ openacs-4/packages/acs-core-docs/www/kernel-doc.html 21 Nov 2003 11:14:08 -0000 1.17.2.1 @@ -1 +1 @@ -Chapter�10.�Kernel Documentation
    View comments on this page at openacs.org
    +Chapter�10.�Kernel Documentation
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/kernel-overview.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/kernel-overview.html,v diff -u -r1.12 -r1.12.2.1 --- openacs-4/packages/acs-core-docs/www/kernel-overview.html 11 Nov 2003 10:28:27 -0000 1.12 +++ openacs-4/packages/acs-core-docs/www/kernel-overview.html 21 Nov 2003 11:14:08 -0000 1.12.2.1 @@ -1,4 +1,4 @@ -Overview

    Overview

    • +Overview

      Overview

      • The OpenACS Kernel, which handles system-wide necessities such as metadata, security, users and groups, subsites, and package @@ -7,16 +7,19 @@ The OpenACS 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 + templating, forums, and user registration/management. The packages tend to be developed and distributed with the kernel.

      • - OpenACS Application packages, which typically provide user-level + + OpenACS 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 other packages on this server Index: openacs-4/packages/acs-core-docs/www/mac-installation.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/mac-installation.html,v diff -u -r1.17.2.1 -r1.17.2.2 --- openacs-4/packages/acs-core-docs/www/mac-installation.html 14 Nov 2003 09:43:45 -0000 1.17.2.1 +++ openacs-4/packages/acs-core-docs/www/mac-installation.html 21 Nov 2003 11:14:08 -0000 1.17.2.2 @@ -1,2 +1,2 @@ -OpenACS Installation Guide for Mac OS X

      OpenACS Installation Guide for Mac OS X

      There are several resources for installing on OS X.

      • OpenACS on Mac OS X Quickstart

      • An +OpenACS Installation Guide for Mac OS X

        OpenACS Installation Guide for Mac OS X

        There are several resources for installing on OS X.

        ($Id$)
        View comments on this page at openacs.org
        Index: openacs-4/packages/acs-core-docs/www/maintenance-web.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/maintenance-web.html,v diff -u -r1.14.2.1 -r1.14.2.2 --- openacs-4/packages/acs-core-docs/www/maintenance-web.html 14 Nov 2003 09:43:45 -0000 1.14.2.1 +++ openacs-4/packages/acs-core-docs/www/maintenance-web.html 21 Nov 2003 11:14:08 -0000 1.14.2.2 @@ -1,8 +1,7 @@ -Hosting Web Sites

        Hosting Web Sites

        - by Joel Aufrecht
        +Hosting Web Sites

        Hosting Web Sites

        By Joel Aufrecht

        OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

        Maintenance tasks, optional software, and alternate configurations for AOLserver.

        Assuming AOLserver started cleanly in the previous step, we'll set it up so that it's always running, and automatically restarts whenever it dies or is stopped. This step is strongly recommended, even for development sites, because it makes install and maintenance much simpler.

        The Reference Platform uses Daemontools to control AOLserver. A simpler method, using init, is here.

        1. Daemontools must already be installed. If not, install it.

        2. Each service controlled by daemontools must have a +

        Maintenance tasks, optional software, and alternate configurations for AOLserver.

        Keep AOLServer Alive

        Assuming AOLserver started cleanly in the previous step, we'll set it up so that it's always running, and automatically restarts whenever it dies or is stopped. This step is strongly recommended, even for development sites, because it makes install and maintenance much simpler.

        The Reference Platform uses Daemontools to control AOLserver. A simpler method, using init, is here.

        1. Daemontools must already be installed. If not, install it.

        2. Each service controlled by daemontools must have a directory in /service. That directory must have a file called run. Daemontools then @@ -55,7 +54,7 @@ Most of this information comes from Tom Jackson's AOLServer+Daemontools Mini-HOWTO.

        AOLserver keepalive with inittab

        This is an alternative method for keeping the AOLserver - process running. The recommended method is to run AOLserver + process running. The recommended method is to run AOLserver supervised.

        This step should be completed as root. This can break every service on your machine, so proceed with caution. @@ -146,7 +145,7 @@ automated for startup and shutdown.

        Running AOLserver on Port 80

        If you want your webserver to be http://yourserver.com, it must run on port 80, the default HTTP port. You set this in the config.tcl file. You will need to start the service as root. If you follow the instructions - above for automating + 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. @@ -160,7 +159,7 @@ able to exploit your web server to execute a command on your server, they would not be able to gain root access.

        Running multiple services on one machine

        Services on different ports.�To run a different service on another port but the same - ip, simply repeat Install OpenACS 5.0.0b1 replacing + ip, simply repeat Install OpenACS 5.0.0b2 replacing service0, and change the

        set httpport              8000
         set httpsport             8443 

        @@ -172,7 +171,7 @@ different values for

        set hostname               [ns_info hostname]
         set address                127.0.0.1 

        -If you want to install two services with different host +

        If you want to install two services with different host names sharing the same ip, you'll need nsvhr to redirect requests based on the contents of the tcp headers. See AOLserver Virtual Hosting with TCP by markd. @@ -234,4 +233,4 @@ [root@yourserver root]# emacs /etc/cron.daily/analog

    Put this into the file:

    #!/bin/sh
     
    -/usr/share/analog-5.31/analog -G -g/var/lib/aolserver/service0/etc/analog.cfg
    [root@yourserver root]# chmod 755 /etc/cron.daily/analog

    Test it by running the script.

    [root@yourserver root]# sh /etc/cron.daily/analog

    Browse to http://yourserver.test/log/traffic.html

  • External uptime validation

    The OpenACS uptime site can monitor your site and send you an email whenever your site fails to respond. If you test the url http://yourserver.test/SYSTEM/dbtest.tcl, you should get back the string success.

    ($Id$)
    View comments on this page at openacs.org
    +/usr/share/analog-5.31/analog -G -g/var/lib/aolserver/service0/etc/analog.cfg
    [root@yourserver root]# chmod 755 /etc/cron.daily/analog

    Test it by running the script.

    [root@yourserver root]# sh /etc/cron.daily/analog

    Browse to http://yourserver.test/log/traffic.html

    External uptime validation

    The OpenACS uptime site can monitor your site and send you an email whenever your site fails to respond. If you test the url http://yourserver.test/SYSTEM/dbtest.tcl, you should get back the string success.

    ($Id$)
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/maintenance.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/Attic/maintenance.html,v diff -u -r1.8 -r1.8.2.1 --- openacs-4/packages/acs-core-docs/www/maintenance.html 11 Nov 2003 10:28:27 -0000 1.8 +++ openacs-4/packages/acs-core-docs/www/maintenance.html 21 Nov 2003 11:14:08 -0000 1.8.2.1 @@ -1 +1 @@ -Chapter�6.�Maintenance

    Chapter�6.�Maintenance

    View comments on this page at openacs.org
    +Chapter�6.�Maintenance

    Chapter�6.�Maintenance

    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/object-identity.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/object-identity.html,v diff -u -r1.22.2.1 -r1.22.2.2 --- openacs-4/packages/acs-core-docs/www/object-identity.html 14 Nov 2003 09:43:45 -0000 1.22.2.1 +++ openacs-4/packages/acs-core-docs/www/object-identity.html 21 Nov 2003 11:14:08 -0000 1.22.2.2 @@ -1,19 +1,18 @@ -Object Identity

    Object Identity

    -by Rafael H. Schloming
    +Object Identity

    Object Identity

    By Rafael H. Schloming

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

    One of the major design features of OpenACS 5.0.0b1 is the explicit representation +

    One of the major design features of OpenACS 5.0.0b2 is the explicit representation of object identity. The reason I say "explicit representation" is because the concept of object identity has been around forever. It is inherent to our problem domain. Consider the example of 3.x style scoping. The 3.x data models use the triple (user_id, group_id, -scope) to identify an object. In the 5.0.0b1 data model this +scope) to identify an object. In the 5.0.0b2 data model this object is explicitly represented by a single party_id.

    Another good example of this is can be found in the user groups data model. The 3.x user groups data model contains another example of an implied identity. Every mapping between a user and a group could have an arbitrary number of attached values (user_group_member_fields, etc.). In this case it is the pair (group_id, user_id) that implicitly refers to an -object (the person's membership in a group). In the 5.0.0b1 data model this +object (the person's membership in a group). In the 5.0.0b2 data model this object identity is made explicit by adding an integer primary key to the table that maps users to groups.

    Coming from a purely relational world, this might seem slightly weird at first. The pair (group_id, user_id) is sufficient to uniquely identify the Index: openacs-4/packages/acs-core-docs/www/object-system-design.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/object-system-design.html,v diff -u -r1.16 -r1.16.2.1 --- openacs-4/packages/acs-core-docs/www/object-system-design.html 11 Nov 2003 10:28:27 -0000 1.16 +++ openacs-4/packages/acs-core-docs/www/object-system-design.html 21 Nov 2003 11:14:08 -0000 1.16.2.1 @@ -1,11 +1,7 @@ -OpenACS 4 Object Model Design

    OpenACS 4 Object Model Design

    -by Pete Su, - Michael Yoon, - Richard Li - and Rafael Schloming
    +OpenACS 4 Object Model Design

    OpenACS 4 Object Model Design

    By Pete Su, Michael Yoon, Richard Li, Rafael Schloming

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

    Essentials

    Data Model

    Essentials

    Tcl Files

    Not yet linked.

    Object Context and Access Control

    Until the implementation of the general permissions system, every OpenACS application had to manage access control to its data separately. Later on, a notion of "scoping" was introduced into the core data model.

    "Scope" is a term best explained by example. Consider some -hypothetical rows in the address_book table:

    ...scopeuser_idgroup_id...
    ...user123...
    ...group456...
    ...public...

    The first row represents an entry in User 123's personal address book, +hypothetical rows in the address_book table:

    ...scopeuser_idgroup_id...
    ...user123...
    ...group456...
    ...public...

    The first row represents an entry in User 123's personal address book, the second row represents an entry in User Group 456's shared address book, and the third row represents an entry in the site's public address book.

    In this way, the scoping columns identify the security context in which a @@ -94,8 +90,8 @@ abstract name for the default security domain to which the object belongs. Each context has a unique identifier, and all the contexts in a system form a tree. Often this tree will reflect an observed hierarchy in a site, e.g. a -bboard message would probably list a bboard topic as its context, and a -bboard topic might list a subsite as its context. Thus, contexts make it +forum message would probably list a forum topic as its context, and a +forum topic might list a subsite as its context. Thus, contexts make it easier to break the site up into security domains according to its natural structure. An object's context is stored in the context_id column of the acs_objects table.

    We use an object's context to provide a default answer to questions @@ -858,7 +854,7 @@ procedures that allow applications to create object types, object instances, and object relations. Most of the data model is straightforward; the relation type mechanism is a bit more complex, but in return it provides functionality -on par with the old user/groups system in a more general way.

    Future Improvements/Areas of Likely Change

    Nothing here yet.

    Authors

    Pete Su generated this document -from material culled from other documents by Michael Yoon, Richard Li and Rafael Schloming. But, any remaining lies +on par with the old user/groups system in a more general way.

    Future Improvements/Areas of Likely Change

    Nothing here yet.

    Authors

    Pete Su generated this document +from material culled from other documents by Michael Yoon, Richard Li and Rafael Schloming. But, any remaining lies are his and his alone.

    Revision History

    Document Revision #Action Taken, NotesWhen?By Whom?
    0.1Creation9/09/2000Pete Su
    0.2Edited for ACS 4 Beta9/30/2000Kai Wu
    0.3Edited for ACS 4.0.1, fixed some mistakes, removed use of term "OM"11/07/2000Pete Su
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/object-system-requirements.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/object-system-requirements.html,v diff -u -r1.15 -r1.15.2.1 --- openacs-4/packages/acs-core-docs/www/object-system-requirements.html 11 Nov 2003 10:28:27 -0000 1.15 +++ openacs-4/packages/acs-core-docs/www/object-system-requirements.html 21 Nov 2003 11:14:08 -0000 1.15.2.1 @@ -1,8 +1,7 @@ -OpenACS 4 Object Model Requirements

    OpenACS 4 Object Model Requirements

    -By Pete Su
    +OpenACS 4 Object Model Requirements

    OpenACS 4 Object Model Requirements

    By Pete Su

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

    I. Introduction

    A major goal in OpenACS 4 is to unify and normalize many of the core services +

    I. Introduction

    A major goal in OpenACS 4 is to unify and normalize many of the core services of the system into a coherent common data model and API. In the past, these services were provided to applications in an ad-hoc and irregular fashion. Examples of such services include:

    • General Comments

    • User/groups

    • Attribute storage in user/groups

    • General Permissions

    • Site wide search

    • General Auditing

    All of these services involve relating extra information and services to @@ -50,7 +49,7 @@ OpenACS application had to manage access control to its data separately. Later on, a notion of "scoping" was introduced into the core data model.

    "Scope" is a term best explained by example. Consider some -hypothetical rows in the address_book table:

    ...scopeuser_idgroup_id...
    ...user123...
    ...group456...
    ...public...

    The first row represents an entry in User 123's personal address book, +hypothetical rows in the address_book table:

    ...scopeuser_idgroup_id...
    ...user123...
    ...group456...
    ...public...

    The first row represents an entry in User 123's personal address book, the second row represents an entry in User Group 456's shared address book, and the third row represents an entry in the site's public address book.

    In this way, the scoping columns identify the security context in which a Index: openacs-4/packages/acs-core-docs/www/objects.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/objects.html,v diff -u -r1.23.2.1 -r1.23.2.2 --- openacs-4/packages/acs-core-docs/www/objects.html 14 Nov 2003 09:43:45 -0000 1.23.2.1 +++ openacs-4/packages/acs-core-docs/www/objects.html 21 Nov 2003 11:14:08 -0000 1.23.2.2 @@ -1,10 +1,8 @@ -OpenACS Data Models and the Object System

    OpenACS Data Models and the Object System

    -By Pete Su -
    +OpenACS Data Models and the Object System

    OpenACS Data Models and the Object System

    By Pete Su

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

    Overview

    -Developing data models in OpenACS 5.0.0b1 is much like developing data models +

    Overview

    +Developing data models in OpenACS 5.0.0b2 is much like developing data models for OpenACS 3, save for the implementation. As usual, you need to examine how to model the information that the application must store and manipulate, and define a suitable set of SQL tables. In our Notes @@ -79,8 +77,8 @@

    Fire up your text editor and open the ROOT/packages/notes/sql/oracle/notes-create.sql (ROOT/packages/notes/sql/postgresql/notes-create.sql for the PG version) file created -when we created the package. Then, do the following: -

    Describe the new type to the type system

    +when we created the package. Then, do the following: +

    Describe the new type to the type system

    First, add an entry to the acs_object_types table with the following PL/SQL call:

     begin  
    @@ -140,7 +138,7 @@
     because the new type note is a subtype of
     acs_object, it will inherit these attributes, so there is
     no need for us to define them.
    -

    Define a table in which to store your objects

    +

    Define a table in which to store your objects

    The next thing we do is make a small modification to the data model to reflect the fact that each row in the notes table represents something that is not only an object of type @@ -165,7 +163,7 @@ use the acs_objects table to find objects will transparently find any objects that are instances of any subtype of acs_objects. -

    Define a package for type specific procedures

    +

    Define a package for type specific procedures

    The next step is to define a PL/SQL package for your new type, and write some basic procedures to create and delete objects. Here is a package definition for our new type: @@ -213,7 +211,7 @@ object OBJ was "read only", then any other object that used OBJ as its context would also be "read only" by default. We'll talk about this more later. -

    Define a package body for type specific procedures

    +

    Define a package body for type specific procedures

    The PL/SQL package body contains the implementations of the procedures defined above. The only subtle thing going on here is that we must use acs_object.new to insert a row into @@ -316,7 +314,7 @@ models that are meant to be integrated with the OpenACS object system.

    -There are two basic rules you should follow when designing OpenACS 5.0.0b1 data +There are two basic rules you should follow when designing OpenACS 5.0.0b2 data models: @@ -371,7 +369,7 @@ requires a good amount of thought at design time even for simple applications.

    Summary

    -Hooking into the OpenACS 5.0.0b1 object system brings the application developer +Hooking into the OpenACS 5.0.0b2 object system brings the application developer numerous benefits, and doing it involves only four easy steps: @@ -395,4 +393,4 @@ especially true for the context_id field.

    -

    ($Id$)
    View comments on this page at openacs.org
    +

    ($Id$)
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/openacs-overview.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/openacs-overview.html,v diff -u -r1.13 -r1.13.2.1 --- openacs-4/packages/acs-core-docs/www/openacs-overview.html 11 Nov 2003 12:54:57 -0000 1.13 +++ openacs-4/packages/acs-core-docs/www/openacs-overview.html 21 Nov 2003 11:14:09 -0000 1.13.2.1 @@ -1,4 +1,4 @@ -Overview

    Overview

    +Overview

    Overview

    OpenACS (Open Architecture Community System) is an advanced toolkit for building scalable, community-oriented web applications. If you're thinking of building an @@ -26,7 +26,7 @@ The OpenACS toolkit is based on the ArsDigita Community System. ArsDigita (now part of Red Hat, Inc.) kindly made their work available under the GPL, - making all of this possible. + making all of this possible.

    The ArsDigita Community System (ACS) is a toolkit of software that will help you build Web services with a collaborative dimension, @@ -39,10 +39,10 @@ to port ACS from Oracle to PostgreSQL, thus making it a fully open-source solution.

    - OpenACS 5.0.0b1 is the next generation of the web toolkit. It's based on + OpenACS 5.0.0b2 is the next generation of the web toolkit. It's based on ACS 4, but no longer follows ArsDigita development. Unlike ACS (which required Oracle) and OpenACS 3.x (which required PostgreSQL), - OpenACS 5.0.0b1 allows you to use either database. It's also built in such + OpenACS 5.0.0b2 allows you to use either database. It's also built in such a way to allow enterprising hackers (in the good sense of the word) to extend it to other databases. Don Baccus leads the development and numerous developers and non-developers Index: openacs-4/packages/acs-core-docs/www/openacs-unpack.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/openacs-unpack.html,v diff -u -r1.8 -r1.8.2.1 --- openacs-4/packages/acs-core-docs/www/openacs-unpack.html 11 Nov 2003 12:54:57 -0000 1.8 +++ openacs-4/packages/acs-core-docs/www/openacs-unpack.html 21 Nov 2003 11:14:09 -0000 1.8.2.1 @@ -1,17 +1,17 @@ -Unpack the OpenACS tarball

    Unpack the OpenACS tarball

    The OpenACS tarball contains sample configuration files +Unpack the OpenACS tarball

    Unpack the OpenACS tarball

    The OpenACS tarball contains sample configuration files for some of the packages listed below. In order to access those files, unpack the tarball now.

    [root@yourserver root]# cd /tmp
    -[root@yourserver tmp]# tar xzf openacs-5.0.0b1.tgz
    +[root@yourserver tmp]# tar xzf openacs-5.0.0b2.tgz
     
    cd /tmp
    -tar xzf openacs-5.0.0b1.tgz

    If you are installing from a different method and just need the configuration files, you can instead get them from CVS:

    [root@yourserver root]# cd /tmp
    +tar xzf openacs-5.0.0b2.tgz

    If you are installing from a different method and just need the configuration files, you can instead get them from CVS:

    [root@yourserver root]# cd /tmp
     [root@yourserver tmp]# cvs -d :pserver:anonymous@openacs.org:/cvsroot co openacs-4/packages/acs-core-docs/www/files/
     cvs checkout: warning: failed to open /root/.cvspass for reading: No such file or directory
     cvs server: Updating openacs-4/packages/acs-core-docs/www/files
     U openacs-4/packages/acs-core-docs/www/files/README.TXT
     (many lines omitted)
     U openacs-4/packages/acs-core-docs/www/files/template-ini.ini
     U openacs-4/packages/acs-core-docs/www/files/winnsd.txt
    -[root@yourserver tmp]# mv openacs-4 openacs-5.0.0b1
    +[root@yourserver tmp]# mv openacs-4 openacs-5.0.0b2
     
    cd /tmp
     cvs -d :pserver:anonymous@openacs.org:/cvsroot co openacs-4/packages/acs-core-docs/www/files/
     mv openacs-4 openacs-5.0.0a4
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/openacs.css =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/openacs.css,v diff -u -r1.3 -r1.3.2.1 --- openacs-4/packages/acs-core-docs/www/openacs.css 24 Jun 2003 03:58:11 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/openacs.css 21 Nov 2003 11:14:09 -0000 1.3.2.1 @@ -1,28 +1,64 @@ /* These are aimed at DocBook output, specifically from the chunk.xsl style and derivatives /* -body, ol, td, th, hr, h1, h2, h3, strong, dl, a, blockquote, em, .force, dt, dd, ul, li, p{font-family:verdana,helvetica,arial,sans-serif} -a:link{color:0000ff} -a:visited{color:000099} -a.topnav{font-size:1.2em} -a.bottomnav{font-size:1.2em} +body,ol,td,th,hr,h1,h2,h3,strong,dl,a,blockquote,em,.force,dt,dd,ul,li,p { + font-family: verdana,helvetica,arial,sans-serif; +} -code{font-family:mono-space} -.CVS, .cvstag{font-family:mono-space; font-size:small; color:#999999; text-align:right} +a:link {color: #f00;} +a:visited {color: #000099;} -.codeblock{background-color:#ffffff;font-family:monospace} -.strong{font-weight:bold} -.authorblurb{font-size:small} +a.topnav {font-size: 1.2em;} +a.bottomnav {font-size: 1.2em;} +code { + font-family: courier,monospace; +} + +.codeblock { + background-color: #fff; + font-family: monospace; +} +.strong {font-weight: bold;} +.authorblurb {font-size: small;} + /* this is intended to catch docbook Screen stuff */ -pre {background-color:#eeeeee;} +pre {background-color: #eee;} /* DocBook stuff */ -.guibutton{background-color:white;border: solid#eeeeee; padding:1px;} -.replaceable{color:red; font-style:italic;} -.guilabel{background-color:silver; padding:2px;} -.programlisting{background-color:#eeeeee} -.strong{font-weight:bold} -.authorblurb{font-size:small} -.screen{padding:3px;} -.action{padding:0.5em; margin:0.5em;font-weight:bold;} +.guibutton { + background-color: #fff; + border: solid #eee 3px; + margin: 2px; +} +.replaceable { + color: red; + font-style: italic; +} +.guilabel { + background-color: #ccc; + margin: 2px; +} +.programlisting { + background-color: #eee; + margin-left: 1em; + padding-left: .5em; +} +.strong {font-weight:bold;} +.authorblurb {font-size:small;} +.screen { + padding:4px; + margin-left: 1em; +} +.action {font-weight:bold;} +.table,.informaltable,.informalfigure,.figure { margin-left: 1em; } + +body { margin: 1em 0 0 1em; max-width: 75em; } + +div.cvstag { + font-family: courier,monospace; + color: #999; + font-size: small; + text-align: right; +} + 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.22.2.1 -r1.22.2.2 --- openacs-4/packages/acs-core-docs/www/openacs.html 14 Nov 2003 09:43:45 -0000 1.22.2.1 +++ openacs-4/packages/acs-core-docs/www/openacs.html 21 Nov 2003 11:14:09 -0000 1.22.2.2 @@ -1,8 +1,7 @@ -Install OpenACS 5.0.0b1

    Install OpenACS 5.0.0b1

    - by Vinod Kurup
    +Install OpenACS 5.0.0b2

    Install OpenACS 5.0.0b2

    by Vinod Kurup

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

    Set up the file system for one or more OpenACS Sites

    For Linux Standard Base compliance and ease of backup, +

    Set up the file system for one or more OpenACS Sites

    For Linux Standard Base compliance and ease of backup, all of the files in each OpenACS site are stored in a subdirectory of /var/lib/aolserver, one @@ -72,8 +71,8 @@ tarball and save it in /tmp and proceed:

    1. 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 /var/lib/aolserver
      -[service0@yourserver aolserver]$ tar xzf /tmp/openacs-5.0.0b1.tgz
      -[service0@yourserver aolserver]$ mv openacs-5.0.0b1 service0
      +[service0@yourserver aolserver]$ tar xzf /tmp/openacs-5.0.0b2.tgz
      +[service0@yourserver aolserver]$ mv openacs-5.0.0b2 service0
       [service0@yourserver aolserver]$ chmod -R 700 service0
       [service0@yourserver aolserver]$ ls -al
       total 3
      @@ -86,8 +85,8 @@
       [root@yourserver root]#
       
      su - service0
       cd /var/lib/aolserver
      -tar xzf /tmp/openacs-5.0.0b1.tgz
      -mv openacs-5.0.0b1 service0
      +tar xzf /tmp/openacs-5.0.0b2.tgz
      +mv openacs-5.0.0b2 service0
       chmod -R 700 service0/
       exit
    2. Add the Service to CVS (OPTIONAL)

    3. Prepare the database

      • Prepare Oracle for OpenACS.�If you won't be using Oracle, skip to Prepare PostgreSQL for an OpenACS Service

        You should be sure that your user account @@ -235,7 +234,7 @@ CREATE DATABASE [service0@yourserver service0]$

        su - service0
        -createdb -E UNICODE 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. Recommended: VACUUM ANALYZE every hour and VACUUM FULL ANALYZE every day.

        [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-23 * * * /usr/local/pgsql/bin/vacuumdb --full --analyze service0
        +createdb -E UNICODE 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. Recommended: VACUUM ANALYZE every hour and VACUUM FULL ANALYZE every day.

        [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-23 * * * /usr/local/pgsql/bin/vacuumdb --full --analyze service0
         0 0 * * * /usr/local/pgsql/bin/vacuumdb --full --analyze service0
      • Add Full Text Search Support (OPTIONAL)

      • [service0@yourserver service0]$ exit
         logout
         
        @@ -246,7 +245,7 @@
         	  need to configure a virtual server.  The Reference Platform
         	  uses a configuration file included in the OpenACS tarball,
         	  /var/lib/aolserver/service0/etc/config.tcl.
        -	   Open it in an editor to adjust the parameters.

        [root@yourserver root]# su - service0
        +	   Open it in an editor to adjust the parameters.

        [root@yourserver root]# su - service0
         [service0@yourserver service0]$ cd /var/lib/aolserver/service0/etc
         [service0@yourserver etc]# emacs config.tcl
         

        @@ -292,8 +291,7 @@ [service0@yourserver service0]$ /usr/local/aolserver/bin/nsd-postgres -t /var/lib/aolserver/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

        + 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 /var/lib/aolserver/service0.orig. @@ -308,11 +306,11 @@ permissions errors or missing files. If you need to make changes, don't forget to kill any running servers with killall nsd. -

      • Automate +

      • Automate AOLserver keepalive (OPTIONAL)

  • Configure a Service with the OpenACS Installer.� Now that you've got AOLserver up and running, let's install OpenACS - 5.0.0b1. + 5.0.0b2.

    • You should see a page from the webserver titled OpenACS Installation: @@ -364,11 +362,11 @@ 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. -

      [service0@yourserver service0]$ /usr/local/aolserver/bin/nsd-postgres -t /var/lib/aolserver/service0/config.tcl
    • +

      [service0@yourserver service0]$ /usr/local/aolserver/bin/nsd-postgres -t /var/lib/aolserver/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 - 5.0.0b1 is now up and running! + 5.0.0b2 is now up and running!

  • Next Steps

    • 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 @@ -408,4 +406,4 @@ ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data

    [service0@yourserver service0]$ exit
     logout
     
    -[root@yourserver root]#
  • Test your backup and recovery procedure.

  • Set up the section called “External uptime validation”.

  • ($Id$)
    View comments on this page at openacs.org
    +[root@yourserver root]#
  • Test your backup and recovery procedure.

  • Set up the section called “External uptime validation”.

  • ($Id$)
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/oracle.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/oracle.html,v diff -u -r1.22.2.1 -r1.22.2.2 --- openacs-4/packages/acs-core-docs/www/oracle.html 14 Nov 2003 09:43:45 -0000 1.22.2.1 +++ openacs-4/packages/acs-core-docs/www/oracle.html 21 Nov 2003 11:14:09 -0000 1.22.2.2 @@ -1,16 +1,11 @@ -Install Oracle 8.1.7

    Install Oracle 8.1.7

    - by Vinod Kurup
    +Install Oracle 8.1.7

    Install Oracle 8.1.7

    By Vinod Kurup

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

    - - Skip this page if you're not interested in Oracle. - -

    Note

    - - OpenACS 5.0.0b1 does not yet work with Oracle 9i - +

    Note

    + Skip this section if you're not interested in Oracle.

    + OpenACS 5.0.0b2 does not yet work with Oracle 9i +

    This document assumes that you'll be installing Oracle on the same box as AOLServer. For more details on a remote Oracle installation, @@ -71,7 +66,7 @@

    - For additional resources/documentation, please see this thread + For additional resources/documentation, please see this thread and Andrew Piskorski's mini-guide.. @@ -373,37 +368,30 @@

  • The "Unix Group Name" screen in the OUI: - -

    • - - Debian users need to link - /bin/awk to - /usr/bin/awk before - running the script below - -

      -joueser:~$ su -
      -root:~# ln -s /usr/bin/awk /bin/awk
    • - + +

      • + The Unix Group name needs to be set to 'oinstall' ( we made this Unix group earlier ). - +

      • - + Click "Next" - -

      • - + +

      • A popup window appears instantly, requesting you to run a script as root: - -

      • - +

        • + Debian users need to link + /bin/awk to + /usr/bin/awk before + running the script below +

          +joueser:~$ su -
          +root:~# ln -s /usr/bin/awk /bin/awk
      • Open a new terminal window, then type: - -

        -joeuser:~$ su -
        +        

        joeuser:~$ su -
         root:~# cd /ora8/m01/app/oracle/product/8.1.7
         root:~# ./orainstRoot.sh  
         ; You should see:
        @@ -412,100 +400,56 @@
         root:~# mkdir -p /usr/local/java
         root:~# exit
         joeuser:~$ exit
      • - Click "Retry" -

    • - The "Available Products" screen in the OUI: -

      • - Select "Oracle 8i Enterprise Edition 8.1.7.1.0" - -

      • - +

      • Click "Next" -

    • - The "Installation Types" screen -

      • - Select the "Custom" installation type. -

      • - Click "Next" -

    • - The "Available Product Components" screen -

      • - In addition to the defaults, make sure that "Oracle SQLJ 8.1.7.0," "Oracle Protocol Support 8.1.7.0.0," and "Linux Documentation 8.1.7.0.0" are also checked. -

      • - Click "Next" -

      • - A progress bar will appear for about 1 minute. -

    • - The "Component Locations" screen in the OUI -

      • - Click on the "Java Runtime Environment 1.1.8" It should have the path "/ora8/m01/app/oracle/jre/1.1.8" -

      • - Click "Next" -

      • - A progress bar will appear for about 1 minute. -

    • - The "Privileged Operation System Groups" screen in the OUI -

      • - Enter "dba" for "Database Administrator (OSDBA) Group" - -

      • - +

      • Enter "dba" for the "Database Operator (OSOPER) Group" -

      • - Click "Next" -

      • - A progress bar will appear for about 1 minute. -

    • - The "Authentication Methods" screen -

      • - Click "Next" -

    • The next screen is "Choose JDK home directory" @@ -1252,7 +1196,7 @@ export nls_date_format = 'YYYY-MM-DD'

      Log back in again. If adding the nls_date_format line doesn't - help, you can ask for advice in our OpenACS forum. + help, you can ask for advice in our OpenACS forums.

    Useful Procedures

    • Dropping a tablespace

      • @@ -1275,4 +1219,4 @@ authorized to do a connect internal within svrmgrl to gain full system - access to the Oracle system.

    ($Id$)
    View comments on this page at openacs.org
    + access to the Oracle system.
  • ($Id$)
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/os-install.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/os-install.html,v diff -u -r1.2 -r1.2.2.1 --- openacs-4/packages/acs-core-docs/www/os-install.html 11 Nov 2003 10:28:27 -0000 1.2 +++ openacs-4/packages/acs-core-docs/www/os-install.html 21 Nov 2003 11:14:09 -0000 1.2.2.1 @@ -1,4 +1,4 @@ -Linux Install Guides

    Linux Install Guides

    +Linux Install Guides

    Linux Install Guides

    Here's a list of some helpful documentation for various OS's

    • Painless Debian Index: openacs-4/packages/acs-core-docs/www/os-security.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/os-security.html,v diff -u -r1.2 -r1.2.2.1 --- openacs-4/packages/acs-core-docs/www/os-security.html 11 Nov 2003 10:28:27 -0000 1.2 +++ openacs-4/packages/acs-core-docs/www/os-security.html 21 Nov 2003 11:14:09 -0000 1.2.2.1 @@ -1,4 +1,4 @@ -Security Information

      Security Information

      +Security Information

      Security Information

      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." The Reference Platform implements Index: openacs-4/packages/acs-core-docs/www/packages.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/packages.html,v diff -u -r1.22.2.1 -r1.22.2.2 --- openacs-4/packages/acs-core-docs/www/packages.html 14 Nov 2003 09:43:46 -0000 1.22.2.1 +++ openacs-4/packages/acs-core-docs/www/packages.html 21 Nov 2003 11:14:09 -0000 1.22.2.2 @@ -1,9 +1,7 @@ -OpenACS 5.0.0b1 Packages

      OpenACS 5.0.0b1 Packages

      - By Pete Su and Bryan Quinn -
      +OpenACS 5.0.0b2 Packages

      OpenACS 5.0.0b2 Packages

      By Pete Su and Bryan Quinn

      OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

      Overview

      +

      Overview

      This document is a guide on how to write a software package for OpenACS. OpenACS packages are installed and maintained with the OpenACS Package Manager (APM). This document presents reasons @@ -26,19 +24,19 @@ core tcl libraries here www/ admin/ - bboard/ - site wide admin for bboard + forums/ + site wide admin for forums intranet/ site wide admin for intranet ... and so on for all modules ... - bboard/ - pages for bboard + forums/ + pages for forums admin/ - other admin pages for bboard + other admin pages for forums intranet/ - pages for bboard + pages for intranet admin/ other admin pages for intranet doc/ @@ -60,7 +58,7 @@ the pieces of each module are strewn all over the tree in at least 3 or 4 different areas.

      - Here is how an OpenACS 5.0.0b1 server is laid out: + Here is how an OpenACS 5.0.0b2 server is laid out:

       
       ROOT/
      @@ -79,8 +77,8 @@
               acs-test-harness/
               acs-util/
               acs-workflow/
      -        bboard/
      -               bboard.info
      +        forums/
      +               forums.info
                      sql/
                           oracle/
                                oracle data model
      @@ -104,7 +102,7 @@
                   misc pages
           

      Note that a major reorganization has happened here. The diagram only - expands the structure of the bboard/ package directory, + expands the structure of the forums/ package directory, but all the others are basically the same. Each package encapsulates all of its data model, library code, logic, adminstration pages and user pages in a single part of the file tree. This organization has @@ -124,7 +122,7 @@ sends to our server to the right page in the appropriate package. While we're at it, this tool should also automate package installation, dependency checking, upgrades, and package - removal. In OpenACS 5.0.0b1, this tool is called the APM. + removal. In OpenACS 5.0.0b2, this tool is called the APM.

      The APM

      The APM is used to create, maintain, and install packages. It takes care of copying all of the files and registering the package in the @@ -146,7 +144,7 @@

      The following sections will show you how to make a package for the Notes application. In addition, they will discuss some new site - management features in OpenACS 5.0.0b1 that take advantage of the APM's package + management features in OpenACS 5.0.0b2 that take advantage of the APM's package instance model. The two most important of these are subsites, and the site map tool, which can be used to map applications to one or more arbitrary URLs in a running site. @@ -235,9 +233,9 @@ files and then have the scripts source the other data model files. In Oracle this can be done by including @@ filename in the creation or drop - scripts. See the - Oracle SQL*Plus documentation for examples. In - PostgreSQL the same is acomplished by including \i. + scripts. See the + Oracle FAQ for examples. In + PostgreSQL the same is acomplished by including \i filename. sql/<database>/*.sqlData Model Upgrade Scripts Contain changes to the data model between versions. The APM can automatically load the appropriate upgrade scripts when @@ -277,9 +275,9 @@ Tcl initialization files are sourced once on server startup after all of the Tcl library files are sourced. tcl/notes-init.tclAdministration UIThe administration UI is used to administer the instances of - the package. For example, the bboard administration UI is + the package. For example, the forums administration UI is used to create new forums, moderate postings, and create new - categories for bboard postings.www/admin/*Administration UI Index PageEvery package administration UI must have an index page. In + categories for forums postings.www/admin/*Administration UI Index PageEvery package administration UI must have an index page. In most cases, this is index.tcl but it can be any file with the name index, such as index.html or index.adp.www/admin/index.tclRegression TestsEvery package should have a set of regression tests that @@ -317,7 +315,7 @@ distinguish it from all the others. It is used as a database key to keep track of the package and as the name of the directory in the file system where all the files related to your package will live. Example - package keys in the current system include: bboard, + package keys in the current system include: forums, acs-kernel and so on. For the example application, we will use the package key notes.

      Package Name @@ -336,7 +334,7 @@ Generally we think of packages as either being applications, meaning that the package is meant primarily for use by end-users, or services meaning that the package is meant to be a reusable - library of code, to be used by other packages. bboard is + library of code, to be used by other packages. forums is a good example of an application, while acs-templating is a good example of a service. Our example is an application, so pick that. @@ -397,7 +395,7 @@ this point, you should add your package files to your CVS repository. I'll assume that you have set up your development repository according to the standards described in - these instructions. If so, then you just do this: + this appendix. If so, then you just do this:

       
       % cd ROOT/packages
      @@ -412,7 +410,7 @@
       
           
    • Now you can start developing the package. In addition to writing code, - you should also consider the tasks outlined in the package submission guidelines. + you should also consider the tasks outlined in the package development tutorial.

    The Site Map and Package Instances

    At this point, you are probably excited to see your new package in action. But, we haven't added any user visible pages yet. By @@ -434,7 +432,7 @@ map content that lived outside the page root into the site, and it was also hard to map mulitiple URLs to the same place in the file system.

    - In OpenACS 5.0.0b1, administrators can define an arbitrary mapping between the + In OpenACS 5.0.0b2, administrators can define an arbitrary mapping between the URLs the user types and the actual file in the file system that is served. This mapping is called the site map and entries in the site map are called site nodes. Each site node maps a URL to an @@ -449,7 +447,7 @@ of many indedendent applications that actually run on a single shared code base. The request-processor document shows you how OpenACS figures out which instance of your application was - requested by the user at any given time. The page development tutorial shows you how to use this + requested by the user at any given time. The page development tutorial shows you how to use this information in your user interface.

    In order to make the new notes application visible to @@ -476,7 +474,7 @@ yet written Notes application at various places in the site. In a later document, we'll see how to write your application so that the code can detect from what URL it was invoked. This is the key - to supporting subsites. + to supporting subsites.

    Summary

    The APM performs the following tasks in an OpenACS site:

    • @@ -492,4 +490,4 @@

    • Writes out package distribution files for other people to download and install. We'll cover this later. -

    View comments on this page at openacs.org
    +

    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/parties.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/parties.html,v diff -u -r1.22.2.1 -r1.22.2.2 --- openacs-4/packages/acs-core-docs/www/parties.html 14 Nov 2003 09:43:46 -0000 1.22.2.1 +++ openacs-4/packages/acs-core-docs/www/parties.html 21 Nov 2003 11:14:09 -0000 1.22.2.2 @@ -1,8 +1,7 @@ -Parties in OpenACS 5.0.0b1

    Parties in OpenACS 5.0.0b1

    -by Rafael H. Schloming
    +Parties in OpenACS 5.0.0b2

    Parties in OpenACS 5.0.0b2

    By Rafael H. Schloming

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

    Introduction

    While many applications must deal with individuals and many applications +

    Introduction

    While many applications must deal with individuals and many applications must deal with groups, most applications must deal with individuals or groups. It is often the case with such applications that in many respects both individuals and groups are treated in an identical manner. It @@ -66,7 +65,7 @@ users) is that it is now possible to "nuke" a user from a live system by removing his entry from the users table, but leaving the rest of his information present (i.e. turning him from a user into a person). This is -because wherever possible the OpenACS 5.0.0b1 data model references the persons or +because wherever possible the OpenACS 5.0.0b2 data model references the persons or parties table, not the users table. If this feature is desired when extending the system, then the developers should be careful to only references the users table in situations where it is clear that the @@ -298,7 +297,7 @@ have a primary key that references the users table, thereby guaranteeing that each row in the mensa_users table has a corresponding row in each of the users, persons, parties, and acs_objects tables. This child table could then -store any extra information relevant to the MENSA community.

    Specializing Groups

    If one were to build an intranet application on top of the 5.0.0b1 party +store any extra information relevant to the MENSA community.

    Specializing Groups

    If one were to build an intranet application on top of the 5.0.0b2 party system, it is likely that one would want to take advantage of the systems efficient representation of sophisticated organizational structures, but there would be much more specialized information associated with each group. @@ -312,4 +311,4 @@ single integer primary key in what could be thought of as a pure relation. Because a membership relation is an ordinary acs object with object identity, it is as easy to extend the membership relation to store extra information as it is to extend the users -table or the groups table.

    ($Id$)
    View comments on this page at openacs.org
    +table or the groups table.

    ($Id$)
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/permissions-design.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/permissions-design.html,v diff -u -r1.15 -r1.15.2.1 --- openacs-4/packages/acs-core-docs/www/permissions-design.html 11 Nov 2003 10:28:27 -0000 1.15 +++ openacs-4/packages/acs-core-docs/www/permissions-design.html 21 Nov 2003 11:14:09 -0000 1.15.2.1 @@ -1,8 +1,7 @@ -OpenACS 4 Permissions Design

    OpenACS 4 Permissions Design

    -by John Prevost and Rafael H. Schloming
    +OpenACS 4 Permissions Design

    OpenACS 4 Permissions Design

    By John Prevost and Rafael H. Schloming

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

    Essentials

    Essentials

    Introduction

    The goal of the Permissions system is to provide generic means to both @@ -61,8 +60,8 @@ questions about permissions. For example, a number of the above tables describe "direct" or explicit permissions. Inheritance and default values can, however, introduce permissions which are not directly specified. -(For example, read access on a bboard allows read access on all the messages -in the bboard.)

    The following views provide flattened versions of inherited +(For example, read access on a forum allows read access on all the messages +in the forum.)

    The following views provide flattened versions of inherited information:

    acs_privilege_method_map

    Map of privileges to the methods they contain either directly or because @@ -152,7 +151,7 @@ grantee_id acs_permissions.grantee_id%TYPE, privilege acs_permissions.privilege%TYPE ); -

    These procedures are defined in +

    These procedures are defined in permissions-create.sql

    Tcl Procedures

    Two tcl procedures provide a simple call for the query, "Can this user perform this method on this object?" One returns true or false, the other presents an error page.

    To receive a true or false value, Tcl code should call:

    @@ -183,4 +182,4 @@
     
     

    Rafael H. Schloming

    Documentation author -

    John Prevost

    Revision History

    Document Revision #Action Taken, NotesWhen?By Whom?
    0.1Creation9/11/2000John Prevost
    0.2Edited for ACS 4 Beta release10/04/2000Kai Wu
    View comments on this page at openacs.org
    +

    John Prevost

    Revision History

    Document Revision #Action Taken, NotesWhen?By Whom?
    0.1Creation9/11/2000John Prevost
    0.2Edited for ACS 4 Beta release10/04/2000Kai Wu
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/permissions-requirements.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/permissions-requirements.html,v diff -u -r1.15 -r1.15.2.1 --- openacs-4/packages/acs-core-docs/www/permissions-requirements.html 11 Nov 2003 10:28:27 -0000 1.15 +++ openacs-4/packages/acs-core-docs/www/permissions-requirements.html 21 Nov 2003 11:14:09 -0000 1.15.2.1 @@ -1,8 +1,7 @@ -OpenACS 4 Permissions Requirements

    OpenACS 4 Permissions Requirements

    -by John McClary Prevost
    +OpenACS 4 Permissions Requirements

    OpenACS 4 Permissions Requirements

    By John McClary Prevost

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

    Introduction

    This document records requirements for the OpenACS 4 Permissions system, a +

    Introduction

    This document records requirements for the OpenACS 4 Permissions system, a component of the OpenACS 4 Kernel. The Permissions system is meant to unify and centralize the handling of access and control on a given OpenACS 4 system.

    Vision Statement

    Any multi-user software system must address the general problem of permissions, or "who can do what, on what." On web services, which @@ -47,7 +46,7 @@ perform. If "foo" is an operation, than we sometimes refer to the foo "privilege" to mean that a user has the privilege to perform that operation.

    Examples of the essential question addressed by the Permissions system: -Can jane@attacker.com delete the web security bboard? Can the Boston office +Can jane@attacker.com delete the web security forum? Can the Boston office (a party) within the VirtuaCorp intranet/website create its own news instance?

    Functional Requirements

    10.0 Granularity

    The system must support access control down to the level of a single entity (this would imply down to the level of a row in the OpenACS Objects data @@ -59,7 +58,7 @@ may party P perform operation O?"

    Behavioral Requirements

    40.0 Scale of Privileges

    Privileges must be designed with appropriate scope for a given OpenACS package. Some privileges are of general utility (e.g. "read" and "write"). Others are of more limited use (e.g. "moderate" -- applies mainly to a package like bboard, where many users are contributing +- applies mainly to a package like forum, where many users are contributing content simultaneously). A package defining its own privileges should do so with moderation, being careful not to overload a privilege like "read" to mean too many things.

    50.0 Aggregation of Operations (Privileges)

    For user interface purposes, it can be appropriate to group certain @@ -70,11 +69,11 @@ system. Regardless of the exact behavior of aggregate parties, if an aggregate party exists, then access which is granted to the aggregate party should be available to all members of that aggregate.

    70.0 Scope of Access Control

    70.10 Context

    There must be a method for objects to receive default access control from -some context. For example, if you do not have read access to a bboard, you -should not have read access to a message in that bboard.

    70.20 Overriding

    It must be possible to override defaults provided by the context of an +some context. For example, if you do not have read access to a forum, you +should not have read access to a message in that forum.

    70.20 Overriding

    It must be possible to override defaults provided by the context of an object (as in 70.10), in both a positive and negative manner.

    70.20.10 Positive Overriding

    It must be possible to allow a party more access to some target than they would get by default. (For example, a user does not have the right to edit -any message on a bboard. But a user does possibly have the right to edit +any message on a forum. But a user does possibly have the right to edit their own messages.)

    70.20.20 Negative Overriding

    It must be possible to deny a party access to some target that their inherited privileges would have allowed. (For example, a subdirectory in the file-storage might normally have its parent directory as context. It should Index: openacs-4/packages/acs-core-docs/www/permissions-tediously-explained.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/permissions-tediously-explained.html,v diff -u -r1.16.2.1 -r1.16.2.2 --- openacs-4/packages/acs-core-docs/www/permissions-tediously-explained.html 14 Nov 2003 09:43:46 -0000 1.16.2.1 +++ openacs-4/packages/acs-core-docs/www/permissions-tediously-explained.html 21 Nov 2003 11:14:09 -0000 1.16.2.2 @@ -1,4 +1,4 @@ -OpenACS 4.x Permissions Tediously Explained

    OpenACS 4.x Permissions Tediously Explained

    +OpenACS 4.x Permissions Tediously Explained

    OpenACS 4.x Permissions Tediously Explained

    by Vadim Nasardinov. Modified and converted to Docbook XML by Roberto Mello

    The code has been modified since this document was written so it is now obsolete. See this forum thread.

    Overview

    The general permissions system has a relatively complex data model in OpenACS 4.x. @@ -85,7 +85,7 @@ to store permission information explicitly about every object, i.e. if the system has 100,000 and 1,000 users who have the read privilege on all objects, then we would need to store 100,000,000 entries of the form: -

    Table�8.1.�

    object_idgrantee_idprivilege
    object_id_1user_id_1'read'
    object_id_1user_id_2'read'
    ...
    object_id_1user_id_n'read'
    object_id_2user_id_1'read'
    object_id_2user_id_2'read'
    ...
    object_id_2user_id_n'read'
    ...
    ...
    object_id_muser_id_1'read'
    object_id_muser_id_2'read'
    ...
    object_id_muser_id_n'read'

    +

    object_idgrantee_idprivilege
    object_id_1user_id_1'read'
    object_id_1user_id_2'read'
    ...
    object_id_1user_id_n'read'
    object_id_2user_id_1'read'
    object_id_2user_id_2'read'
    ...
    object_id_2user_id_n'read'
    ...
    ...
    object_id_muser_id_1'read'
    object_id_muser_id_2'read'
    ...
    object_id_muser_id_n'read'

    Although quite feasible, this approach fails to take advantage of the fact that objects in the system are commonly organized hierarchally, and permissions usually follow the hierarchical structure, so that if user @@ -100,7 +100,7 @@

    Context Hierarchy

    Suppose objects A, B, ..., and F form the following hierarchy. -

    Table�8.2.�

    A

    +

    Table�8.1.�Context Hierarchy Example

    A

    object_id=10

    B

    object_id=20 @@ -113,26 +113,26 @@

    F

    object_id=60

    - This can be represented in the - acs_objects table + This can be represented in the + acs_objects table by the following entries: -

    Table�8.3.�

    object_idcontext_id
    2010
    3010
    4020
    5020
    6030

    +

    Table�8.2.�acs_objects example data

    object_idcontext_id
    2010
    3010
    4020
    5020
    6030

    The first entry tells us that object 20 is the descendant of object 10, and the third entry shows that object 40 is the descendant of object 20. By running a CONNECT BY query, we can compute that object 40 is the second-generation descendant of object 10. With this in mind, if we want to record the fact that user Joe has the read privilege on objects A, ..., F, we only need to record one entry in the - acs_permissions table. -

    Table�8.4.�

    objectgranteeprivilege
    AJoeread

    + acs_permissions table. +

    objectgranteeprivilege
    AJoeread

    The fact that Joe can also read B, C, ..., and F can be derived by ascertaining that these objects are children of A by traversing the context hierarchy. As it turns out, hierarchical queries are expensive. As Rafael Schloming put it so aptly, Oracle can't deal with hierarchies for shit.

    One way to solve this problem is to cache a flattened view of the context tree like so: -

    Table�8.5.�

    objectancestorn_generations
    AA0
    BB0
    BA1
    CC0
    CA1
    DD0
    DB1
    DA2
    EE0
    EB1
    EA2
    FF0
    FC1
    FA2

    +

    objectancestorn_generations
    AA0
    BB0
    BA1
    CC0
    CA1
    DD0
    DB1
    DA2
    EE0
    EB1
    EA2
    FF0
    FC1
    FA2

    Note that the number of entries in the flattened view grows exponentially with respect to the depth of the context tree. For instance, if you have a fully populated binary tree with a depth of n, then the number of entries @@ -147,10 +147,10 @@ create table acs_object_context_index ( object_id not null - constraint acs_obj_context_idx_obj_id_fk references acs_objects(object_id), + constraint acs_obj_context_idx_obj_id_fk references acs_objects (object_id), ancestor_id not null - constraint acs_obj_context_idx_anc_id_fk references acs_objects(object_id), + constraint acs_obj_context_idx_anc_id_fk references acs_objects (object_id), n_generations integer not null constraint acs_obj_context_idx_n_gen_ck check (n_generations >= 0), @@ -168,7 +168,7 @@ with respect to the depth of the context tree.

    The acs_object_context_index is kept in sync with the - acs_objects + acs_objects table by triggers like this:

     create or replace trigger acs_objects_context_id_in_tr
    @@ -198,12 +198,12 @@
         end if;
     end;
     

    - One final note about - acs_objects. By setting + One final note about + acs_objects. By setting an object's security_inherit_p column to 'f', you can stop permissions from cascading down the context tree. In the following example, Joe does not have the read permissions on C and F. -

    Table�8.6.�


    +


    A
    object_id=10
    readable�by�Joe
    @@ -231,7 +231,7 @@ Privileges are also organized hierarchically. In addition to the five main system privileges defined in the ACS Kernel data model, application developers may define their own. For instance, the Bboard package defines the following privileges: -

    Table�8.7.�

    privilege
    create_category
    create_forum
    create_message
    delete_category
    delete_forum
    delete_message
    moderate_forum
    read_category
    read_forum
    read_message
    write_category
    write_forum
    write_message

    +

    privilege
    create_category
    create_forum
    create_message
    delete_category
    delete_forum
    delete_message
    moderate_forum
    read_category
    read_forum
    read_message
    write_category
    write_forum
    write_message

    By defining parent-child relationship between privileges, the OpenACS data model makes it easier for developers to manage permissions. Instead of granting a user explicit read, write, delete, @@ -240,7 +240,7 @@ privilege to which the first four privileges are tied. To give a more detailed example, the Bboard privileges are structured as follows. -

    Table�8.8.�

    admin
    createdeletereadwritemoderate forum
    create categorycreate forumcreate messagedelete categorydelete forumdelete messageread categoryread forumread messagewrite categorywrite forumwrite message

    +

    admin
    createdeletereadwritemoderate forum
    create categorycreate forumcreate messagedelete categorydelete forumdelete messageread categoryread forumread messagewrite categorywrite forumwrite message

    The parent-child relationship between privileges is represented in the acs_privilege_hierarchy table:

    @@ -286,7 +286,7 @@
         

    Party Hierarchy

    Now for the third hierarchy playing a promiment role in the permission system. The party data model is set up as follows. -

    +    

       create table parties (
           party_id
               not null
    @@ -368,9 +368,9 @@
                check (member_state in ('approved', 'banned', 'rejected', 'deleted'))
       );
         

    - The acs_rels + The acs_rels table entries would look like so: -

    Table�8.10.�

    rel_typeobject_oneobject_two
    +

    rel_typeobject_oneobject_two
    membership_rel Pranksters @@ -394,7 +394,7 @@ of Pranksters. We say that the Pranksters group is composed of groups Merry Pranksters and Sad Pranksters. This - information is stored in the acs_rels + information is stored in the acs_rels and composition_rels tables.

     create table composition_rels (
    @@ -404,8 +404,8 @@
     );
         

    The relevant entries in the - acs_rels look like so. -

    Table�8.11.�

    rel_typeobject_oneobject_two
    + acs_rels look like so. +

    rel_typeobject_oneobject_two
    composition_rel Pranksters @@ -472,16 +472,16 @@ ) organization index;

    The group_component_index table stores a flattened representation of the - group composition hierarchy that is maintained in sync with the acs_rels + group composition hierarchy that is maintained in sync with the acs_rels and composition_rels tables through triggers.

    As far as the group_member_index table goes, I am not sure I understand its purpose. It maintains group-member relationships that are resolved with respect to group composition. Note that information stored in - group_member_index can be trivially derived by joining - membership_rels, - acs_rels, - and group_component_index. Here + group_member_index can be trivially derived by joining + membership_rels, + acs_rels, + and group_component_index. Here is a view that does it. (This view is not part of the OpenACS Kernel data model.)

     create or replace view group_member_view
    @@ -507,7 +507,7 @@
       and r.object_id_one = gci.component_id;
         

    A heuristic way to verify that group_member_view is essentially identical - to group_member_index is to compute the + to group_member_index is to compute the symmetric difference between the two:

     select
    @@ -530,7 +530,7 @@
         

    The query returns no rows. The important point is, if we have a flattened view of the composition hierarchy -- like one provided - by the group_component_index table -- + by the group_component_index table -- membership relationship resolution can be computed trivially with no hierarchical queries involved. There is no need to keep the view in a denormalized table, unless doing so results in substantial performance gains. @@ -562,7 +562,7 @@ end acs_permission;

    The function simply queries - acs_object_party_privilege_map, + acs_object_party_privilege_map, which is a humongous view that joins three flattened hierarchies: the context tree, the privilege hierarchy, the party composition (and membership) hierarchy. As such, @@ -616,7 +616,7 @@

    Note that in the above example, acs_permissions had only one entry that needed to be deleted: -

    Table�8.12.�

    object_idgrantee_idprivilege
    +

    object_idgrantee_idprivilege
    default_context registered_users @@ -689,4 +689,4 @@ container_id from group_member_index; -
    View comments on this page at openacs.org
    +
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/permissions.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/permissions.html,v diff -u -r1.22.2.1 -r1.22.2.2 --- openacs-4/packages/acs-core-docs/www/permissions.html 14 Nov 2003 09:43:46 -0000 1.22.2.1 +++ openacs-4/packages/acs-core-docs/www/permissions.html 21 Nov 2003 11:14:09 -0000 1.22.2.2 @@ -1,8 +1,8 @@ -Groups, Context, Permissions

    Groups, Context, Permissions

    By Pete Su


    +Groups, Context, Permissions

    Groups, Context, Permissions

    By Pete Su

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

    Overview

    -The OpenACS 5.0.0b1 Permissions system allows developers and administrators to +

    Overview

    +The OpenACS 5.0.0b2 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 @@ -13,7 +13,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 5.0.0b1 has two auxiliary mechanisms for making this +site. Therefore, OpenACS 5.0.0b2 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 @@ -25,7 +25,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 5.0.0b1 object type system, +contained a meta-data system much like the OpenACS 5.0.0b2 object type system, but that's not relevant right now.)

    The 3.x groups system, while very useful, was limited in few ways. The @@ -47,7 +47,7 @@ member of Greenpeace, its members are not necessarily members of Greenpeace.

    -OpenACS 5.0.0b1 solves both of these modeling problems by introducing a new +OpenACS 5.0.0b2 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 @@ -113,18 +113,18 @@ already know what parties and objects are, but we don't know what privileges are.

    -In OpenACS 5.0.0b1, a privilege models the right to perform some operation on +In OpenACS 5.0.0b2, 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 5.0.0b1, +read. write or execute privileges on files and directories. In OpenACS 5.0.0b2, 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 5.0.0b1 kernel data model actually defines these +contains. The OpenACS 5.0.0b2 kernel data model actually defines these privileges as follows:

     
    @@ -164,11 +164,11 @@
     permissions to large groups of objects in the site, all at once. We
     use contexts to achieve this goal.
     

    Object Context

    -In OpenACS 5.0.0b1, an object context is a generalization of the scoping +In OpenACS 5.0.0b2, 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: -

    ...scopeuser_idgroup_id...
    ...user123...
    ...group456...
    ...public...

    +

    ...scopeuser_idgroup_id...
    ...user123...
    ...group456...
    ...public...

    The first row represents an entry in User 123's personal address book, the second row represents an entry in User Group 456's shared address book, and the third row represents an entry in the site's public @@ -179,7 +179,7 @@ person or a group of people or the general public (itself a group of people).

    -In OpenACS 5.0.0b1, rather than breaking the world into a limited set of scopes, +In OpenACS 5.0.0b2, 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 @@ -192,11 +192,11 @@ through the context happens, otherwise it does not. You might set this field to 'f' if you want to override the default permissions in a subtree of some context. -

    A good example of how to use this hierarchy is in the bboard +

    A good example of how to use this hierarchy is in the forums 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 5.0.0b1, +privileges whenever we create a message, which is tedious. In OpenACS 5.0.0b2, 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 @@ -330,7 +330,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 5.0.0b1 template system +The if tag is something that the OpenACS 5.0.0b2 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 @@ -344,7 +344,7 @@ permissions to notes that she wanted to make public or whatever. But that's beyond the scope of this example.

    Summary

    -OpenACS 5.0.0b1 defines three separate mechanisms for specifying access control +OpenACS 5.0.0b2 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, @@ -354,4 +354,4 @@

    In the next section, we'll look at a more complex page for adding and editing notes, and discuss these issues further. -

    ($Id$)
    View comments on this page at openacs.org
    +

    ($Id$)
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/platform-dev.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/Attic/platform-dev.html,v diff -u -r1.3 -r1.3.2.1 --- openacs-4/packages/acs-core-docs/www/platform-dev.html 11 Nov 2003 10:28:27 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/platform-dev.html 21 Nov 2003 11:14:09 -0000 1.3.2.1 @@ -1,3 +1,3 @@ -Platform Development

    Platform Development

    Information about the internal workings of OpenACS, useful +Platform Development

    Platform Development

    Information about the internal workings of OpenACS, useful both for modifying the core functionality and for developing new packages.

    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/postgres.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/postgres.html,v diff -u -r1.21.2.1 -r1.21.2.2 --- openacs-4/packages/acs-core-docs/www/postgres.html 14 Nov 2003 09:43:46 -0000 1.21.2.1 +++ openacs-4/packages/acs-core-docs/www/postgres.html 21 Nov 2003 11:14:09 -0000 1.21.2.2 @@ -1,8 +1,7 @@ -Install PostGreSQL

    Install PostGreSQL

    - by Vinod Kurup
    +Install PostGreSQL

    Install PostGreSQL

    by Vinod Kurup

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

    Skip this section if you will run only Oracle.

    OpenACS 5.0.0b1 will run with PostGreSQL 7.2.x, 7.3.2, +

    Skip this section if you will run only Oracle.

    OpenACS 5.0.0b2 will run with PostGreSQL 7.2.x, 7.3.2, 7.3.3, and 7.3.4. 7.3.4 is the recommended version of PostgreSQL.

    • Debian.�

      Debian users can install the package and add some backwards-compatibility links:

      apt-get install postgresql postgresql-dev postgresql-doc
       ln -s /usr/include/postgresql/ /usr/include/pgsql
       ln -s /var/lib/postgres /usr/local/pgsql
      @@ -68,7 +67,7 @@
       	  Change to the postgres user and run ./configure to set the compilation options automatically. This is the point at which you can
       	  configure PostgreSQL in various ways. For example, if you want to
       	  enable
      -	  Unicode support, add the flags --enable-locale and --enable-multibyte. If you want to see what the other possibilities are, run ./configure --help.
      +	  Unicode support, add the flags --enable-locale and --enable-multibyte. If you want to see what the other possibilities are, run ./configure --help.
       	

      [root@yourserver src]# su - postgres
       [postgres@yourserver pgsql]$ cd /usr/local/src/postgresql-7.3.4
       [postgres@yourserver postgresql-7.3.4]$ ./configure
      @@ -165,11 +164,11 @@
               state. Red Hat and Debian and SuSE each work a little
               differently.
       	

      • Red Hat RPM:

        The init script is already installed; just turn it on for the appropriate run levels.

        [root@yourserver root]# chkconfig --level 345 postgresql on
        -[root@yourserver root]# 
      • Red Hat from source:

        [root@yourserver src]# cp /tmp/openacs-5.0.0b1/packages/acs-core-docs/www/files/postgresql.txt /etc/init.d/postgresql
        +[root@yourserver root]# 
      • Red Hat from source:

        [root@yourserver src]# cp /tmp/openacs-5.0.0b2/packages/acs-core-docs/www/files/postgresql.txt /etc/init.d/postgresql
         [root@yourserver src]# chown root.root /etc/rc.d/init.d/postgresql
         [root@yourserver src]# chmod 755 /etc/rc.d/init.d/postgresql
         [root@yourserver src]# 
        -
        cp /tmp/openacs-5.0.0b1/packages/acs-core-docs/www/files/postgresql.txt /etc/init.d/postgresql
        +
        cp /tmp/openacs-5.0.0b2/packages/acs-core-docs/www/files/postgresql.txt /etc/init.d/postgresql
         chown root.root /etc/rc.d/init.d/postgresql
         chmod 755 /etc/rc.d/init.d/postgresql

        Test the script.

        [root@yourserver root]# service postgresql stop
         Stopping PostgreSQL: ok
        @@ -188,11 +187,11 @@
         
        chkconfig --add postgresql
         chkconfig --level 345 postgresql on
         chkconfig --list postgresql
        -service postgresql start
      • Debian:

        root:~# cp /tmp/openacs-5.0.0b1/packages/acs-core-docs/www/files/postgresql.txt /etc/init.d/postgresql
        +service postgresql start
    • Debian:

      root:~# cp /tmp/openacs-5.0.0b2/packages/acs-core-docs/www/files/postgresql.txt /etc/init.d/postgresql
       root:~# chown root.root /etc/init.d/postgresql
       root:~# chmod 755 /etc/init.d/postgresql
       root:~# 
      
      -cp /tmp/openacs-5.0.0b1/packages/acs-core-docs/www/files/postgresql.txt /etc/init.d/postgresql
      +cp /tmp/openacs-5.0.0b2/packages/acs-core-docs/www/files/postgresql.txt /etc/init.d/postgresql
       chown root.root /etc/init.d/postgresql
       chmod 755 /etc/init.d/postgresql

      Test the script

      root:~# /etc/init.d/postgresql stop
       Stopping PostgreSQL: ok
      @@ -220,7 +219,7 @@
                   rc.d/ part in each of the
                   following commands.
       
      -          

    root:~# cp /tmp/openacs-5.0.0b1/packages/acs-core-docs/www/files/postgresql.txt /etc/rc.d/init.d/postgresql
    +          

    root:~# cp /tmp/openacs-5.0.0b2/packages/acs-core-docs/www/files/postgresql.txt /etc/rc.d/init.d/postgresql
     root:~# chown root.root /etc/rc.d/init.d/postgresql
     root:~# chmod 755 /etc/rc.d/init.d/postgresql

    @@ -299,4 +298,4 @@ PostgreSQL Performance Tuning -

    ($Id$)
    View comments on this page at openacs.org
    +

    ($Id$)
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/programming-with-aolserver.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/programming-with-aolserver.html,v diff -u -r1.22.2.1 -r1.22.2.2 --- openacs-4/packages/acs-core-docs/www/programming-with-aolserver.html 14 Nov 2003 09:43:46 -0000 1.22.2.1 +++ openacs-4/packages/acs-core-docs/www/programming-with-aolserver.html 21 Nov 2003 11:14:09 -0000 1.22.2.2 @@ -1,9 +1,7 @@ -Programming with AOLserver

    Programming with AOLserver

    -by Michael Yoon, Jon Salz and Lars Pind. -
    +Programming with AOLserver

    Programming with AOLserver

    By Michael Yoon, Jon Salz and Lars Pind.

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

    The global command

    +

    The global command

    When using AOLserver, remember that there are effectively two types of global namespace, not one:

    1. Server-global: As you'd expect, there is @@ -41,7 +39,7 @@ which runs frequently, don't use the -thread switch.

      Note also that thread is initialized with a copy of what was installed during server startup, so if the procedure table have changed since -startup (e.g. using the APM watch +startup (e.g. using the APM watch facility), that will not be reflected in the scheduled thread.

    Using return

    The return command in Tcl returns control to the caller procedure. Index: openacs-4/packages/acs-core-docs/www/psgml-for-emacs.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/psgml-for-emacs.html,v diff -u -r1.13.2.1 -r1.13.2.2 --- openacs-4/packages/acs-core-docs/www/psgml-for-emacs.html 14 Nov 2003 09:43:46 -0000 1.13.2.1 +++ openacs-4/packages/acs-core-docs/www/psgml-for-emacs.html 21 Nov 2003 11:14:09 -0000 1.13.2.2 @@ -1,8 +1,8 @@ -Add PSGML commands to emacs init file (OPTIONAL)

    Add PSGML commands to emacs init file (OPTIONAL)

    +Add PSGML commands to emacs init file (OPTIONAL)

    Add PSGML commands to emacs init file (OPTIONAL)

    If you plan to write or edit any documentation with emacs, install a customized emacs configuration file with DocBook commands in the skeleton directory, so it will be used for all new users. The file also fixes the backspace -> help mis-mapping that often occurs in - terminals.

    [root@yourserver tmp]# cp /tmp/openacs-5.0.0b1/packages/acs-core-docs/www/files/emacs.txt /etc/skel/.emacs
    +      terminals.

    [root@yourserver tmp]# cp /tmp/openacs-5.0.0b2/packages/acs-core-docs/www/files/emacs.txt /etc/skel/.emacs
     cp: overwrite `/etc/skel/.emacs'? y
     [root@yourserver tmp]# 

    Debian users:

    apt-get install psgml

    Note: The new nxml mode for emacs, when used in combination with psgml, provides a pretty good set of functionality that makes DocBook editing much less painless. In particular, nxml does syntax testing in real-time so that you can see syntax errors immediately instead of in the output of the xsltproc hours or days later. For debian, apt-get install nxml.

    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/psgml-mode.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/psgml-mode.html,v diff -u -r1.22.2.1 -r1.22.2.2 --- openacs-4/packages/acs-core-docs/www/psgml-mode.html 14 Nov 2003 09:43:46 -0000 1.22.2.1 +++ openacs-4/packages/acs-core-docs/www/psgml-mode.html 21 Nov 2003 11:14:09 -0000 1.22.2.2 @@ -1,8 +1,7 @@ -Using PSGML mode in Emacs

    Using PSGML mode in Emacs

    -By David Lutterkort
    +Using PSGML mode in Emacs

    Using PSGML mode in Emacs

    By David Lutterkort

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

    What it is

    PSGML Mode is a mode for editing, umm, SGML and XML documents in emacs. It +

    What it is

    PSGML Mode is a mode for editing, umm, SGML and XML documents in emacs. It can parse a DTD and help you insert the right tags in the right place, knows about tags' attributes and can tell you in which contexts a tag can be used. If you give it the right DTD, that is. But even without a DTD, Index: openacs-4/packages/acs-core-docs/www/release-notes-4-5.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/Attic/release-notes-4-5.html,v diff -u -r1.8.2.1 -r1.8.2.2 --- openacs-4/packages/acs-core-docs/www/release-notes-4-5.html 14 Nov 2003 09:43:46 -0000 1.8.2.1 +++ openacs-4/packages/acs-core-docs/www/release-notes-4-5.html 21 Nov 2003 11:14:09 -0000 1.8.2.2 @@ -1,4 +1,3 @@ - @@ -73,7 +72,7 @@ Installing on Unix/Linux or -Installing on Windows +Installing on Windows . Note that the Windows documentation is not current for OpenACS 4.5, but an alternative is to use John Sequeira's @@ -117,7 +116,7 @@ installing the Open FTS driver for OpenACS. It's included in the package as a text file and is also summarized at the end of the installation documentation in the section, -Set Up OpenFTS +Set Up OpenFTS . As with the Oracle version, there are steps you must take manually in order to get this feature working. Index: openacs-4/packages/acs-core-docs/www/release-notes-4-6.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/Attic/release-notes-4-6.html,v diff -u -r1.8.2.1 -r1.8.2.2 --- openacs-4/packages/acs-core-docs/www/release-notes-4-6.html 14 Nov 2003 09:43:46 -0000 1.8.2.1 +++ openacs-4/packages/acs-core-docs/www/release-notes-4-6.html 21 Nov 2003 11:14:09 -0000 1.8.2.2 @@ -17,7 +17,7 @@ "delete" an illegal name for PL/SQL procedures and functions.

    You may want to begin by reading our installation documentation for - Installing on Unix/Linux or Installing on Windows. Note + Installing on Unix/Linux or Installing on Windows. Note that the Windows documentation is not current for OpenACS 4.6, but an alternative is to use John Sequeira's Oasis VM project. @@ -40,7 +40,7 @@ If you're using PostgreSQL be sure to read the documentation on installing the Open FTS driver for OpenACS. It's included in the package as a text file and is also summarized at the end of the - installation documentation in the section, Set Up OpenFTS. As with the Oracle version, there + installation documentation in the section, Set Up OpenFTS. As with the Oracle version, there are steps you must take manually in order to get this feature working.

    Testing Notes

    Index: openacs-4/packages/acs-core-docs/www/release-notes.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/release-notes.html,v diff -u -r1.26.2.1 -r1.26.2.2 --- openacs-4/packages/acs-core-docs/www/release-notes.html 14 Nov 2003 09:43:46 -0000 1.26.2.1 +++ openacs-4/packages/acs-core-docs/www/release-notes.html 21 Nov 2003 11:14:09 -0000 1.26.2.2 @@ -1,4 +1,4 @@ -OpenACS Release Notes

    OpenACS Release Notes

    Version 5.0.0 beta1

    +OpenACS Release Notes

    OpenACS Release Notes

    Version 5.0.0 beta1

    This is the first beta release of OpenACS 5.0.0. This release has a number of serious bugs, and is not suitable for production systems. It has passed several release criteria, @@ -12,7 +12,7 @@

    You may want to begin by reading our installation documentation for the section called “a Unix-like system”. Note that the Windows documentation is - not current for OpenACS 5.0.0b1, but an alternative is to use John + not current for OpenACS 5.0.0b2, but an alternative is to use John Sequeira's Oasis VM project.

    @@ -84,4 +84,4 @@ Who's online feature.

  • Spell checking. -

  • ($Id$)
    View comments on this page at openacs.org
    +

    ($Id$)
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/releasing-openacs.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/releasing-openacs.html,v diff -u -r1.6 -r1.6.2.1 --- openacs-4/packages/acs-core-docs/www/releasing-openacs.html 11 Nov 2003 12:54:57 -0000 1.6 +++ openacs-4/packages/acs-core-docs/www/releasing-openacs.html 21 Nov 2003 11:14:09 -0000 1.6.2.1 @@ -1,4 +1,4 @@ -Appendix�E.�How to package and release OpenACS

    Appendix�E.�How to package and release OpenACS

    1. Check out the cvs tree. The files must be checked out +Appendix�E.�How to package and release OpenACS

      Appendix�E.�How to package and release OpenACS

      1. Check out the cvs tree. The files must be checked out through a cvs account with write access. In this example, the cvs user on openacs.org is implied from the ssh login information previously set up. It could be overridden via foobar@openacs.org.

        @@ -19,10 +19,10 @@
         
      2. Make the tarball

        • openacs-core.�

          1. Go to a new working space and export the tagged files.

             
            mkdir /tmp/tarball
             cd /tmp/tarball
            -cvs -d :pserver:anonymous@openacs.org:/cvsroot export -r openacs-5-0-0a1 -d openacs acs-core
            +cvs -d :pserver:anonymous@openacs.org:/cvsroot export -r openacs-5-0-0a1 acs-core
            +mv openacs-4 openacs
             
          2. Generate the tarball

            
             cd /tmp/tarball
            -rm -rf /tmp/tarball/openacs/CVS
             tar cz -f openacs-5.0.0a1.tar.gz openacs
             
        • dotlrn.�

          1. Go to a new working space and export the tagged files. (was getting errors here trying to use -d, so @@ -42,9 +42,8 @@

          2. Copy the dotlrn install.xml file, which controls which packages are installed on setup, to the root location:

            
            -cp /tmp/dotlrn-tarball/openacs-4/packages/dotlrn/install.xml /tmp/dotlrn-tarball/openacs
            +cp /tmp/dotlrn-tarball/openacs/packages/dotlrn/install.xml /tmp/dotlrn-tarball/openacs
             
          3. Generate the tarball

            
             cd /tmp/tarball
            -rm -rf /tmp/tarball/openacs-4/CVS
             tar cz -f dotlrn-2.0.0a1.tar.gz openacs
             
      3. Test the new tarball

      4. Update on the site

      View comments on this page at openacs.org
      Index: openacs-4/packages/acs-core-docs/www/request-processor.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/request-processor.html,v diff -u -r1.22.2.1 -r1.22.2.2 --- openacs-4/packages/acs-core-docs/www/request-processor.html 14 Nov 2003 09:43:46 -0000 1.22.2.1 +++ openacs-4/packages/acs-core-docs/www/request-processor.html 21 Nov 2003 11:14:09 -0000 1.22.2.2 @@ -1,32 +1,30 @@ -The Request Processor

      The Request Processor

      -By Pete Su -
      +The Request Processor

      The Request Processor

      By Pete Su

      OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

      Overview

      -This document is a brief introduction to the OpenACS 5.0.0b1 Request Processor; +

      Overview

      +This document is a brief introduction to the OpenACS 5.0.0b2 Request Processor; more details can be found in the OpenACS 4 Request Processor Design. Here we cover the high level concepts behind the system, and implications and usage for the application developer.

      Request Processor

      -The 5.0.0b1 Request Processor is a global filter and set of Tcl procs that +The 5.0.0b2 Request Processor is a global filter and set of Tcl procs that respond to every incoming URL reaching the server. The following diagram summarizes the stages of the request processor assuming a URL request like http://someserver.com/notes/somepage.adp. -

      +

      Stage 1: Search Site Map

      The first thing the RP does is to map the given URL to the appropriate physical directory in the filesystem, from which to serve content. We do this by searching the site map data model (touched on in the Packages, and further -discussed in the section called “Writing OpenACS 5.0.0b1 Application Pages”). This data model maps URLs to objects representing +discussed in Writing OpenACS Application Pages). This data model maps URLs to objects representing content, and these objects are typically package instances.

      After looking up the appropriate object, the RP stores the URL, the ID of the object it found, and the package and package instance the object belongs to into the environment of the connection. This environment can be queried using the ad_conn procedure, -which is described in detail in OpenACS 4 Request Processor Design. The page +which is described in detail in OpenACS 4 Request Processor Design. The page development tutorial shows you how to use this interface to make your pages aware of which instance was requested.

      Stage 2: Authentication

      @@ -37,7 +35,7 @@ extracts or sets up new session tokens for the user.

      Stage 3: Authorization

      Next, the Request Processor checks if the user has appropriate access -privileges to the requested part of the site. In OpenACS 5.0.0b1, access control +privileges to the requested part of the site. In OpenACS 5.0.0b2, access control is dictated by the permissions system. In this case, the RP checks if the user has "read" priviledges on the object in the site map specified by the URL. This object is typically Index: openacs-4/packages/acs-core-docs/www/requirements-template.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/requirements-template.html,v diff -u -r1.22.2.1 -r1.22.2.2 --- openacs-4/packages/acs-core-docs/www/requirements-template.html 14 Nov 2003 09:43:46 -0000 1.22.2.1 +++ openacs-4/packages/acs-core-docs/www/requirements-template.html 21 Nov 2003 11:14:09 -0000 1.22.2.2 @@ -1,7 +1,7 @@ -System/Application Requirements Template

      System/Application Requirements Template

      By You


      +System/Application Requirements Template

      System/Application Requirements Template

      By You

      OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

      Introduction

      +

      Introduction

      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, @@ -60,7 +60,7 @@

    For guidelines writing requirements, take a look - at the quality standards, along with a good example, such as OpenACS 5.0.0b1 Package Manager Requirements. + at the quality standards, along with a good example, such as OpenACS 5.0.0b2 Package Manager Requirements.

    Besides writing requirements in natural language, consider using the following techniques as needed: Index: openacs-4/packages/acs-core-docs/www/rp-design.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/rp-design.html,v diff -u -r1.16 -r1.16.2.1 --- openacs-4/packages/acs-core-docs/www/rp-design.html 11 Nov 2003 12:54:57 -0000 1.16 +++ openacs-4/packages/acs-core-docs/www/rp-design.html 21 Nov 2003 11:14:10 -0000 1.16.2.1 @@ -1,8 +1,7 @@ -OpenACS 4 Request Processor Design

    OpenACS 4 Request Processor Design

    -by Rafael H. Schloming
    +OpenACS 4 Request Processor Design

    OpenACS 4 Request Processor Design

    By Rafael H. Schloming

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

    Essentials

    Essentials

    Terminology

    • +provides to the browser.

    Terminology

    • pageroot -- Any directory that contains scripts and/or static files intended to be served in response to HTTP requests. A typical OpenACS installation is required to serve files from multiple pageroots.

    • global pageroot Index: openacs-4/packages/acs-core-docs/www/rp-requirements.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/rp-requirements.html,v diff -u -r1.14 -r1.14.2.1 --- openacs-4/packages/acs-core-docs/www/rp-requirements.html 11 Nov 2003 10:28:27 -0000 1.14 +++ openacs-4/packages/acs-core-docs/www/rp-requirements.html 21 Nov 2003 11:14:10 -0000 1.14.2.1 @@ -1,8 +1,7 @@ -OpenACS 4 Request Processor Requirements

      OpenACS 4 Request Processor Requirements

      -by Rafael H. Schloming
      +OpenACS 4 Request Processor Requirements

      OpenACS 4 Request Processor Requirements

      By Rafael H. Schloming

      OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

      Introduction

      The following is a requirements document for the OpenACS 4.0 request +

      Introduction

      The following is a requirements document for the OpenACS 4.0 request processor. The major enhancements in the 4.0 version include a more sophisticated directory mapping system that allows package pageroots to be mounted at arbitrary urls, and tighter integration with the database to allow Index: openacs-4/packages/acs-core-docs/www/security-design.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/security-design.html,v diff -u -r1.16 -r1.16.2.1 --- openacs-4/packages/acs-core-docs/www/security-design.html 11 Nov 2003 10:28:27 -0000 1.16 +++ openacs-4/packages/acs-core-docs/www/security-design.html 21 Nov 2003 11:14:10 -0000 1.16.2.1 @@ -1,9 +1,7 @@ -OpenACS 4 Security Design

      OpenACS 4 Security Design

      - -by Richard Li, Archit Shah
      +OpenACS 4 Security Design

      OpenACS 4 Security Design

      By Richard Li and Archit Shah

      OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

      Introduction

      +

      Introduction

      This document explains security model design for OpenACS 4. The security system with the OpenACS core must authenticate users in both secure and insecure environments. In addition, this subsystem provides sessions on top of the @@ -42,7 +40,7 @@ for a secure authentication token. However, the basic architecture here lays the foundation for a secure system and can be easily adapted to a more secure authentication system by forcing all logins to occur over HTTPS.

      Details

      The authentication system issues up to four signed cookies (see below), -with each cookie serving a different purpose. These cookies are:

      namevaluemax-agesecure?
      ad_session_idsession_id,user_idSessionTimeoutno
      ad_user_loginuser_idInfinityno
      ad_user_login_secureuser_id,randomInfinityyes
      ad_secure_tokensession_id,user_id,randomSessionLifetimeyes
      • ad_session_id

        • reissued on any hit separated by more than SessionRenew seconds from the +with each cookie serving a different purpose. These cookies are:

          namevaluemax-agesecure?
          ad_session_idsession_id,user_idSessionTimeoutno
          ad_user_loginuser_idInfinityno
          ad_user_login_secureuser_id,randomInfinityyes
          ad_secure_tokensession_id,user_id,randomSessionLifetimeyes
          • ad_session_id

            • reissued on any hit separated by more than SessionRenew seconds from the previous hit that received a cookie

            • is valid only for SessionTimeout seconds

            • is the canonical source for the session ID in ad_conn

          • ad_user_login

            • is used for permanent logins

          • ad_user_login_secure

            • is used for permanent secure logins

            • contains random garbage (ns_time) to prevent attack against the secure hash

          • ad_secure_token

            • is a session-level cookie from the browser's standpoint

            • its signature expires in SessionLifetime seconds

            • contains random garbage (ns_time) to prevent attack against the secure @@ -85,7 +83,7 @@ immediately

            • nothing: if the cookie is present, it remains

            The current state of the permanent login cookies is not taken into account when determining the appropriate action. -

            previous login statepermanent login requestedsecure connectionaction on insecureaction on secure
            otheryysetset
            sameyysetset
            otherynsetdelete
            sameynsetnothing
            samenynothingdelete
            othernydeletedelete
            othernndeletedelete
            samenndeletedelete

            ad_user_login +

            previous login statepermanent login requestedsecure connectionaction on insecureaction on secure
            otheryysetset
            sameyysetset
            otherynsetdelete
            sameynsetnothing
            samenynothingdelete
            othernydeletedelete
            othernndeletedelete
            samenndeletedelete

            ad_user_login callssec_setup_session which actually calls sec_generate_session_id_cookie to generate the new cookie with refer to the appropriate user_id. If the connection is secure @@ -152,7 +150,7 @@ sessions whose first hit was more than SessionLifetime seconds (1 week by default) ago. Session properties are removed through that same process with cascading delete. -

          Secure Session Properties

          Session properties can be set as secure. In this case, +

          Secure Session Properties

          Session properties can be set as secure. In this case, ad_set_client_property will fail if the connection is not secure. ad_get_client_property will behave as if the property had not been set if the property was not set securely.

          Digital Signatures & Signed Cookies

          @@ -322,12 +320,12 @@ in the URL and get it back on the next hit, the sessions system would continue to work.

          Problems that arise: -

          • URL sharing could be dangerous. If I happen to be browsing Amazon +

            • URL sharing could be dangerous. If I happen to be browsing Amazon while logged in and I email a friend, he could conceivably receive it and follow it before my session has expired, gaining all of the privileges I -had.

            • User-entered URLs are harder to handler. If a user is in the middle of +had.

            • User-entered URLs are harder to handler. If a user is in the middle of a session and then types in the URL of some page, he could be kicked out of his -session.

            +session.

          Both of these problems can be mitigated by doing detection of cookie support (see the section on robot detection). To help deal with the first problem, One Index: openacs-4/packages/acs-core-docs/www/security-notes.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/security-notes.html,v diff -u -r1.22.2.1 -r1.22.2.2 --- openacs-4/packages/acs-core-docs/www/security-notes.html 14 Nov 2003 09:43:46 -0000 1.22.2.1 +++ openacs-4/packages/acs-core-docs/www/security-notes.html 21 Nov 2003 11:14:10 -0000 1.22.2.2 @@ -1,8 +1,7 @@ -OpenACS 4 Security Notes

          OpenACS 4 Security Notes

          -by Richard Li
          +OpenACS 4 Security Notes

          OpenACS 4 Security Notes

          By Richard Li

          OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

          +

          The security system was designed for security. Thus, decisions requiring trade-offs between ease-of-use and security tend to result in a system that may not be as easy to use but is more secure. Index: openacs-4/packages/acs-core-docs/www/security-requirements.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/security-requirements.html,v diff -u -r1.15 -r1.15.2.1 --- openacs-4/packages/acs-core-docs/www/security-requirements.html 11 Nov 2003 10:28:27 -0000 1.15 +++ openacs-4/packages/acs-core-docs/www/security-requirements.html 21 Nov 2003 11:14:10 -0000 1.15.2.1 @@ -1,8 +1,7 @@ -OpenACS 4 Security Requirements

          OpenACS 4 Security Requirements

          -by Richard Li
          +OpenACS 4 Security Requirements

          OpenACS 4 Security Requirements

          By Richard Li

          OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

          Introduction

          +

          Introduction

          This document lists the requirements for the security system for the OpenACS.

          Vision Statement

          Virtually all web sites support personalized content based on user identity. Index: openacs-4/packages/acs-core-docs/www/subsites-design.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/subsites-design.html,v diff -u -r1.16 -r1.16.2.1 --- openacs-4/packages/acs-core-docs/www/subsites-design.html 11 Nov 2003 12:54:57 -0000 1.16 +++ openacs-4/packages/acs-core-docs/www/subsites-design.html 21 Nov 2003 11:14:10 -0000 1.16.2.1 @@ -1,14 +1,13 @@ -OpenACS 4 Subsites Design Document

          OpenACS 4 Subsites Design Document

          -by Rafael H. Schloming
          +OpenACS 4 Subsites Design Document

          OpenACS 4 Subsites Design Document

          By Rafael H. Schloming

          OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

          *Note* This document has not gone through the any of the +

          *Note* This document has not gone through the any of the required QA process yet. It is being tagged as stable due to high demand.

          Introduction

          An OpenACS 4 subsite is a managed suite of applications that work together for a particular user community. This definition covers a very broad range of requirements: from a Geocities style homepage where a user can install whatever available application he wants (e.g. a single user could have their -own news and bboard), to a highly structured project subsite with multiple +own news and forums), to a highly structured project subsite with multiple interdependent applications. Thus, flexibility in application deployment is the overarching philosophy of subsites.

          Meeting such broad requirements of flexibility demands architecture-level support, i.e. very low level support from the core OpenACS 4 data model. For @@ -209,4 +208,4 @@ a particular configuration of site nodes/packages. As we build more fundamental applications that can be applied in more general areas, this feature will become more and more in demand since more problems will be -solvable by configuration instead of coding.

          View comments on this page at openacs.org
          +solvable by configuration instead of coding.

          View comments on this page at openacs.org
          Index: openacs-4/packages/acs-core-docs/www/subsites-requirements.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/subsites-requirements.html,v diff -u -r1.15 -r1.15.2.1 --- openacs-4/packages/acs-core-docs/www/subsites-requirements.html 11 Nov 2003 10:28:27 -0000 1.15 +++ openacs-4/packages/acs-core-docs/www/subsites-requirements.html 21 Nov 2003 11:14:10 -0000 1.15.2.1 @@ -1,8 +1,7 @@ -OpenACS 4 Subsites Requirements

          OpenACS 4 Subsites Requirements

          -by Rafael H. Schloming and Dennis Gregorovic
          +OpenACS 4 Subsites Requirements

          OpenACS 4 Subsites Requirements

          By Rafael H. Schloming and Dennis Gregorovic

          OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

          Introduction

          The following is a requirements document for OpenACS 4 Subsites, part of the +

          Introduction

          The following is a requirements document for OpenACS 4 Subsites, part of the OpenACS 4 Kernel. The Subsites system allows one OpenACS server instance to serve multiple user communities, by enabling the suite of available OpenACS applications to be customized for defined user communities.

          Vision Statement

          Many online communities are also collections of discrete subcommunities, @@ -26,20 +25,20 @@ users:

          1. Package programmers (referred to as 'the programmer') must develop subcommunity-aware applications.

          2. Site administrators (referred to as 'the administrator') use subsites to provide tailored "virtual websites" to different -subcommunities.

          Joe Programmer is working on the bboard package and wants to make it +subcommunities.

        Joe Programmer is working on the forum package and wants to make it subsite-aware. Using [ad_conn package_id], Joe adds code that only displays -bboard messages associated with the current package instance. Joe is happy to +forum messages associated with the current package instance. Joe is happy to realize that ad_parameter is already smart enough to return configuration parameters for the current package instance, and so he has to do no extra work to tailor configuration parameters to the current subsite.

        Jane Admin maintains www.company.com. She learns of Joe's work and -would like to set up individual bboards for the Boston and Austin offices of +would like to set up individual forums for the Boston and Austin offices of her company. The first thing she does is use the APM to install the new -bboard package.

        Next, Jane uses the Subsite UI to create subsites for the Boston and -Austin offices. Then Jane uses the Subsite UI to create bboards for each -office.

        Now, the Boston office employees have their own bboard at -http://www.company.com/offices/boston/bboard, and similarly for the Austin +forum package.

        Next, Jane uses the Subsite UI to create subsites for the Boston and +Austin offices. Then Jane uses the Subsite UI to create forums for each +office.

        Now, the Boston office employees have their own forum at +http://www.company.com/offices/boston/forum, and similarly for the Austin office. At this point, the Boston and Austin office admins can customize the -configurations for each of their bboards, or they can just use the +configurations for each of their forums, or they can just use the defaults.

      Related Links

      Requirements: Programmer's API

      A subsite API is required for programmers to ensure their packages are subsite-aware. The following functions should be sufficient for this:

      10.10.0 Package creation

      The system must provide an API call to create a package, and it must be possible for the context (to which the package belongs) to be specified.

      10.20.0 Package deletion

      The system must provide an API call to delete a package and all related Index: openacs-4/packages/acs-core-docs/www/subsites.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/subsites.html,v diff -u -r1.22.2.1 -r1.22.2.2 --- openacs-4/packages/acs-core-docs/www/subsites.html 14 Nov 2003 09:43:46 -0000 1.22.2.1 +++ openacs-4/packages/acs-core-docs/www/subsites.html 21 Nov 2003 11:14:10 -0000 1.22.2.2 @@ -1,21 +1,18 @@ -Writing OpenACS 5.0.0b1 Application Pages

      Writing OpenACS 5.0.0b1 Application Pages

      -By Rafael H. Schloming -and Pete Su -


      +Writing OpenACS 5.0.0b2 Application Pages

      Writing OpenACS 5.0.0b2 Application Pages

      By Rafael H. Schloming and Pete Su

      OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

      Overview

      +

      Overview

      In this document, we'll examine the user interface pages of the Notes application in more detail, covering two separate aspects of page -development in OpenACS 5.0.0b1. First, we'll talk about the code needed to make +development in OpenACS 5.0.0b2. First, we'll talk about the code needed to make your pages aware of which application instance they are running in. Second, we'll talk about using the form builder to develop -form-based user interfaces in OpenACS 5.0.0b1. While these seem like unrelated +form-based user interfaces in OpenACS 5.0.0b2. While these seem like unrelated topics, they both come up in the example page that we are going to look at, so it makes sense to address them at the same time.

      Application Instances and Subsites

      -As you will recall from the packages tutorial, the Request -Processor (RP) and Package Manager (APM) in OpenACS 5.0.0b1 allow site +As you will recall from the packages tutorial, the Request +Processor (RP) and Package Manager (APM) in OpenACS 5.0.0b2 allow site administrators to define an arbitrary mapping from URLs in the site to objects representing content. These objects may represent single files, or entire applications. The APM uses the site map to map @@ -256,15 +253,15 @@ visible to that user. The end result is a site where users can come and write notes to themselves.

      -This is a good example of the leverage available in the OpenACS 5.0.0b1 +This is a good example of the leverage available in the OpenACS 5.0.0b2 system. The code that we have written for Notes is not at all more complex than a similar application without access control or site map awareness. By adding a small amount of code, we have taken a small, simple, and special purpose application to something that has the potential to be a very useful, general-purpose tool, complete with multi-user features, access control, and centralized administration.

      Summary

      -In OpenACS 5.0.0b1, application pages and scripts can be aware of the package +In OpenACS 5.0.0b2, application pages and scripts can be aware of the package instance, or subsite in which they are executing. This is a powerful general purpose mechanism that can be used to structure web services in very flexible ways. @@ -276,4 +273,4 @@

      We also saw how to use the templating system's forms API in a simple way, to create forms based pages with minimal duplication of code. -

      ($Id$)
      View comments on this page at openacs.org
      +

      ($Id$)
      View comments on this page at openacs.org
      Index: openacs-4/packages/acs-core-docs/www/tcl-doc.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tcl-doc.html,v diff -u -r1.23.2.1 -r1.23.2.2 --- openacs-4/packages/acs-core-docs/www/tcl-doc.html 14 Nov 2003 09:43:46 -0000 1.23.2.1 +++ openacs-4/packages/acs-core-docs/www/tcl-doc.html 21 Nov 2003 11:14:10 -0000 1.23.2.2 @@ -1,9 +1,7 @@ -Documenting Tcl Files: Page Contracts and Libraries

      Documenting Tcl Files: Page Contracts and Libraries

      -by Jon Salz on 3 July 2000 -
      +Documenting Tcl Files: Page Contracts and Libraries

      Documenting Tcl Files: Page Contracts and Libraries

      By Jon Salz on 3 July 2000

      OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

      • Tcl procedures: /packages/acs-kernel/tcl-documentation-procs.tcl

      The Big Picture

      In versions of the OpenACS prior to 3.4, the standard +

      The Big Picture

      In versions of the OpenACS prior to 3.4, the standard place to document Tcl files (both Tcl pages and Tcl library files) was in a comment at the top of the file:

       #
      Index: openacs-4/packages/acs-core-docs/www/templates.html
      ===================================================================
      RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/templates.html,v
      diff -u -r1.22.2.1 -r1.22.2.2
      --- openacs-4/packages/acs-core-docs/www/templates.html	14 Nov 2003 09:43:46 -0000	1.22.2.1
      +++ openacs-4/packages/acs-core-docs/www/templates.html	21 Nov 2003 11:14:10 -0000	1.22.2.2
      @@ -1,8 +1,8 @@
      -Using Templates in OpenACS 5.0.0b1

      Using Templates in OpenACS 5.0.0b1

      By Pete Su


      +Using Templates in OpenACS 5.0.0b2

      Using Templates in OpenACS 5.0.0b2

      By Pete Su

      OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

      Overview

      -The OpenACS 5.0.0b1 Template System (ATS) is designed to allow developers to +

      Overview

      +The OpenACS 5.0.0b2 Template System (ATS) is designed to allow developers to cleanly separate application logic from display logic. The intent is to have all of the logic related to manipulating the database and other application state data in one @@ -159,7 +159,7 @@

      Summary

      Templates separate application logic from display logic by requiring the developer to write pages in two stages, one file for database -queries and application logic, and another for display. In OpenACS 5.0.0b1, the +queries and application logic, and another for display. In OpenACS 5.0.0b2, the logic part of the page is just a .tcl that sets up data sources that are used by the display part of the page. The display part of the page is an .adp file with some Index: openacs-4/packages/acs-core-docs/www/tutorial-advanced.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-advanced.html,v diff -u -r1.14.2.1 -r1.14.2.2 --- openacs-4/packages/acs-core-docs/www/tutorial-advanced.html 14 Nov 2003 09:43:46 -0000 1.14.2.1 +++ openacs-4/packages/acs-core-docs/www/tutorial-advanced.html 21 Nov 2003 11:14:10 -0000 1.14.2.2 @@ -1,16 +1,15 @@ -Advanced Topics

      Advanced Topics

      Important

      This section is a work in progress.

      - by Joel Aufrecht
      +Advanced Topics

      Advanced Topics

      Important

      This section is a work in progress.

      by Joel Aufrecht

      OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

      Overview

      This tutorial covers topics which are not essential to +

      Overview

      This tutorial covers topics which are not essential to creating a minimal working package. Each section can be used independently of all of the others; all sections assume that you've completed the basic tutorial.

      • How to enforce security so that users can't change other users records

      • How to use the content management tables so that ... what?

      • How to change the default stylesheets for Form Builder HTML forms.

      • How to make your package searchable with OpenFTS/Oracle

      • How to make your package send email notifications

      • How to prepare pagelets for inclusion in other pages

      • How and when to put procedures in a tcl procedure library

      • How to add general_comments to your pages

      • More on ad_form - data validation, other stuff. (plan to draw from Jon Griffin's doc)

      • How and when to implement caching

      • partialquery in xql

      • How to use the html/text entry widget to get the - "does this look right" confirm page

      • APM package dependencies

      Write the Requirements and Design Specs

      It's time to document. For the tutorial we'll use + "does this look right" confirm page

    • APM package dependencies

    Write the Requirements and Design Specs

    It's time to document. For the tutorial we'll use pre-written documentation. When creating a package from scratch, start by copying the documentation template from /var/lib/aolserver/openacs-dev/packages/acs-core-docs/xml/docs/xml/package-documentation-template.xml @@ -60,7 +59,7 @@ Writing bi01.html for bibliography Writing index.html for book [service0@yourserver xml]$

    Verify that the documentation was generated and reflects - your changes by browsing to http://yoursite:8000/samplenote/doc

    Add the new package to CVS

    Before you do any more work, make sure that your work is + your changes by browsing to http://yoursite:8000/samplenote/doc

    Add the new package to CVS

    Before you do any more work, make sure that your work is protected by putting it all into cvs. The cvs add command is not recursive, so you'll have to traverse the directory tree manually and add as you go. (More on @@ -120,7 +119,7 @@ initial revision: 1.1 done (many lines omitted) -[service0@yourserver samplenote]$

    Delete with confirmation

    We need a way to delete records. We'll create a +[service0@yourserver samplenote]$

    Delete with confirmation

    We need a way to delete records. We'll create a recursive confirmation page.

    Add this column to the table_def in index.tcl

    {delete "" {} {<td><a href="note-delete?note_id=$note_id">Delete</a></td>}}

    Create the delete confirmation/execution page.

    [service0@yourserver www]$ emacs note-delete.tcl
    ad_page_contract {
         A page that gets confirmation and then delete notes.
     
    @@ -180,7 +179,7 @@
     <formtemplate id="note-del-confirm"></formtemplate>
     </form>

    The ADP is very simple. The formtemplate tag outputs the HTML -form generated by the ad_form command with the matching name. Test it by adding the new files in the APM and then deleting a few samplenotes.

    General_comments

    You can track comments for any ACS Object. Here we'll track +form generated by the ad_form command with the matching name. Test it by adding the new files in the APM and then deleting a few samplenotes.

    General_comments

    You can track comments for any ACS Object. Here we'll track comments for notes. On the notes.tcl/adp pair, which is used to display individual notes, we want to put a link to add comments at the bottom of the screen. If there are any comments, we want to @@ -201,13 +200,13 @@ there are comments. Then you pass the note id, which is also the acs_object id.

    We put our two new variables in the notes.adp page.

    <a href="@comment_add_url@">Add a comment</a>
    -@comments_html@

    Prepare the package for distribution.

    Browse to the package manager. Click on +@comments_html@

    Prepare the package for distribution.

    Browse to the package manager. Click on tutorialapp.

    Click on Generate a distribution file for this package from the filesystem.

    Click on the file size (37.1KB) after the label Distribution File: and save the file to - /tmp.

    + /tmp.

    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/tutorial-database.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-database.html,v diff -u -r1.14.2.1 -r1.14.2.2 --- openacs-4/packages/acs-core-docs/www/tutorial-database.html 14 Nov 2003 09:43:46 -0000 1.14.2.1 +++ openacs-4/packages/acs-core-docs/www/tutorial-database.html 21 Nov 2003 11:14:11 -0000 1.14.2.2 @@ -1,8 +1,7 @@ -Setting Up Database Objects

    Setting Up Database Objects

    - by Joel Aufrecht
    +Setting Up Database Objects

    Setting Up Database Objects

    by Joel Aufrecht

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

    Code the data model

    We create all database objects with scripts in the +

    Code the data model

    We create all database objects with scripts in the myfirstpackage/sql/ directory. All database scripts are database-specific and are thus in either the myfirstpackage/sql/oracle or @@ -37,7 +36,7 @@ @author which will be picked up by the API browser. The string $Id$ will automatically be - expanded when the file is checked in to cvs.

    [service0@yourserver postgresql]$ emacs myfirstpackage-create.sql

    Paste this into the file and save and close.

    Figure�7.2.�Database Creation Script - master create file

    --
    +      expanded when the file is checked in to cvs.

    [service0@yourserver postgresql]$ emacs myfirstpackage-create.sql

    Paste this into the file and save and close.

    Figure�7.2.�Database Creation Script - master create file

    --
     -- @author rhs@mit.edu
     -- @cvs-id $Id$
     --
    @@ -61,7 +60,7 @@
         object.  Notice the use of "mfp."  This token, derived from "My
         First Package," ensures that our object is unlikely to conflict
         with objects from other packages.

    Create a database file to drop everything if the package - is uninstalled.

    [service0@yourserver postgresql]$ emacs myfirstpackage-drop.sql

    Figure�7.3.�Database deletion script

    -- packages/myfirstpackage/sql/myfirstpackage-drop.sql
    +        is uninstalled.

    [service0@yourserver postgresql]$ emacs myfirstpackage-drop.sql

    Figure�7.3.�Database deletion script

    -- packages/myfirstpackage/sql/myfirstpackage-drop.sql
     -- drop script
     --
     -- @author joel@aufrecht.org
    Index: openacs-4/packages/acs-core-docs/www/tutorial-debug.html
    ===================================================================
    RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-debug.html,v
    diff -u -r1.14.2.1 -r1.14.2.2
    --- openacs-4/packages/acs-core-docs/www/tutorial-debug.html	14 Nov 2003 09:43:46 -0000	1.14.2.1
    +++ openacs-4/packages/acs-core-docs/www/tutorial-debug.html	21 Nov 2003 11:14:11 -0000	1.14.2.2
    @@ -1,8 +1,7 @@
    -Debugging and Automated Testing

    Debugging and Automated Testing

    Important

    This section is a work in progress.

    - by Joel Aufrecht
    +Debugging and Automated Testing

    Debugging and Automated Testing

    Important

    This section is a work in progress.

    by Joel Aufrecht

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

    Debugging

    Developer Support.�The Developer Support package adds several goodies: debug +

    Debugging

    Developer Support.�The Developer Support package adds several goodies: debug information for every page; the ability to log comments to the page instead of the error log, and fast user switching so that you can test pages as anonymous and as dummy users without logging @@ -24,17 +23,18 @@ ?�searches�backward�
    /�searches�forward.�
    ����������

    -

    Manual testing

    Make a list of basic tests to make sure it works

    Test NumActionExpected Result
    001Browse to the index page while not logged in and +

    Manual testing

    Make a list of basic tests to make sure it works

    Test NumActionExpected Result
    001Browse to the index page while not logged in and while one or more notes exist.No edit or delete or add links should appear.
    002Browse to the index page while logged in. An Edit link should appear. Click on it. Fill out the form and click Submit.The text added in the form should be visible on the index page.

    Other things to test: try to delete someone else's note. Try to delete your own note. Edit your own note. - Search for a note.

    Write automated tests

    - by Simon Carstensen
    + Search for a note.

    Write automated tests

    by Simon Carstensen

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

    It seems to me that a lot of +

    + +It seems to me that a lot of people have been asking for some guidelines on how to write automated tests. I've done several tests by now and have found the process to be extremely easy and useful. It's a joy to work with automated testing @@ -126,4 +126,4 @@ aa_false "is this true?" [empty_string $foo]

    There a number of other useful procs and I will encourage you to look at the few packages for which tests have already been implemented. -That is perhaps the best documentation we have so far.

    View comments on this page at openacs.org
    +That is perhaps the best documentation we have so far. See also the section called “Automated Testing”.

    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/tutorial-newpackage.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-newpackage.html,v diff -u -r1.14.2.1 -r1.14.2.2 --- openacs-4/packages/acs-core-docs/www/tutorial-newpackage.html 14 Nov 2003 09:43:46 -0000 1.14.2.1 +++ openacs-4/packages/acs-core-docs/www/tutorial-newpackage.html 21 Nov 2003 11:14:11 -0000 1.14.2.2 @@ -1,13 +1,12 @@ -Creating a Package

    Creating a Package

    - by Joel Aufrecht
    +Creating a Package

    Creating a Package

    by Joel Aufrecht

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

    The intended page map

    ...

    Overview

    To start developing new code in OpenACS, we build a new +

    The intended page map

    Overview

    To start developing new code in OpenACS, we build a new package. A package is a a discrete collection of web pages, tcl code, and database tables and procedures. A package - with user interface is called an application; a package which provides + with user interface is called an application; a package which provides functions to other packages and has no direct interface, a - service. A package + service. A package can be installed, upgraded, and removed. It communicates with other packages through an API. This chapter walks you through the minimum steps to create a useful package, including writing @@ -22,11 +21,11 @@

    In this tutorial, we will make an application package for displaying a list of text notes. -

    Before you begin

    You will need:

    • A computer with a working installation of +

    Before you begin

    You will need:

    • A computer with a working installation of OpenACS. If you don't have this, see Chapter�2, Installation Overview.

    • Example files, which are included in the -standard OpenACS 5.0.0b1 distribution. -

    Figure�7.1.�Assumptions in this section

    Fully qualified domain name of your serveryourserver.test
    URL of your serverhttp://yourserver.test:8000
    Name of development accountservice0
    New Package keymyfirstpackage

    Use the APM to initialize a new package

    We use the ACS Package Manager (APM) to add, remove, and +standard OpenACS 5.0.0b2 distribution. +

    Figure�7.1.�Assumptions in this section

    Fully qualified domain name of your serveryourserver.test
    URL of your serverhttp://yourserver.test:8000
    Name of development accountservice0
    New Package keymyfirstpackage

    Use the APM to initialize a new package

    We use the ACS Package Manager (APM) to add, remove, and upgrade packages. It handles package meta-data, such as lists of files that belong in the package. Each package is uniquely identified by a package key. To start developing a new @@ -55,7 +54,7 @@

    This creates a package rooted at /var/lib/aolserver/service0/packages/myfirstpackage. This is the "home directory" of our new package, and all - files in the package will be within this directory.

    Mount the package in the site map

    In order to see your work in progress, you must create a + files in the package will be within this directory.

    Mount the package in the site map

    In order to see your work in progress, you must create a map between the URL space of incoming requests and the package. You do this by mounting the package in the Site Map. This creates a link between the incoming URL and an Index: openacs-4/packages/acs-core-docs/www/tutorial-pages.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-pages.html,v diff -u -r1.14.2.1 -r1.14.2.2 --- openacs-4/packages/acs-core-docs/www/tutorial-pages.html 14 Nov 2003 09:43:47 -0000 1.14.2.1 +++ openacs-4/packages/acs-core-docs/www/tutorial-pages.html 21 Nov 2003 11:14:11 -0000 1.14.2.2 @@ -1,9 +1,8 @@ -Creating Web Pages

    Creating Web Pages

    - by Joel Aufrecht
    +Creating Web Pages

    Creating Web Pages

    by Joel Aufrecht

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

    Install some API

    As a workaround for missing content-repository functionality, copy a provided file into the directory for tcl files:

    -    
    cp /var/lib/aolserver/service1/packages/acs-core-docs/www/files/note-procs.tcl /var/lib/aolserver/service1/packages/myfirstpackage/tcl/

    To make this file take effect, go to the APM and choose "Reload all files" for "MyFirstPackage".

    Build the "Index" page

    Each user-visible page in your package has, typically, +

    Install some API

    As a workaround for missing content-repository functionality, copy a provided file into the directory for tcl files:

    +    
    cp /var/lib/aolserver/service1/packages/acs-core-docs/www/files/note-procs.tcl /var/lib/aolserver/service1/packages/myfirstpackage/tcl/

    To make this file take effect, go to the APM and choose "Reload all files" for "MyFirstPackage".

    Build the "Index" page

    Each user-visible page in your package has, typically, three parts. The tcl file holds the procedural logic for the page, including TCL and database-independent SQL code, and does things like Index: openacs-4/packages/acs-core-docs/www/tutorial.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial.html,v diff -u -r1.7 -r1.7.2.1 --- openacs-4/packages/acs-core-docs/www/tutorial.html 11 Nov 2003 10:28:27 -0000 1.7 +++ openacs-4/packages/acs-core-docs/www/tutorial.html 21 Nov 2003 11:14:11 -0000 1.7.2.1 @@ -1 +1 @@ -Chapter�7.�Development Tutorial

    View comments on this page at openacs.org
    +Chapter�7.�Development Tutorial
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/unix-installation.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/unix-installation.html,v diff -u -r1.7.2.1 -r1.7.2.2 --- openacs-4/packages/acs-core-docs/www/unix-installation.html 14 Nov 2003 09:43:47 -0000 1.7.2.1 +++ openacs-4/packages/acs-core-docs/www/unix-installation.html 21 Nov 2003 11:14:11 -0000 1.7.2.2 @@ -1,12 +1,11 @@ -Install Unix-like system and supporting software

    Install Unix-like system and supporting software

    - by Joel Aufrecht
    +Install Unix-like system and supporting software

    Install Unix-like system and supporting software

    by Joel Aufrecht

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

    a Unix-like system

    You will need a computer running a unix-like system with the following software installed:

    • tdom

    • tcl

    • gmake and the compile and build +

    a Unix-like system

    You will need a computer running a unix-like system with the following software installed:

    and optionally these programs, which are included in most distributions:

    To install a machine to the specifications of the Reference Platform, do the walkthrough of the - Red Hat 8.0 Install for OpenACS.

    ($Id$)
    View comments on this page at openacs.org
    + Red Hat 8.0 Install for OpenACS.

    ($Id$)
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/upgrade-detail.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/Attic/upgrade-detail.html,v diff -u -r1.16.2.1 -r1.16.2.2 --- openacs-4/packages/acs-core-docs/www/upgrade-detail.html 14 Nov 2003 09:43:47 -0000 1.16.2.1 +++ openacs-4/packages/acs-core-docs/www/upgrade-detail.html 21 Nov 2003 11:14:11 -0000 1.16.2.2 @@ -1,21 +1,17 @@ -Support for upgrades.

    Support for upgrades.

    - by Joel Aufrecht
    +Upgrading

    Upgrading

    by Joel Aufrecht

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

    Starting with Version 4.5, all OpenACS core packages support +

    Overview

    Starting with Version 4.5, all OpenACS core packages support automatic upgrade. That means that, if you have OpenACS 4.5 or better, you should always be able to upgrade all of your core packages automatically. If you haven't changed anything, no manual intervention should be required. If you are running - OpenACS prior to 4.5, upgrading will require manual effort.

    Checklist

    The required platform for OpenACS 4.6 is the same as + OpenACS prior to 4.5, upgrading will require manual effort.

    It's always a good idea to precede an upgrade attempt with a snapshot backup.

    OpenACS consists of files and a database schema. The files + in a new tarball include database upgrade scripts. To start the + upgrade, replace your existing files with the new files and then browse to the APM, which will detect the new packages and offer to run the appropriate database upgrade scripts. After restarting the server again, the upgrade is + complete.

    Figure�5.1.�Assumptions in this section

    name of OpenACS usernsadmin
    OpenACS server nameopenacs-dev
    Root of OpenACS file tree/web/openacs-dev
    Database backup directory/backup/openacs/

    Upgrading 4.6.3 to 5.0

    Current working notes in Forum OpenACS Development: 4.6.3 upgrade to 5-HEAD: final results.

    Upgrading 4.5 to 4.6

    The required platform for OpenACS 4.6 is the same as 4.5, with the excepion of OpenFTS. You now need OpenFTS 0.3.2, not 0.2. - OpenACS 4.6 does not support PostGreSQL 7.3.

    Overview

    OpenACS consists of files and a database schema. The files - in the OpenACS 4.6 tarball include database upgrade scripts. To start the - upgrade, replace your existing files with the new files and - then restart the server. Then, browse to the APM, which will - detect the new packages and offer to run the appropriate database upgrade - scripts. After restarting the server again, the upgrade is - complete.

    Figure�5.1.�Assumptions in this section

    name of OpenACS usernsadmin
    OpenACS server nameopenacs-dev
    Root of OpenACS file tree/web/openacs-dev
    Database backup directory/backup/openacs/

    Upgrading on Linux/Unix

    1. Make a Backup.�Back up the database and file system (see the section called “Snapshot backup and recovery”).

    2. OPTIONAL: Upgrade OpenFTS.�OpenACS Full Text Search requires several pieces: the OpenFTS code, some database functions, and the OpenFTS Engine. If you have OpenFTS 0.2, you'll need to upgrade to to OpenFTS 0.3.2. This is backwards-compatible - + OpenACS 4.6 does not support PostGreSQL 7.3.

      Upgrade Sequence

      1. Make a Backup.�Back up the database and file system (see the section called “Snapshot backup and recovery”).

      2. OPTIONAL: Upgrade OpenFTS.�OpenACS Full Text Search requires several pieces: the OpenFTS code, some database functions, and the OpenFTS Engine. If you have OpenFTS 0.2, you'll need to upgrade to to OpenFTS 0.3.2. This is backwards-compatible - completing this step will not break a working OpenFTS Engine from 4.5.

        1. Uninstall the old OpenFTS Engine

          1. Browse to http://yourserver/openfts.

          2. Click Administration.

          3. Click Drop OpenFTS Engine

        2. Build and install the new OpenFTS driver and supporting tcl procedures. (This section of shell code is not fully documented; please exercise care.)

          cd /usr/local/src/
          @@ -49,7 +45,9 @@
           
          su - nsadmin
           psql openacs-dev -f /usr/local/pgsql/share/contrib/openfts.sql
           psql openacs-dev -f /usr/local/src/postgresql-7.2.3/contrib/tsearch/tsearch.sql
          -exit
      3. Stop the server.�

        [root@localhost root]# svc -d /service/openacs-dev
      4. Upgrade the file tree.�If you are using CVS, you will unpack the OpenACS 4.6 tarball into a working directory and then import that directory into cvs. If you have changed files in the core packages, cvs will attempt to merge your changes. You may have to manually merge some conflicts. When that's finished, you can update your normal development checkout directory and the new files will appear. If you aren't using CVS, you can unpack the tarball on top of your existing tree, but any customizations you've made to the kernel or core packages will be erased.

        • Upgrading files without CVS.�Unpack the tarball into a new directory and copy its contents on top of your working directory.

          [root@localhost root]# su - nsadmin
          +exit
    3. + Stop the server +

      [root@localhost root]# svc -d /service/openacs-dev
    4. Upgrade the file tree.�If you are using CVS, you will unpack the OpenACS 4.6 tarball into a working directory and then import that directory into cvs. If you have changed files in the core packages, cvs will attempt to merge your changes. You may have to manually merge some conflicts. When that's finished, you can update your normal development checkout directory and the new files will appear. If you aren't using CVS, you can unpack the tarball on top of your existing tree, but any customizations you've made to the kernel or core packages will be erased.

      • Upgrading files without CVS.�Unpack the tarball into a new directory and copy its contents on top of your working directory.

        [root@localhost root]# su - nsadmin
         [nsadmin@localhost aolserver]$ cd /web
         [nsadmin@localhost web]$ tar xzf /tmp/openacs-4-6.tgz
         [nsadmin@localhost web]$ cp -r openacs-4-6/* openacs-4
        @@ -59,7 +57,9 @@
         cd /web
         tar xzf /tmp/openacs-4-6.tgz
         cp -r openacs-4-6/* openacs-4
        -exit
      • Upgrading files with CVS.�

        1. Unpack the new files into a working directory.

          [root@localhost root]# su - nsadmin
          +exit
        2. + Upgrading files with CVS +

          1. Unpack the new files into a working directory.

            [root@localhost root]# su - nsadmin
             [nsadmin@localhost aolserver]$ cd /tmp
             [nsadmin@localhost tmp]$ tar xzv openacs-4-6.tgz
             [nsadmin@localhost tmp]$ cd openacs-4.6
            @@ -89,11 +89,13 @@
             [root@localhost root]#
             
            cd /web/openacs-dev
             cvs up -Pd
            -exit
    5. Start the server.�

      [root@localhost root]# svc -u /service/openacs-dev
    6. Use APM to upgrade the database.�

      1. Browse to the package manager, http://yourserver/acs-admin/apm.

      2. Click Install packages.

      3. Select the packages you want to install. This should +exit

  • + Start the server +

    [root@localhost root]# svc -u /service/openacs-dev
  • Use APM to upgrade the database.�

    1. Browse to the package manager, http://yourserver/acs-admin/apm.

    2. Click Install packages.

    3. Select the packages you want to install. This should be everything that says upgrade, plus any new packages you want. It's safest to upgrade the kernel by itself, and then come back and upgrade the rest of the - desired packages in a second pass.

    4. On the next screen, click Install Packages

    5. When prompted, restart the server:

      [root@localhost root]# restart-aolserver openacs-dev
    6. Wait a minute, then browse to the package manager, http://yourserver/acs-admin/apm.

    7. Check that the kernel upgrade worked by clicking All and making sure that acs-kernel version is 5.0.0b1.

  • OPTIONAL: Install the new OpenFTS Engine.�If you want to upgrade the OpenFTS Engine, do these + desired packages in a second pass.

  • On the next screen, click Install Packages

  • When prompted, restart the server:

    [root@localhost root]# restart-aolserver openacs-dev
  • Wait a minute, then browse to the package manager, http://yourserver/acs-admin/apm.

  • Check that the kernel upgrade worked by clicking All and making sure that acs-kernel version is 5.0.0b2.

  • OPTIONAL: Install the new OpenFTS Engine.�If you want to upgrade the OpenFTS Engine, do these steps. (You must have already upgraded the OpenFTS driver to - 0.3.2.)

    1. Browse to http://yourserver/admin/site-map

    2. On the openfts line, click on set parameters.

    3. Change the value of openfts_tcl_src_path from /usr/local/src/Search-OpenFTS-tcl-0.2/ to /usr/local/src/Search-OpenFTS-tcl-0.3.2/

    4. Click Set Parameters

    5. [root@localhost root]# restart-aolserver openacs-dev
    6. Browse to http://yourserver/openfts

    7. Click Administration.

    8. Click Initialize OpenFTS Engine

  • Rollback.�If anything goes wrong, roll back to the backup snapshot.

  • ($Id$)
    View comments on this page at openacs.org
    + 0.3.2.)

    1. Browse to http://yourserver/admin/site-map

    2. On the openfts line, click on set parameters.

    3. Change the value of openfts_tcl_src_path from /usr/local/src/Search-OpenFTS-tcl-0.2/ to /usr/local/src/Search-OpenFTS-tcl-0.3.2/

    4. Click Set Parameters

    5. [root@localhost root]# restart-aolserver openacs-dev
    6. Browse to http://yourserver/openfts

    7. Click Administration.

    8. Click Initialize OpenFTS Engine

  • Rollback.�If anything goes wrong, roll back to the backup snapshot.

  • ($Id$)
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/upgrade.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/upgrade.html,v diff -u -r1.10 -r1.10.2.1 --- openacs-4/packages/acs-core-docs/www/upgrade.html 11 Nov 2003 10:28:27 -0000 1.10 +++ openacs-4/packages/acs-core-docs/www/upgrade.html 21 Nov 2003 11:14:11 -0000 1.10.2.1 @@ -1 +1 @@ -Chapter�5.�Upgrading

    Chapter�5.�Upgrading

    Table of Contents

    Support for upgrades.
    View comments on this page at openacs.org
    +Chapter�5.�Upgrading

    Chapter�5.�Upgrading

    Table of Contents

    Upgrading
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/win2k-installation.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/win2k-installation.html,v diff -u -r1.22.2.1 -r1.22.2.2 --- openacs-4/packages/acs-core-docs/www/win2k-installation.html 14 Nov 2003 09:43:47 -0000 1.22.2.1 +++ openacs-4/packages/acs-core-docs/www/win2k-installation.html 21 Nov 2003 11:14:11 -0000 1.22.2.2 @@ -1,13 +1,15 @@ -OpenACS Installation Guide for Windows2000

    OpenACS Installation Guide for Windows2000

    By Matthew Burke and Curtis Galloway


    +OpenACS Installation Guide for Windows2000

    OpenACS Installation Guide for Windows2000

    by Matthew Burke and Curtis Galloway

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

    NOTE: These instructions were - valid for ACS v4, but have not been tested with OpenACS. Currently - (8/2002), the best option to get OpenACS 5.0.0b1 running on Windows +

    NOTE: These instructions were + valid for ACS v4, but have not been tested with OpenACS and the ArsDigita binary + distributions are no longer available. + Currently + (10/2003), the best option to get OpenACS 5.0.0b2 running on Windows is to use VMware and John Sequeira's Oasis VM distribution -

    For more information on Oracle configuration look at http://photo.net/wtr/oracle-tips - or search the Web/db Q&A - Forum. One other note: the "nuke a user" admin page and + or search the OpenACS forums. One other note: the "nuke a user" admin page and Intermedia won't run unless you set open_cursors = 500 - for your database. For more information on Oracle configuration look at - http://photo.net/wtr/oracle-tips.html - or search the Web/db Q&A - Forum. One other note: the "nuke a user" admin page and - Intermedia won't run unless you set open_cursors = 500 for your database.

    The ArsDigita binary installation

    Extract the ArsDigita AOLserver distribution onto the C: drive into the default aol30 directory. You can install it @@ -195,7 +191,7 @@

    • /doc (or at least /doc/sql/ since some AOLserver configurations will allow a user to execute SQL files)

    • /admin

    • any private admin dirs for a module you might have written that are not underneath the /admin directory

    Adding Yourself as a User and Making Yourself a Sysadmin

    - The ArsDigita Community System will define two users: system and + OpenACS will define two users: system and anonymous. It will also define a user group of system administrators. You'll want to add yourself as a user (at /register/ ) and then add yourself as as member of the site-wide administration group. Start by @@ -253,4 +249,4 @@

    In the services control panel you should see two services: AOLserver-lintcollectors and AOLserver-iguanasdirect. -

    ($Id$)
    View comments on this page at openacs.org
    +

    ($Id$)
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/xml/index.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/xml/index.xml,v diff -u -r1.19.2.3 -r1.19.2.4 --- openacs-4/packages/acs-core-docs/www/xml/index.xml 19 Nov 2003 14:35:15 -0000 1.19.2.3 +++ openacs-4/packages/acs-core-docs/www/xml/index.xml 21 Nov 2003 11:13:17 -0000 1.19.2.4 @@ -256,7 +256,6 @@ Engineering Standards - Section missing @@ -281,7 +280,12 @@ Section missing - + +Section missing + + +Section missing + CVS Section missing @@ -407,10 +411,6 @@ Section missing - - Section missing - - Index: openacs-4/packages/acs-core-docs/www/xml/releasing-openacs.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/xml/releasing-openacs.xml,v diff -u -r1.5 -r1.5.2.1 --- openacs-4/packages/acs-core-docs/www/xml/releasing-openacs.xml 11 Nov 2003 12:55:01 -0000 1.5 +++ openacs-4/packages/acs-core-docs/www/xml/releasing-openacs.xml 21 Nov 2003 11:13:17 -0000 1.5.2.1 @@ -52,14 +52,14 @@ mkdir /tmp/tarball cd /tmp/tarball -cvs -d :pserver:anonymous@openacs.org:/cvsroot export -r openacs-5-0-0a1 -d openacs acs-core +cvs -d :pserver:anonymous@openacs.org:/cvsroot export -r openacs-5-0-0a1 acs-core +mv openacs-4 openacs Generate the tarball cd /tmp/tarball -rm -rf /tmp/tarball/openacs/CVS tar cz -f openacs-5.0.0a1.tar.gz openacs @@ -95,7 +95,7 @@ which packages are installed on setup, to the root location: -cp /tmp/dotlrn-tarball/openacs-4/packages/dotlrn/install.xml /tmp/dotlrn-tarball/openacs +cp /tmp/dotlrn-tarball/openacs/packages/dotlrn/install.xml /tmp/dotlrn-tarball/openacs @@ -104,7 +104,6 @@ Generate the tarball cd /tmp/tarball -rm -rf /tmp/tarball/openacs-4/CVS tar cz -f dotlrn-2.0.0a1.tar.gz openacs Index: openacs-4/packages/acs-core-docs/www/xml/variables.ent =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/xml/variables.ent,v diff -u -r1.4 -r1.4.2.1 --- openacs-4/packages/acs-core-docs/www/xml/variables.ent 11 Nov 2003 12:55:01 -0000 1.4 +++ openacs-4/packages/acs-core-docs/www/xml/variables.ent 21 Nov 2003 11:13:17 -0000 1.4.2.1 @@ -1,5 +1,5 @@ - - - + + + Index: openacs-4/packages/acs-core-docs/www/xml/developers-guide/tutorial-debug.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/xml/developers-guide/tutorial-debug.xml,v diff -u -r1.4.2.1 -r1.4.2.2 --- openacs-4/packages/acs-core-docs/www/xml/developers-guide/tutorial-debug.xml 19 Nov 2003 14:35:15 -0000 1.4.2.1 +++ openacs-4/packages/acs-core-docs/www/xml/developers-guide/tutorial-debug.xml 21 Nov 2003 11:13:17 -0000 1.4.2.2 @@ -202,7 +202,7 @@ There a number of other useful procs and I will encourage you to look at the few packages for which tests have already been implemented. -That is perhaps the best documentation we have so far. +That is perhaps the best documentation we have so far. See also . Fisheye: Tag 1.1 refers to a dead (removed) revision in file `openacs-4/packages/acs-core-docs/www/xml/engineering-standards/auto-testing.xml'. Fisheye: No comparison available. Pass `N' to diff? Index: openacs-4/packages/acs-core-docs/www/xml/install-guide/recovery.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/xml/install-guide/recovery.xml,v diff -u -r1.6.2.1 -r1.6.2.2 --- openacs-4/packages/acs-core-docs/www/xml/install-guide/recovery.xml 19 Nov 2003 14:35:16 -0000 1.6.2.1 +++ openacs-4/packages/acs-core-docs/www/xml/install-guide/recovery.xml 21 Nov 2003 11:13:17 -0000 1.6.2.2 @@ -1,6 +1,6 @@ %myvars; ]> @@ -10,7 +10,6 @@ By Don Baccus with additions by Joel Aufrecht - Backup Strategy @@ -20,63 +19,63 @@ - Store everything on a fault-tolerant disk array (RAID 1 or 5 - or better). - + Store everything on a fault-tolerant disk array (RAID 1 or 5 + or better). + - Use battery backup. - + Use battery backup. + - Use more reliable hardware, such as SCSI instead of IDE. - - + Use more reliable hardware, such as SCSI instead of IDE. + + - These steps improve the chances of successful recovery: - - - Store backups on a third disk on another controller - - - Store backups on a different computer on a different network - in a different physical location. (Compared to off-line - backup such as tapes and CDRs, on-line backup is faster and - more likely to succeed, but requires maintenance of another machine.) - - - Plan and configure for recovery from the beginning. - - - Test your recovery strategy from time to time. - - - Make it easy to maintain and test your recovery strategy, so - that you are more likely to do it. - - + These steps improve the chances of successful recovery: + + + Store backups on a third disk on another controller + + + Store backups on a different computer on a different network + in a different physical location. (Compared to off-line + backup such as tapes and CDRs, on-line backup is faster and + more likely to succeed, but requires maintenance of another machine.) + + + Plan and configure for recovery from the beginning. + + + Test your recovery strategy from time to time. + + + Make it easy to maintain and test your recovery strategy, so + that you are more likely to do it. + + - - OpenACS installations comprise files and database contents. - If you follow the reference install and put all files, - including configuration files, in - /var/lib/aolserver/service0/, - and back up the database nightly to a file in - /var/lib/aolserver/service0/database-backup, - then you can apply standard file-based backup strategies to - /var/lib/aolserver/service0 - + + OpenACS installations comprise files and database contents. + If you follow the reference install and put all files, + including configuration files, in + /var/lib/aolserver/service0/, + and back up the database nightly to a file in + /var/lib/aolserver/service0/database-backup, + then you can apply standard file-based backup strategies to + /var/lib/aolserver/service0 + Snapshot backup and recovery - This section describes how to make a one-time backup and - restore of the files and database. This is useful for rolling back to - known-good versions of a service, such as at initial - installation and just before an upgrade. First, you back up the - database to a file within the file tree. Then, you back up the - file tree. All of the information needed to rebuild the site, - including the AOLserver config files, is then in tree for - regular file system backup. + This section describes how to make a one-time backup and + restore of the files and database. This is useful for rolling back to + known-good versions of a service, such as at initial + installation and just before an upgrade. First, you back up the + database to a file within the file tree. Then, you back up the + file tree. All of the information needed to rebuild the site, + including the AOLserver config files, is then in tree for + regular file system backup. @@ -91,84 +90,84 @@ - Download the backup script. Save the file export-oracle.txt as - /tmp/export-oracle.txt - + 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 - + 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 + - - Setup the export directory; this is the directory where backups will - be stored. We recommend the directory - /ora8/m02/oracle-exports. + + Setup the export directory; this is the directory where backups will + be stored. We recommend the directory + /ora8/m02/oracle-exports. - -root:~# mkdir /ora8/m02/oracle-exports -root:~# chown oracle.dba /ora8/m02/oracle-exports -root:~# chmod 770 /ora8/m02/oracle-exports - + + 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 + + root:~# /usr/sbin/export-oracle + mv: /ora8/m02/oracle-exports/oraexport-service_name.dmp.gz: No such file or directory -Export: Release 8.1.6.1.0 - Production on Sun Jun 11 18:07:45 2000 + Export: Release 8.1.6.1.0 - Production on Sun Jun 11 18:07:45 2000 -(c) Copyright 1999 Oracle Corporation. All rights reserved. + (c) Copyright 1999 Oracle Corporation. All rights reserved. -Connected to: Oracle8i Enterprise Edition Release 8.1.6.1.0 - Production -With the Partitioning option -JServer Release 8.1.6.0.0 - Production -Export done in US7ASCII character set and US7ASCII NCHAR character set -. exporting pre-schema procedural objects and actions -. exporting foreign function library names for user SERVICE_NAME -. exporting object type definitions for user SERVICE_NAME -About to export SERVICE_NAME's objects ... -. exporting database links -. exporting sequence numbers -. exporting cluster definitions -. about to export SERVICE_NAME's tables via Conventional Path ... -. exporting synonyms -. exporting views -. exporting stored procedures -. exporting operators -. exporting referential integrity constraints -. exporting triggers -. exporting indextypes -. exporting bitmap, functional and extensible indexes -. exporting posttables actions -. exporting snapshots -. exporting snapshot logs -. exporting job queues -. exporting refresh groups and children -. exporting dimensions -. exporting post-schema procedural objects and actions -. exporting statistics -Export terminated successfully without warnings. + Connected to: Oracle8i Enterprise Edition Release 8.1.6.1.0 - Production + With the Partitioning option + JServer Release 8.1.6.0.0 - Production + Export done in US7ASCII character set and US7ASCII NCHAR character set + . exporting pre-schema procedural objects and actions + . exporting foreign function library names for user SERVICE_NAME + . exporting object type definitions for user SERVICE_NAME + About to export SERVICE_NAME's objects ... + . exporting database links + . exporting sequence numbers + . exporting cluster definitions + . about to export SERVICE_NAME's tables via Conventional Path ... + . exporting synonyms + . exporting views + . exporting stored procedures + . exporting operators + . exporting referential integrity constraints + . exporting triggers + . exporting indextypes + . exporting bitmap, functional and extensible indexes + . exporting posttables actions + . exporting snapshots + . exporting snapshot logs + . exporting job queues + . exporting refresh groups and children + . exporting dimensions + . exporting post-schema procedural objects and actions + . exporting statistics + Export terminated successfully without warnings. @@ -179,108 +178,108 @@ Create a backup file and verify that it was created and has a reasonable size (several megabytes). [root@localhost root]# su - service0 -[service0@localhost service0]$ pg_dump -f /var/lib/aolserver/service0/database-backup/before_upgrade_to_4.6.dmp service0 -[service0@localhost service0]$ ls -al /var/lib/aolserver/service0/database-backup/before_upgrade_to_4.6.dmp --rw-rw-r-x 1 service0 service0 4005995 Feb 21 18:28 /var/lib/aolserver/service0/database-backup/before_upgrade_to_4.6.dmp -[service0@localhost service0]$ exit -[root@localhost root]# -su - service0 -pg_dump -f /var/lib/aolserver/service0/database-backup/before_upgrade_to_4.6.dmp openacs-dev -ls -al /var/lib/aolserver/service0/database-backup/before_upgrade_to_4.6.dmp -exit + [service0@localhost service0]$ pg_dump -f /var/lib/aolserver/service0/database-backup/before_upgrade_to_4.6.dmp service0 + [service0@localhost service0]$ ls -al /var/lib/aolserver/service0/database-backup/before_upgrade_to_4.6.dmp + -rw-rw-r-x 1 service0 service0 4005995 Feb 21 18:28 /var/lib/aolserver/service0/database-backup/before_upgrade_to_4.6.dmp + [service0@localhost service0]$ exit + [root@localhost root]# + su - service0 + pg_dump -f /var/lib/aolserver/service0/database-backup/before_upgrade_to_4.6.dmp openacs-dev + ls -al /var/lib/aolserver/service0/database-backup/before_upgrade_to_4.6.dmp + exit - Back up the file system - Back up all of the files in the service, including the - database backup file but excluding the auto-generated - supervise directory, which is - unneccesary and has complicated permissions. + Back up the file system + Back up all of the files in the service, including the + database backup file but excluding the auto-generated + supervise directory, which is + unneccesary and has complicated permissions. - In the tar command, - - - c create a - new tar archive - - - p preserves permissions. - - - s preserves file sort order - - - j compresses the output with bz2. - - - The --exclude clauses skips some daemontools files that - are owned by root and thus cannot be backed up by the - service owner. These files are autogenerated and we don't - break anything by omitting them. - - - The --file clause - specifies the name of the output file to be generated; we - manually add the correct extensions. - - - The last clause, - /var/lib/aolserver/service0/, - specifies the starting point for backup. Tar defaults to - recursive backup. - - - [root@yourserver root]# su - service0 -[service0@yourserver service0]$ tar -cpsj --exclude /var/lib/aolserver/service0/etc/daemontools/supervise --file /tmp/service0-backup.tar.bz2 /var/lib/aolserver/service0/ -tar: Removing leading `/' from member names -[service0@yourserver service0]$ - + In the tar command, + + + c create a + new tar archive + + + p preserves permissions. + + + s preserves file sort order + + + j compresses the output with bz2. + + + The --exclude clauses skips some daemontools files that + are owned by root and thus cannot be backed up by the + service owner. These files are autogenerated and we don't + break anything by omitting them. + + + The --file clause + specifies the name of the output file to be generated; we + manually add the correct extensions. + + + The last clause, + /var/lib/aolserver/service0/, + specifies the starting point for backup. Tar defaults to + recursive backup. + + + [root@yourserver root]# su - service0 + [service0@yourserver service0]$ tar -cpsj --exclude /var/lib/aolserver/service0/etc/daemontools/supervise --file /tmp/service0-backup.tar.bz2 /var/lib/aolserver/service0/ + tar: Removing leading `/' from member names + [service0@yourserver service0]$ + - Suffer a catastrophic failure on your production system + Suffer a catastrophic failure on your production system (We'll simulate this step) [root@yourserver root]# svc -d /service/service0 -[root@yourserver root]# mv /var/lib/aolserver/service0/ /var/lib/aolserver/service0.lost -[root@yourserver root]# rm /service/service0 -rm: remove symbolic link `/service/service0'? y -[root@yourserver root]# ps -auxw | grep service0 -root 1496 0.0 0.0 1312 252 ? S 16:58 0:00 supervise service0 -[root@yourserver root]# kill 1496 -[root@yourserver root]# ps -auxw | grep service0 -[root@yourserver root]# su - postgres -[postgres@yourserver pgsql]$ dropdb service0 -DROP DATABASE -[postgres@yourserver pgsql]$ dropuser service0 -DROP USER -[postgres@yourserver pgsql]$ exit -logout -[root@yourserver root]# + [root@yourserver root]# mv /var/lib/aolserver/service0/ /var/lib/aolserver/service0.lost + [root@yourserver root]# rm /service/service0 + rm: remove symbolic link `/service/service0'? y + [root@yourserver root]# ps -auxw | grep service0 + root 1496 0.0 0.0 1312 252 ? S 16:58 0:00 supervise service0 + [root@yourserver root]# kill 1496 + [root@yourserver root]# ps -auxw | grep service0 + [root@yourserver root]# su - postgres + [postgres@yourserver pgsql]$ dropdb service0 + DROP DATABASE + [postgres@yourserver pgsql]$ dropuser service0 + DROP USER + [postgres@yourserver pgsql]$ exit + logout + [root@yourserver root]# - + Recovery - - - Restore the operating system and required software. - You can do this with standard backup processes or by - keeping copies of the install material (OS CDs, OpenACS - tarball and supporting software) and repeating the install - guide. Recreate the service user (service0). - + + Restore the operating system and required software. + You can do this with standard backup processes or by + keeping copies of the install material (OS CDs, OpenACS + tarball and supporting software) and repeating the install + guide. Recreate the service user (service0). + + Restore the OpenACS files and database backup file. -[root@yourserver root]# su - service0 -[service0@yourserver service0]$ cd /var/lib/aolserver -[service0@yourserver aolserver]$ tar xjf /tmp/service0-backup.tar.bz2 -[service0@yourserver aolserver]$ chmod -R 775 service0 -[service0@yourserver aolserver]$ chown -R service0.web service0 + [root@yourserver root]# su - service0 + [service0@yourserver service0]$ cd /var/lib/aolserver + [service0@yourserver aolserver]$ tar xjf /tmp/service0-backup.tar.bz2 + [service0@yourserver aolserver]$ chmod -R 775 service0 + [service0@yourserver aolserver]$ chown -R service0.web service0 - + Restore the database @@ -293,8 +292,8 @@ Set up a clean Oracle database user and - tablespace (more information). + tablespace (more information). Invoke the import command @@ -308,30 +307,30 @@ Because of a bug in Postgres backup-recovery, database objects are not guaranteed to be created in the right order. To compensate, we pre-creating some critical items first, which leads to some harmless errors. - [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 -[service0@yourserver web]$ createdb service0 -CREATE DATABASE -[service0@yourserver web]$ psql -f /var/lib/aolserver/service0/packages/acs-kernel/sql/postgresql/postgresql.sql service0 -(many lines omitted) -[service0@yourserver web]$ psql service0 < /var/lib/aolserver/service0/database-backup/database-backup.dmp -(many lines omitted) -[service0@yourserver web]$ exit -[postgres@yourserver pgsql]$ exit -logout - + [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 + [service0@yourserver web]$ createdb service0 + CREATE DATABASE + [service0@yourserver web]$ psql -f /var/lib/aolserver/service0/packages/acs-kernel/sql/postgresql/postgresql.sql service0 + (many lines omitted) + [service0@yourserver web]$ psql service0 < /var/lib/aolserver/service0/database-backup/database-backup.dmp + (many lines omitted) + [service0@yourserver web]$ exit + [postgres@yourserver pgsql]$ exit + logout + Activate the service -[root@yourserver root]# ln -s /var/lib/aolserver/service0/etc/daemontools /service/service0 -[root@yourserver root]# sleep 10 -[root@yourserver root]# svgroup web /service/service0 -[root@yourserver root]# + [root@yourserver root]# ln -s /var/lib/aolserver/service0/etc/daemontools /service/service0 + [root@yourserver root]# sleep 10 + [root@yourserver root]# svgroup web /service/service0 + [root@yourserver root]# @@ -340,179 +339,174 @@ Automated Backup (OPTIONAL) - Backup can encompass all files in + Backup can encompass all files in /var/lib/aolserver/service0. Use one cron job to back up the database to a file in - /var/lib/aolserver/service0/database-backup, and a second cron job to back up the entire file tree. - - Postgres automatic backup - Backing up the database consists of creating a file - which is a picture of the database at a particular moment. - Postgres can be backed up while running. - Depending on your overall backup strategy, you can - create a series of database backup files (recommended for a development server where you are using ), or you can create a - single nightly backup file which is then collected into a - bigger backup file that includes the other parts of the - service. The latter technique is more generally recommended. To make a new file every - night, edit the crontab file for service0: - [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/pg_dump -f /var/lib/aolserver/service0/database-backup/service0_`date +\%Y-\%m-\%d`.dmp service0 - If you plan to back up the whole /var/lib/aolserver/service0 directory, then it would be redundant to keep a history of database backups. In that case, set up the cron job to overwrite the previous backup each time: - 0 1 * * * /usr/local/pgsql/bin/pg_dump -f /var/lib/aolserver/service0/database-backup/service0_nightly.dmp service0 - - - - A full Backup/Recovery cycle - On a test service, make sure that your backup-recovery process work. After backing up the database and file system, delete the service as detailed below and then recover it. - + /var/lib/aolserver/service0/database-backup, and a second cron job to back up the entire file tree. + + Postgres automatic backup + Backing up the database consists of creating a file + which is a picture of the database at a particular moment. + Postgres can be backed up while running. + Depending on your overall backup strategy, you can + create a series of database backup files (recommended for a development server where you are using ), or you can create a + single nightly backup file which is then collected into a + bigger backup file that includes the other parts of the + service. The latter technique is more generally recommended. To make a new file every + night, edit the crontab file for service0: + [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/pg_dump -f /var/lib/aolserver/service0/database-backup/service0_`date +\%Y-\%m-\%d`.dmp service0 + If you plan to back up the whole /var/lib/aolserver/service0 directory, then it would be redundant to keep a history of database backups. In that case, set up the cron job to overwrite the previous backup each time: + 0 1 * * * /usr/local/pgsql/bin/pg_dump -f /var/lib/aolserver/service0/database-backup/service0_nightly.dmp service0 + + + + A full Backup/Recovery cycle + On a test service, make sure that your backup-recovery process work. After backing up the database and file system, delete the service as detailed below and then recover it. + - - Other Backup Strategies - Earlier strategies, included here because this section - hasn't been fully updated yet. - - Set Up Nightly Oracle Exports - Edit the backup script to save the backup + + Other Backup Strategies + Earlier strategies, included here because this section + hasn't been fully updated yet. + + Set Up Nightly Oracle Exports + Edit the backup script to save the backup file in /var/lib/aolserver/service0/database-backup. 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. - + - Automating backups is accomplished using the UNIX - crontab facility. + 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 + + 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 + Now add the following line on a line by itself - -0 23 * * * /usr/sbin/export-oracle + + 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 -; Logout + + root:~# crontab -l | grep export-oracle + 0 23 * * * /usr/sbin/export-oracle + root:~# exit + ; Logout If you see the line, go ahead and log out. - Set up nightly Postgres exports + Set up nightly Postgres exports - This is an alternate method to the crontabls - backup. + This is an alternate method to the crontabls - backup. 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 + + + bak - location where you want + local backups to be saved - - servername - name of your server - (and database instance) + + servername - name of your server + (and database instance) - - ftp_user - username on your ftp - account + + ftp_user - username on your ftp + account - - ftp_password - password 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_dir - path on the remote + server where your backups will be uploaded - - ftp_server - your ftp server + + 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. - + 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 ~/var/lib/aolserver/birdnotes/tcl/acs-pgbackup-init.tcl -joeuser:~$ restart-aolserver birdnotes + + joeuser:~$ cp /tmp/acs-pgbackup-init.txt ~/var/lib/aolserver/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) - - - + + 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) + + + Using CVS for backup-recovery - If you are already using CVS, you probably don't - need to do anything to back up your files. Just make - sure that your current work is checked into the system. - You can then roll back based on date - note the - current system time, down to the minute. For maximum - safety, you can apply a tag to your current - files. You will still need to back up your database. - Note that, if you did the CVS options in this document, the /var/lib/aolserver/service0/etc directory is not included in cvs and you may want to add it. - [root@localhost root]# su - service0 -[service0@localhost service0]$ cd /var/lib/aolserver/service0 -[service0@localhost service0]$ cvs commit -m "last-minute commits before upgrade to 4.6" -cvs commit: Examining . -cvs commit: Examining bin -(many lines omitted) -[service0@localhost service0]$ cvs tag before_upgrade_to_4_6 -cvs server: Tagging bin -T bin/acs-4-0-publish.sh -T bin/ad-context-server.pl -(many lines omitted) -[service0@localhost service0]$ exit -[root@localhost root]# -su - service0 -cd /var/lib/aolserver/service0 -cvs commit -m "last-minute commits before upgrade to 4.6" -cvs tag before_upgrade_to_4_6 -exit - To restore files from a cvs tag such as the one used above: - [root@localhost root]# su - service0 -[service0@localhost service0]$ cd /var/lib/aolserver/service0 -[service0@localhost service0]$ cvs up -r current -[service0@localhost service0]$ exit -su - service0 -cd /var/lib/aolserver/service0 -cvs up -r current - - ($Id$) + If you are already using CVS, you probably don't + need to do anything to back up your files. Just make + sure that your current work is checked into the system. + You can then roll back based on date - note the + current system time, down to the minute. For maximum + safety, you can apply a tag to your current + files. You will still need to back up your database. + Note that, if you did the CVS options in this document, the /var/lib/aolserver/service0/etc directory is not included in cvs and you may want to add it. + [root@localhost root]# su - service0 + [service0@localhost service0]$ cd /var/lib/aolserver/service0 + [service0@localhost service0]$ cvs commit -m "last-minute commits before upgrade to 4.6" + cvs commit: Examining . + cvs commit: Examining bin + (many lines omitted) + [service0@localhost service0]$ cvs tag before_upgrade_to_4_6 + cvs server: Tagging bin + T bin/acs-4-0-publish.sh + T bin/ad-context-server.pl + (many lines omitted) + [service0@localhost service0]$ exit + [root@localhost root]# + su - service0 + cd /var/lib/aolserver/service0 + cvs commit -m "last-minute commits before upgrade to 4.6" + cvs tag before_upgrade_to_4_6 + exit + To restore files from a cvs tag such as the one used above: + [root@localhost root]# su - service0 + [service0@localhost service0]$ cd /var/lib/aolserver/service0 + [service0@localhost service0]$ cvs up -r current + [service0@localhost service0]$ exit + su - service0 + cd /var/lib/aolserver/service0 + cvs up -r current - - - - - \ No newline at end of file + ($Id$) + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/xml/install-guide/upgrade.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/xml/install-guide/upgrade.xml,v diff -u -r1.6.2.1 -r1.6.2.2 --- openacs-4/packages/acs-core-docs/www/xml/install-guide/upgrade.xml 19 Nov 2003 14:35:16 -0000 1.6.2.1 +++ openacs-4/packages/acs-core-docs/www/xml/install-guide/upgrade.xml 21 Nov 2003 11:13:17 -0000 1.6.2.2 @@ -5,39 +5,22 @@ %myvars; ]> - Support for upgrades. + Upgrading by Joel Aufrecht + + Overview Starting with Version 4.5, all OpenACS core packages support automatic upgrade. That means that, if you have OpenACS 4.5 or better, you should always be able to upgrade all of your core packages automatically. If you haven't changed anything, no manual intervention should be required. If you are running OpenACS prior to 4.5, upgrading will require manual effort. - - -Checklist - The required platform for OpenACS 4.6 is the same as - 4.5, with the excepion of OpenFTS. You now need OpenFTS 0.3.2, not 0.2. - OpenACS 4.6 does not support PostGreSQL 7.3. - - A computer with OpenACS 4.5. - - OpenACS 4.6 tarball - - Required for Full Text Search on PostGreSQL: OpenFTS 0.3.2 - - - - - Overview + It's always a good idea to precede an upgrade attempt with a snapshot backup. OpenACS consists of files and a database schema. The files - in the OpenACS 4.6 tarball include database upgrade scripts. To start the - upgrade, replace your existing files with the new files and - then restart the server. Then, browse to the APM, which will - detect the new packages and offer to run the appropriate database upgrade - scripts. After restarting the server again, the upgrade is + in a new tarball include database upgrade scripts. To start the + upgrade, replace your existing files with the new files and then browse to the APM, which will detect the new packages and offer to run the appropriate database upgrade scripts. After restarting the server again, the upgrade is complete.
    Assumptions in this section @@ -65,11 +48,30 @@
    - <indexterm> - <primary>upgrade</primary> + <sect2 id="upgrade-4.6.3-to-5"> + <title>Upgrading 4.6.3 to 5.0 + Current working notes in Forum OpenACS Development: 4.6.3 upgrade to 5-HEAD: final results. + + + + Upgrading 4.5 to 4.6 + + upgrade OpenACS 4.5 to 4.6 Linux/Unix -Upgrading on Linux/Unix + +The required platform for OpenACS 4.6 is the same as + 4.5, with the excepion of OpenFTS. You now need OpenFTS 0.3.2, not 0.2. + OpenACS 4.6 does not support PostGreSQL 7.3. + + A computer with OpenACS 4.5. + + OpenACS 4.6 tarball + + Required for Full Text Search on PostGreSQL: OpenFTS 0.3.2 + + + Upgrade Sequence @@ -304,11 +306,12 @@ Rollback - If anything goes wrong, roll back to the backup snapshot. + If anything goes wrong, roll back to the backup snapshot. ($Id$) -
    + + Fisheye: Tag 1.2.2.1 refers to a dead (removed) revision in file `openacs-4/packages/acs-core-docs/www/xml/kernel/ext-auth-design.xml'. Fisheye: No comparison available. Pass `N' to diff?