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 -N -r1.26 -r1.27 --- openacs-4/packages/acs-core-docs/www/acs-admin.html 27 Feb 2004 11:20:44 -0000 1.26 +++ openacs-4/packages/acs-core-docs/www/acs-admin.html 4 Mar 2004 14:09:21 -0000 1.27 @@ -1 +1 @@ -Part�II.�Administrator's Guide

Administrator's Guide

Table of Contents

2. Installation Overview
Basic Steps
Prerequisite Software
3. Complete Installation
Install a Unix-like system and supporting software
Install Oracle 8.1.7
Install PostgreSQL
Install AOLserver 4
Install OpenACS 5.1.0d1
OpenACS Installation Guide for Windows2000
OpenACS Installation Guide for Mac OS X
4. Configuring a new OpenACS Site
How Do I?
5. Upgrading
Overview
Upgrading OpenACS
Upgrading the OpenACS files
Upgrading Platform components
6. Production Environments
Starting and Stopping an OpenACS instance.
AOLserver keepalive with inittab
Running multiple services on one machine
High Availability/High Performance Configurations
Staged Deployment for Production Networks
Installing SSL Support
Set up Log Analysis Reports
External uptime validation
Diagnosing Performance Problems
7. Database Management
Running a PostgreSQL database on another server
Deleting a tablespace
Vacuum Postgres nightly
8. Backup and Recovery
Backup Strategy
Manual backup and recovery
Automated Backup
Using CVS for backup-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.
Install PHP for use in AOLserver
Install Squirrelmail for use as a webmail system for OpenACS
Install AOLserver 3.3oacs1
A. 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 a Unix-like system and supporting software
Install Oracle 8.1.7
Install PostgreSQL
Install AOLserver 4
Install OpenACS 5.1.0d2
OpenACS Installation Guide for Windows2000
OpenACS Installation Guide for Mac OS X
4. Configuring a new OpenACS Site
How Do I?
5. Upgrading
Overview
Upgrading 4.5 or higher to 4.6.3
Upgrading OpenACS 4.6.3 to 5.0
Upgrading 5.0.0 to 5.0.x
Upgrading the OpenACS files
Upgrading Platform components
6. Production Environments
Starting and Stopping an OpenACS instance.
AOLserver keepalive with inittab
Running multiple services on one machine
High Availability/High Performance Configurations
Staged Deployment for Production Networks
Installing SSL Support
Set up Log Analysis Reports
External uptime validation
Diagnosing Performance Problems
7. Database Management
Running a PostgreSQL database on another server
Deleting a tablespace
Vacuum Postgres nightly
8. Backup and Recovery
Backup Strategy
Manual backup and recovery
Automated Backup
Using CVS for backup-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.
Install PHP for use in AOLserver
Install Squirrelmail for use as a webmail system for OpenACS
Install AOLserver 3.3oacs1
A. 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-plat-dev.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/acs-plat-dev.html,v diff -u -N -r1.17 -r1.18 --- openacs-4/packages/acs-core-docs/www/acs-plat-dev.html 24 Feb 2004 17:42:24 -0000 1.17 +++ openacs-4/packages/acs-core-docs/www/acs-plat-dev.html 4 Mar 2004 14:09:21 -0000 1.18 @@ -1 +1 @@ -Part�IV.�For OpenACS Platform Developers

For OpenACS Platform Developers

Table of Contents

15. Kernel Documentation
Overview
Object Model Requirements
Object Model Design
Permissions Requirements
Permissions Design
Groups Requirements
Groups Design
Subsites Requirements
Subsites Design Document
Package Manager Requirements
Package Manager Design
Database Access API
OpenACS Internationalization Requirements
Security Requirements
Security Design
Security Notes
Request Processor Requirements
Request Processor Design
Documenting Tcl Files: Page Contracts and Libraries
Bootstrapping OpenACS
External Authentication Requirements
16. How to package and release OpenACS
How to Update the OpenACS.org repository
How to Update the translations
View comments on this page at openacs.org
+Part�IV.�For OpenACS Platform Developers

For OpenACS Platform Developers

Table of Contents

15. Kernel Documentation
Overview
Object Model Requirements
Object Model Design
Permissions Requirements
Permissions Design
Groups Requirements
Groups Design
Subsites Requirements
Subsites Design Document
Package Manager Requirements
Package Manager Design
Database Access API
OpenACS Internationalization Requirements
Security Requirements
Security Design
Security Notes
Request Processor Requirements
Request Processor Design
Documenting Tcl Files: Page Contracts and Libraries
Bootstrapping OpenACS
External Authentication Requirements
16. Releasing OpenACS
OpenACS Core and .LRN
How to Update the OpenACS.org repository
How to package and release an OpenACS Package
How to Update the translations
View comments on this page at openacs.org
Index: openacs-4/packages/acs-core-docs/www/aolserver4.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/aolserver4.html,v diff -u -N -r1.7 -r1.8 --- openacs-4/packages/acs-core-docs/www/aolserver4.html 27 Feb 2004 11:20:44 -0000 1.7 +++ openacs-4/packages/acs-core-docs/www/aolserver4.html 4 Mar 2004 14:09:21 -0000 1.8 @@ -1,4 +1,4 @@ -Install AOLserver 4

Install AOLserver 4

by Malte Sussdorff

+Install AOLserver 4

Install AOLserver 4

by Malte Sussdorff

OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.
  1. Retrieve TCL 8.4 (or higher).�Download and install TCL 8.4

    If you have not installed TCL already, download the latest TCL version from Sourceforge

    Remember that you have to be root if you want to follow these instructions. On Mac OS X type sudo su - to become root.

    Alternatively use curl -L -O instead of wget (especially on Mac OS X.

    [root root]# cd /usr/local/src
    @@ -59,15 +59,15 @@
     	  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 aolserver]# cd /usr/local/aolserver40r2/bin
      -[root bin]# cp /tmp/openacs-5.1.0d1/packages/acs-core-docs/www/files/nsd-oracle.txt ./nsd-oracle
      +[root bin]# cp /tmp/openacs-5.1.0d2/packages/acs-core-docs/www/files/nsd-oracle.txt ./nsd-oracle
       [root bin]# chmod 750 nsd-oracle
       [root bin]#
       cd /usr/local/aolserver40r2/bin
      -cp /tmp/openacs-5.1.0d1/packages/acs-core-docs/www/files/nsd-oracle.txt ./nsd-oracle
      +cp /tmp/openacs-5.1.0d2/packages/acs-core-docs/www/files/nsd-oracle.txt ./nsd-oracle
       chmod 750 nsd-oracle
    • PostgreSQL

      [root aolserver]# cd /usr/local/aolserver40r2/bin
      -[root bin]# cp /tmp/openacs-5.1.0d1/packages/acs-core-docs/www/files/nsd-postgres.txt ./nsd-postgres
      +[root bin]# cp /tmp/openacs-5.1.0d2/packages/acs-core-docs/www/files/nsd-postgres.txt ./nsd-postgres
       [root bin]# chmod 755 nsd-postgres
       [root bin]#
       cd /usr/local/aolserver40r2/bin
      -cp /tmp/openacs-5.1.0d1/packages/acs-core-docs/www/files/nsd-postgres.txt ./nsd-postgres
      -chmod 755 nsd-postgres
  2. Change startup script (optional).�If you want to run AOLserver on a port below 1024 (normally, for a webserver you will use 80), you will have to change the /var/lib/aolserver/service0/etc/daemontools/run script according to the documentation found there (namely: Add the -b yourip:yourport switch)

  3. Test AOLserver.

($Id$)
View comments on this page at openacs.org
+cp /tmp/openacs-5.1.0d2/packages/acs-core-docs/www/files/nsd-postgres.txt ./nsd-postgres +chmod 755 nsd-postgres
  • Change startup script (optional).�If you want to run AOLserver on a port below 1024 (normally, for a webserver you will use 80), you will have to change the /var/lib/aolserver/service0/etc/daemontools/run script according to the documentation found there (namely: Add the -b yourip:yourport switch)

  • Test AOLserver.

  • ($Id$)
    View comments on this page at openacs.org
    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 -N -r1.24 -r1.25 --- openacs-4/packages/acs-core-docs/www/backup-recovery.html 27 Feb 2004 11:20:46 -0000 1.24 +++ openacs-4/packages/acs-core-docs/www/backup-recovery.html 4 Mar 2004 14:09:21 -0000 1.25 @@ -7,4 +7,4 @@ probably need to create your own backup strategies (in particular full dumps from oracle, while easy to set up, are far from the best solution).

    There are three basic things which need to be backed up, the database data, the server - source tree, and the acs-content-repository (which is in the server source tree).

    Figure�8.1.�Backup and Recovery Strategy

    Backup and Recovery Strategy
    ($Id$)
    View comments on this page at openacs.org
    + source tree, and the acs-content-repository (which is in the server source tree).

    Figure�8.1.�Backup and Recovery Strategy

    Backup and Recovery Strategy
    ($Id$)
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/ch10s06.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/Attic/ch10s06.html,v diff -u -N -r1.4 -r1.5 --- openacs-4/packages/acs-core-docs/www/ch10s06.html 27 Feb 2004 11:20:46 -0000 1.4 +++ openacs-4/packages/acs-core-docs/www/ch10s06.html 4 Mar 2004 14:09:21 -0000 1.5 @@ -1,4 +1,4 @@ -Categories

    Categories

    You can associate any ACS Object with one or more categories. +Categories

    Categories

    You can associate any ACS Object with one or more categories. In this tutorial we'll show how to equip your application with user interface to take advantage of the Categories service.

    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 -N -r1.10 -r1.11 --- openacs-4/packages/acs-core-docs/www/complete-install.html 27 Feb 2004 11:20:46 -0000 1.10 +++ openacs-4/packages/acs-core-docs/www/complete-install.html 4 Mar 2004 14:09:21 -0000 1.11 @@ -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/cvs-tips.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/cvs-tips.html,v diff -u -N -r1.14 -r1.15 --- openacs-4/packages/acs-core-docs/www/cvs-tips.html 27 Feb 2004 11:20:46 -0000 1.14 +++ openacs-4/packages/acs-core-docs/www/cvs-tips.html 4 Mar 2004 14:09:21 -0000 1.15 @@ -1,7 +1,7 @@ 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. -

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

    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 root]# mkdir /cvsroot/service0
       [root root]# chown service0.service0 /cvsroot/service0
      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 -N -r1.31 -r1.32
      --- openacs-4/packages/acs-core-docs/www/docbook-primer.html	27 Feb 2004 11:20:46 -0000	1.31
      +++ openacs-4/packages/acs-core-docs/www/docbook-primer.html	4 Mar 2004 14:09:21 -0000	1.32
      @@ -36,7 +36,7 @@
             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.
      @@ -57,7 +57,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 @@ -106,7 +106,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
        @@ -130,20 +130,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.

      @@ -158,7 +158,7 @@ </sect1>

      - + Inside this container your document will be split up into <sect2>'s, each with the same requirements - id and xreflabel @@ -167,7 +167,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>. @@ -177,12 +177,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:

    Put this in your XML:

    +	  

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

    Put this in your XML:

     - Find information about creating a package in
     <xref linkend="packages-making-a-package"></xref>.
     

    And the output is:

    @@ -206,7 +206,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 @@ -227,7 +227,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>, @@ -253,7 +253,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 @@ -298,7 +298,7 @@ </variablelist>

    Tables

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

    Emphasis

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

    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 -N -r1.19 -r1.20 --- openacs-4/packages/acs-core-docs/www/ext-auth-requirements.html 27 Feb 2004 11:20:46 -0000 1.19 +++ openacs-4/packages/acs-core-docs/www/ext-auth-requirements.html 4 Mar 2004 14:09:22 -0000 1.20 @@ -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 -N -r1.30 -r1.31 --- openacs-4/packages/acs-core-docs/www/filename.html 27 Feb 2004 11:20:46 -0000 1.30 +++ openacs-4/packages/acs-core-docs/www/filename.html 4 Mar 2004 14:09:22 -0000 1.31 @@ -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.1.0d1, parameters are set at two levels: at the global level by + Under OpenACS 5.1.0d2, 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/form-builder.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/form-builder.html,v diff -u -N -r1.9 -r1.10 --- openacs-4/packages/acs-core-docs/www/form-builder.html 27 Feb 2004 11:20:46 -0000 1.9 +++ openacs-4/packages/acs-core-docs/www/form-builder.html 4 Mar 2004 14:09:22 -0000 1.10 @@ -1,4 +1,4 @@ -Using HTML Forms

    Using HTML Forms

    Overview

    Multi-part Elements

    Some elements have more than one choice, or can submit more than one value.

    SELECT elements

    1. Creating the form element.�Populate a list of lists with values for the option list.

      set foo_options [db_list_of_lists foo_option_list "
      +Using HTML Forms

      Using HTML Forms

      Overview

      Multi-part Elements

      Some elements have more than one choice, or can submit more than one value.

      SELECT elements

      1. Creating the form element.�Populate a list of lists with values for the option list.

        set foo_options [db_list_of_lists foo_option_list "
             select foo,
                    foo_id
               from foos
        @@ -10,5 +10,5 @@
             }

        This will result in a single name/value pair coming back in the submitted form. Handle this within the same ad_form structure, in the -new_data and -edit_data. In the example, it is available as $foo

      See also the W3C spec for "The SELECT, OPTGROUP, and OPTION elements".

      Common Errors

      Here are some common errors and what to do when you - encounter them:

      Error when selecting values

      This generally happens when there is an error in your + encounter them:

      Error when selecting values

      This generally happens when there is an error in your query.

      ($Id$)
      View comments on this page at openacs.org
      Index: openacs-4/packages/acs-core-docs/www/high-avail.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/high-avail.html,v diff -u -N -r1.4 -r1.5 --- openacs-4/packages/acs-core-docs/www/high-avail.html 27 Feb 2004 11:20:51 -0000 1.4 +++ openacs-4/packages/acs-core-docs/www/high-avail.html 4 Mar 2004 14:09:22 -0000 1.5 @@ -1 +1 @@ -High Availability/High Performance Configurations

      High Availability/High Performance Configurations

      See also the section called “Running a PostgreSQL database on another server”.

      Figure�6.1.�Multiple-server configuration

      Multiple-server configuration
      View comments on this page at openacs.org
      +High Availability/High Performance Configurations

      High Availability/High Performance Configurations

      See also the section called “Running a PostgreSQL database on another server”.

      Figure�6.1.�Multiple-server configuration

      Multiple-server configuration
      View comments on this page at openacs.org
      Index: openacs-4/packages/acs-core-docs/www/i18n-convert.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/i18n-convert.html,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/i18n-convert.html 27 Feb 2004 11:20:51 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/i18n-convert.html 4 Mar 2004 14:09:22 -0000 1.4 @@ -1,12 +1,12 @@ -Internationalizing Existing Packages

      Internationalizing Existing Packages

      Internationalize Message text in ADP and TCL

      Acs-lang includes tools to automate some +Internationalizing Existing Packages

      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 Internationalization, then Convert ADP, Tcl, and SQL files to using the - message catalog..

      Internationalize Package Parameters with visible messages

      + message catalog..

      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/i18n-introduction.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/i18n-introduction.html,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/i18n-introduction.html 27 Feb 2004 11:20:51 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/i18n-introduction.html 4 Mar 2004 14:09:22 -0000 1.4 @@ -42,7 +42,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 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 -N -r1.32 -r1.33 --- openacs-4/packages/acs-core-docs/www/index.html 27 Feb 2004 11:20:51 -0000 1.32 +++ openacs-4/packages/acs-core-docs/www/index.html 4 Mar 2004 14:09:22 -0000 1.33 @@ -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 a Unix-like system and supporting software
        Install Oracle 8.1.7
        Install PostgreSQL
        Install AOLserver 4
        Install OpenACS 5.1.0d1
        OpenACS Installation Guide for Windows2000
        OpenACS Installation Guide for Mac OS X
        4. Configuring a new OpenACS Site
        How Do I?
        5. Upgrading
        Overview
        Upgrading OpenACS
        Upgrading the OpenACS files
        Upgrading Platform components
        6. Production Environments
        Starting and Stopping an OpenACS instance.
        AOLserver keepalive with inittab
        Running multiple services on one machine
        High Availability/High Performance Configurations
        Staged Deployment for Production Networks
        Installing SSL Support
        Set up Log Analysis Reports
        External uptime validation
        Diagnosing Performance Problems
        7. Database Management
        Running a PostgreSQL database on another server
        Deleting a tablespace
        Vacuum Postgres nightly
        8. Backup and Recovery
        Backup Strategy
        Manual backup and recovery
        Automated Backup
        Using CVS for backup-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.
        Install PHP for use in AOLserver
        Install Squirrelmail for use as a webmail system for OpenACS
        Install AOLserver 3.3oacs1
        A. Credits
        Where did this document come from?
        Linux Install Guides
        Security Information
        Resources
        III. For OpenACS Package Developers
        1. Development Tutorial
        Creating a Package
        Setting Up Database Objects
        Creating Web Pages
        Debugging and Automated Testing
        2. Advanced Topics
        Write the Requirements and Design Specs
        Add the new package to CVS
        Adding Comments
        Admin Pages
        Categories
        Categories
        Prepare the package for distribution.
        Notifications
        Using .vuh files for pretty urls
        3. Development Reference
        OpenACS Packages
        OpenACS Data Models and the Object System
        The Request Processor
        The OpenACS Database Access API
        Using Templates in OpenACS
        Groups, Context, Permissions
        Writing OpenACS Application Pages
        Parties in OpenACS
        OpenACS Permissions Tediously Explained
        Object Identity
        Programming with AOLserver
        Using HTML Forms
        4. Engineering Standards
        OpenACS Style Guide
        Release Version Numbering
        Constraint naming standard
        ACS File Naming and Formatting Standards
        PL/SQL Standards
        Variables
        Automated Testing
        5. Documentation Standards
        OpenACS Documentation Guide
        Using PSGML mode in Emacs
        Using nXML mode in Emacs
        Detailed Design Documentation Template
        System/Application Requirements Template
        6. Internationalization
        Translator's Guide
        Introduction to Developing Internationalized Packages
        Internationalizing Existing Packages
        Design Notes
        B. Using CVS with an OpenACS Site
        IV. For OpenACS Platform Developers
        7. Kernel Documentation
        Overview
        Object Model Requirements
        Object Model Design
        Permissions Requirements
        Permissions Design
        Groups Requirements
        Groups Design
        Subsites Requirements
        Subsites Design Document
        Package Manager Requirements
        Package Manager Design
        Database Access API
        OpenACS Internationalization Requirements
        Security Requirements
        Security Design
        Security Notes
        Request Processor Requirements
        Request Processor Design
        Documenting Tcl Files: Page Contracts and Libraries
        Bootstrapping OpenACS
        External Authentication Requirements
        8. How to package and release OpenACS
        How to Update the OpenACS.org repository
        How to Update the translations
        Index
        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 a Unix-like system and supporting software
        Install Oracle 8.1.7
        Install PostgreSQL
        Install AOLserver 4
        Install OpenACS 5.1.0d2
        OpenACS Installation Guide for Windows2000
        OpenACS Installation Guide for Mac OS X
        4. Configuring a new OpenACS Site
        How Do I?
        5. Upgrading
        Overview
        Upgrading 4.5 or higher to 4.6.3
        Upgrading OpenACS 4.6.3 to 5.0
        Upgrading 5.0.0 to 5.0.x
        Upgrading the OpenACS files
        Upgrading Platform components
        6. Production Environments
        Starting and Stopping an OpenACS instance.
        AOLserver keepalive with inittab
        Running multiple services on one machine
        High Availability/High Performance Configurations
        Staged Deployment for Production Networks
        Installing SSL Support
        Set up Log Analysis Reports
        External uptime validation
        Diagnosing Performance Problems
        7. Database Management
        Running a PostgreSQL database on another server
        Deleting a tablespace
        Vacuum Postgres nightly
        8. Backup and Recovery
        Backup Strategy
        Manual backup and recovery
        Automated Backup
        Using CVS for backup-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.
        Install PHP for use in AOLserver
        Install Squirrelmail for use as a webmail system for OpenACS
        Install AOLserver 3.3oacs1
        A. Credits
        Where did this document come from?
        Linux Install Guides
        Security Information
        Resources
        III. For OpenACS Package Developers
        1. Development Tutorial
        Creating a Package
        Setting Up Database Objects
        Creating Web Pages
        Debugging and Automated Testing
        2. Advanced Topics
        Write the Requirements and Design Specs
        Add the new package to CVS
        Adding Comments
        Admin Pages
        Categories
        Categories
        Prepare the package for distribution.
        Notifications
        Using .vuh files for pretty urls
        3. Development Reference
        OpenACS Packages
        OpenACS Data Models and the Object System
        The Request Processor
        The OpenACS Database Access API
        Using Templates in OpenACS
        Groups, Context, Permissions
        Writing OpenACS Application Pages
        Parties in OpenACS
        OpenACS Permissions Tediously Explained
        Object Identity
        Programming with AOLserver
        Using HTML Forms
        4. Engineering Standards
        OpenACS Style Guide
        Release Version Numbering
        Constraint naming standard
        ACS File Naming and Formatting Standards
        PL/SQL Standards
        Variables
        Automated Testing
        5. Documentation Standards
        OpenACS Documentation Guide
        Using PSGML mode in Emacs
        Using nXML mode in Emacs
        Detailed Design Documentation Template
        System/Application Requirements Template
        6. Internationalization
        Translator's Guide
        Introduction to Developing Internationalized Packages
        Internationalizing Existing Packages
        Design Notes
        B. Using CVS with an OpenACS Site
        IV. For OpenACS Platform Developers
        7. Kernel Documentation
        Overview
        Object Model Requirements
        Object Model Design
        Permissions Requirements
        Permissions Design
        Groups Requirements
        Groups Design
        Subsites Requirements
        Subsites Design Document
        Package Manager Requirements
        Package Manager Design
        Database Access API
        OpenACS Internationalization Requirements
        Security Requirements
        Security Design
        Security Notes
        Request Processor Requirements
        Request Processor Design
        Documenting Tcl Files: Page Contracts and Libraries
        Bootstrapping OpenACS
        External Authentication Requirements
        8. Releasing OpenACS
        OpenACS Core and .LRN
        How to Update the OpenACS.org repository
        How to package and release an OpenACS Package
        How to Update the translations
        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 -N -r1.18 -r1.19 --- openacs-4/packages/acs-core-docs/www/individual-programs.html 18 Feb 2004 14:43:02 -0000 1.18 +++ openacs-4/packages/acs-core-docs/www/individual-programs.html 4 Mar 2004 14:09:22 -0000 1.19 @@ -6,7 +6,7 @@ and webserver. Many additional programs, such as a Mail Transport Agent and source control system, are also needed for a fully effective instance. -

        Table�2.2.�Version Compatibility Matrix

        OpenACS Version3.2.5 4.5 4.6 4.6.14.6.24.6.35.0.0
        AOLserver3YesNo
        3.3+ad13MaybeYes
        3.3oacs1MaybeYes
        3.4.2No
        3.4.2oacs1MaybeYesMaybe
        3.5.5MaybeYesNo
        4.0MaybeYes
        PostgreSQL7.0YesNo
        7.2.xYesNo
        7.3.2 - 7.3.4NoYes
        7.4NoMaybe
        Oracle8.1.6MaybeYes
        8.1.7MaybeYes
        9iNoYes
        • OpenACS 5.1.0d1.�The OpenACS tarball comprises the core packages and +

          Table�2.2.�Version Compatibility Matrix

          OpenACS Version3.2.5 4.5 4.6 4.6.14.6.24.6.35.0.0
          AOLserver3YesNo
          3.3+ad13MaybeYes
          3.3oacs1MaybeYes
          3.4.2No
          3.4.2oacs1MaybeYesMaybe
          3.5.5MaybeYesNo
          4.0MaybeYes
          PostgreSQL7.0YesNo
          7.2.xYesNo
          7.3.2 - 7.3.4NoYes
          7.4NoMaybe
          Oracle8.1.6MaybeYes
          8.1.7MaybeYes
          9iNoYes
          • OpenACS 5.1.0d2.�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 @@ -38,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.1.0d1 stores + to install OpenFTS.

      4. tDOM, REQUIRED.�OpenACS 5.1.0d2 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 @@ -49,7 +49,7 @@ running Apache with mod_nsd - see this post.

        • AOLserver 3.3oacs1, REQUIRED.�Mat Kovach's source distribution of AOLserver, including all of the patches listed below.

          Mat Kovach is graciously maintaining an AOLserver distribution that - includes all the patches and modules needed to run OpenACS 5.1.0d1. These + includes all the patches and modules needed to run OpenACS 5.1.0d2. These instructions will describe how to install using his source distribution. He also has binaries for SuSE 7.3 and OpenBSD 2.8 (and perhaps more to come), currently located at uptime.openacs.org. 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 -N -r1.20 -r1.21 --- openacs-4/packages/acs-core-docs/www/install-cvs.html 27 Feb 2004 11:20:51 -0000 1.20 +++ openacs-4/packages/acs-core-docs/www/install-cvs.html 4 Mar 2004 14:09:22 -0000 1.21 @@ -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 tmp]# mkdir /cvsroot
           [root tmp]# cvs -d /cvsroot init
           [root 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 -N -r1.21 -r1.22
          --- openacs-4/packages/acs-core-docs/www/install-daemontools.html	27 Feb 2004 11:20:51 -0000	1.21
          +++ openacs-4/packages/acs-core-docs/www/install-daemontools.html	4 Mar 2004 14:09:22 -0000	1.22
          @@ -3,7 +3,7 @@
                 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 root]# mkdir -p /package
              +      services.

              1. Install Daemontools

                download daemontools and install it.

                • Red Hat 8

                  [root root]# mkdir -p /package
                   [root root]# chmod 1755 /package/
                   [root root]# cd /package/
                   [root 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 root]#
                • Install a script to grant non-root users permission to - control daemontools services.

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

                  [root root]# cp /tmp/openacs-5.1.0d2/packages/acs-core-docs/www/files/svgroup.txt /usr/local/bin/svgroup
                   [root root]# chmod 755 /usr/local/bin/svgroup
                  -cp /tmp/openacs-5.1.0d1/packages/acs-core-docs/www/files/svgroup.txt /usr/local/bin/svgroup 
                  +cp /tmp/openacs-5.1.0d2/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 -N -r1.19 -r1.20 --- openacs-4/packages/acs-core-docs/www/install-full-text-search.html 27 Feb 2004 11:20:51 -0000 1.19 +++ openacs-4/packages/acs-core-docs/www/install-full-text-search.html 4 Mar 2004 14:09:22 -0000 1.20 @@ -1,7 +1,7 @@ Install Full Text Search

            Install Full Text Search

            By Joel Aufrecht and Malte Sussdorff

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

            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 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 root]# su - postgres
              @@ -76,7 +76,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 service0]$ /usr/local/pgsql/bin/psql service0 -f /usr/local/src/postgresql-7.3.4/contrib/tsearch/tsearch.sql
      Index: openacs-4/packages/acs-core-docs/www/install-next-add-server.html
      ===================================================================
      RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-next-add-server.html,v
      diff -u -N -r1.1 -r1.2
      --- openacs-4/packages/acs-core-docs/www/install-next-add-server.html	18 Feb 2004 14:43:02 -0000	1.1
      +++ openacs-4/packages/acs-core-docs/www/install-next-add-server.html	4 Mar 2004 14:09:22 -0000	1.2
      @@ -1,5 +1,5 @@
       Running multiple services on one machine

      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.1.0d1 replacing + ip, simply repeat Install OpenACS 5.1.0d2 replacing service0, and change the

      set httpport              8000
       set httpsport             8443 

      Index: openacs-4/packages/acs-core-docs/www/install-openacs-keepalive.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-openacs-keepalive.html,v diff -u -N -r1.4 -r1.5 --- openacs-4/packages/acs-core-docs/www/install-openacs-keepalive.html 27 Feb 2004 11:20:51 -0000 1.4 +++ openacs-4/packages/acs-core-docs/www/install-openacs-keepalive.html 4 Mar 2004 14:09:22 -0000 1.5 @@ -62,6 +62,6 @@ Most of this information comes from Tom Jackson's AOLserver+Daemontools Mini-HOWTO. -

    Table�6.1.�How it Works

    ProgramInvoked by this program ...... using this fileWhere to find errorsLog goes toUse these commands to control it
    svscanboot +

    Table�6.1.�How it Works

    ProgramInvoked by this program ...... using this fileWhere to find errorsLog goes toUse these commands to control it
    svscanboot init/etc/inittabps -auxw | grep readproctitlen/a
    aolserversupervise (a child of svscanboot)/service/service0/run/var/lib/aolserver/service0/log/error.log/var/lib/aolserver/service0/log/service0.logsvc -k /service/service0
    postgresqlRedhat init scripts during boot/etc/init.d/postgresql/usr/local/pgsql/data/server.logservice postgresql start (Red Hat), /etc/init.d/postgresql start (Debian)
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/install-qmail.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-qmail.html,v diff -u -N -r1.21 -r1.22 --- openacs-4/packages/acs-core-docs/www/install-qmail.html 27 Feb 2004 11:20:51 -0000 1.21 +++ openacs-4/packages/acs-core-docs/www/install-qmail.html 4 Mar 2004 14:09:22 -0000 1.22 @@ -29,7 +29,7 @@ tcpserver: usage: tcpserver [ -1UXpPhHrRoOdDqQv ] [ -c limit ] [ -x rules.cdb ] [ -B banner ] [ -g gid ] [ -u uid ] [ -b backlog ] [ -l localname ] [ -t timeout ] host port program [root ucspi-tcp-0.88]# -

    +

    (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 ucspi-tcp-0.88]# cp /tmp/openacs-5.1.0d1/packages/acs-core-docs/www/files/tcp.smtp.txt /etc/tcp.smtp
    +send outgoing mail.

    [root ucspi-tcp-0.88]# cp /tmp/openacs-5.1.0d2/packages/acs-core-docs/www/files/tcp.smtp.txt /etc/tcp.smtp
     [root ucspi-tcp-0.88]# tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
    -cp /tmp/openacs-5.1.0d1/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.1.0d2/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 root]# cd /usr/local/src
     [root src]# wget http://www.qmail.org/netqmail-1.04.tar.gz
     [root 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 qmail-1.03]# rm -f /usr/bin/sendmail /usr/sbin/sendmail
    +make setup check

    Replace sendmail with qmail's wrapper.

    [root qmail-1.03]# rm -f /usr/bin/sendmail /usr/sbin/sendmail
     [root qmail-1.03]# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
     [root 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 alias]# echo "./Maildir" > /var/qmail/bin/.qmail
    -[root alias]# cp /tmp/openacs-5.1.0d1/packages/acs-core-docs/www/files/qmail.rc.txt /var/qmail/rc
    +[root alias]# cp /tmp/openacs-5.1.0d2/packages/acs-core-docs/www/files/qmail.rc.txt /var/qmail/rc
     [root alias]# chmod 755 /var/qmail/rc
     [root alias]# 
     echo "./Maildir" > /var/qmail/bin/.qmail 
    -cp /tmp/openacs-5.1.0d1/packages/acs-core-docs/www/files/qmail.rc.txt /var/qmail/rc 
    +cp /tmp/openacs-5.1.0d2/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 root]# /var/qmail/bin/maildirmake /etc/skel/Maildir
    @@ -142,13 +142,13 @@
     [root root]# mkdir -p /var/qmail/supervise/qmail-smtpd/log
     [root root]# mkdir /var/log/qmail
     [root root]# chown qmaill /var/log/qmail
    -[root root]# cp /tmp/openacs-5.1.0d1/packages/acs-core-docs/www/files/qmailctl.txt /var/qmail/bin/qmailctl
    +[root root]# cp /tmp/openacs-5.1.0d2/packages/acs-core-docs/www/files/qmailctl.txt /var/qmail/bin/qmailctl
     [root root]# chmod 755 /var/qmail/bin/qmailctl
     [root root]# ln -s /var/qmail/bin/qmailctl /usr/bin
    -[root root]# cp /tmp/openacs-5.1.0d1/packages/acs-core-docs/www/files/qmail-send-run.txt /var/qmail/supervise/qmail-send/run 
    -[root root]# cp /tmp/openacs-5.1.0d1/packages/acs-core-docs/www/files/qmail-send-log-run.txt /var/qmail/supervise/qmail-send/log/run
    -[root root]# cp /tmp/openacs-5.1.0d1/packages/acs-core-docs/www/files/qmail-smtpd-run.txt /var/qmail/supervise/qmail-smtpd/run
    -[root root]# cp /tmp/openacs-5.1.0d1/packages/acs-core-docs/www/files/qmail-smtpd-log-run.txt /var/qmail/supervise/qmail-smtpd/log/run
    +[root root]# cp /tmp/openacs-5.1.0d2/packages/acs-core-docs/www/files/qmail-send-run.txt /var/qmail/supervise/qmail-send/run 
    +[root root]# cp /tmp/openacs-5.1.0d2/packages/acs-core-docs/www/files/qmail-send-log-run.txt /var/qmail/supervise/qmail-send/log/run
    +[root root]# cp /tmp/openacs-5.1.0d2/packages/acs-core-docs/www/files/qmail-smtpd-run.txt /var/qmail/supervise/qmail-smtpd/run
    +[root root]# cp /tmp/openacs-5.1.0d2/packages/acs-core-docs/www/files/qmail-smtpd-log-run.txt /var/qmail/supervise/qmail-smtpd/log/run
     [root root]# chmod 755 /var/qmail/supervise/qmail-send/run
     [root root]# chmod 755 /var/qmail/supervise/qmail-send/log/run
     [root 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.1.0d1/packages/acs-core-docs/www/files/qmailctl.txt /var/qmail/bin/qmailctl
    +cp /tmp/openacs-5.1.0d2/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.1.0d1/packages/acs-core-docs/www/files/qmail-send-run.txt /var/qmail/supervise/qmail-send/run
    -cp /tmp/openacs-5.1.0d1/packages/acs-core-docs/www/files/qmail-send-log-run.txt /var/qmail/supervise/qmail-send/log/run
    -cp /tmp/openacs-5.1.0d1/packages/acs-core-docs/www/files/qmail-smtpd-run.txt /var/qmail/supervise/qmail-smtpd/run
    -cp /tmp/openacs-5.1.0d1/packages/acs-core-docs/www/files/qmail-smtpd-log-run.txt /var/qmail/supervise/qmail-smtpd/log/run
    +cp /tmp/openacs-5.1.0d2/packages/acs-core-docs/www/files/qmail-send-run.txt /var/qmail/supervise/qmail-send/run
    +cp /tmp/openacs-5.1.0d2/packages/acs-core-docs/www/files/qmail-send-log-run.txt /var/qmail/supervise/qmail-send/log/run
    +cp /tmp/openacs-5.1.0d2/packages/acs-core-docs/www/files/qmail-smtpd-run.txt /var/qmail/supervise/qmail-smtpd/run
    +cp /tmp/openacs-5.1.0d2/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 -N -r1.21 -r1.22
    --- openacs-4/packages/acs-core-docs/www/install-redhat.html	27 Feb 2004 11:20:51 -0000	1.21
    +++ openacs-4/packages/acs-core-docs/www/install-redhat.html	4 Mar 2004 14:09:22 -0000	1.22
    @@ -26,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 @@ -54,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 @@ -75,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 @@ -87,13 +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 @@ -119,7 +119,7 @@ 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 Index: openacs-4/packages/acs-core-docs/www/install-steps.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-steps.html,v diff -u -N -r1.14 -r1.15 --- openacs-4/packages/acs-core-docs/www/install-steps.html 27 Feb 2004 11:20:51 -0000 1.14 +++ openacs-4/packages/acs-core-docs/www/install-steps.html 4 Mar 2004 14:09:22 -0000 1.15 @@ -4,7 +4,7 @@ Install PostgreSQL).

    2. Install AOLserver (Install AOLserver 4) .

    3. Create a unique database and system user. Install the OpenACS tarball, start and AOLserver instance, and use the OpenACS web pages to complete installation - (see Install OpenACS 5.1.0d1).

    There are specific instructions available for Mac OS X and + (see Install OpenACS 5.1.0d2).

  • There are specific instructions available for Mac OS X and Windows2000 available (see the section called “OpenACS Installation Guide for Mac OS X” or the section called “OpenACS Installation Guide for Windows2000” for those).

    Binaries and other shortcuts

    1. The patched version of AOLserver we use is not currently available in a precompiled binary.

    2. @@ -39,7 +39,7 @@ dropdb service0 createdb service0

    Paths and Users

    Table�2.1.�Default directories for a standard install

    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 (SERVERROOT)/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.1.0d1/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.1.0d2/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 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 -N -r1.9 -r1.10 --- openacs-4/packages/acs-core-docs/www/ix01.html 27 Feb 2004 11:20:51 -0000 1.9 +++ openacs-4/packages/acs-core-docs/www/ix01.html 4 Mar 2004 14:09:22 -0000 1.10 @@ -1,2 +1,2 @@ -Index

    Index

    C

    computeroutput
    code, Code
    cvs
    initializing, Initialize CVS (OPTIONAL)
    setup, Using CVS with an OpenACS Site

    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, Installation Option 2: 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.x
    Linux/Unix, Upgrading 4.5 or higher to 4.6.3

    X

    XML guidelines, Why DocBook?
    xref
    linkend, Links
    xreflabel, Headlines, Sections
    View comments on this page at openacs.org
    +Index

    Index

    C

    computeroutput
    code, Code
    cvs
    initializing, Initialize CVS (OPTIONAL)
    setup, Using CVS with an OpenACS Site

    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, Installation Option 2: 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.x
    Linux/Unix, Upgrading 4.5 or higher to 4.6.3

    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/maint-performance.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/maint-performance.html,v diff -u -N -r1.9 -r1.10 --- openacs-4/packages/acs-core-docs/www/maint-performance.html 27 Feb 2004 11:20:52 -0000 1.9 +++ openacs-4/packages/acs-core-docs/www/maint-performance.html 4 Mar 2004 14:09:22 -0000 1.10 @@ -1,7 +1,7 @@ Diagnosing Performance Problems

    Diagnosing Performance Problems

    • Did performance problems happen overnight, or did they sneak up on you? Any clue what caused the performance problems (e.g. loading 20K users into .LRN)

    • Is the file system out of space? Is the machine swapping to disk constantly?

    • Isolating and solving database problems.

      • Without daily internal maintenance, most databases slowly degrade in performance. For PostGreSQL, see the section called “Vacuum Postgres nightly”. For Oracle, use exec dbms_stats.gather_schema_stats('SCHEMA_NAME') (Andrew Piskorski's Oracle notes).

      • You can track the exact amount of time each database query on a page takes:

        1. Go to Main Site : Site-Wide Administration : Install Software

        2. Click on "Install New Application" in "Install from OpenACS Repository"

        3. Choose "ACS Developer Support">

        4. After install is complete, restart the server.

        5. Browse to Developer Support, which is automatically mounted at /ds. -

        6. Turn on Database statistics

        7. Browse directly to a slow page and click "Request Information" at the bottom of the page.

        8. This should return a list of database queries on the page, including the exact query (so it can be cut-paste into psql or oracle) and the time each query took.

          Figure�6.8.�Query Analysis example

          Query Analysis example
      • Identify a runaway Oracle query: first, use ps aux or top to get the UNIX process ID of a runaway Oracle process.

        Log in to SQL*Plus as the admin:

        [service0 ~]$ svrmgrl
        +              

      • Turn on Database statistics

      • Browse directly to a slow page and click "Request Information" at the bottom of the page.

      • This should return a list of database queries on the page, including the exact query (so it can be cut-paste into psql or oracle) and the time each query took.

        Figure�6.8.�Query Analysis example

        Query Analysis example
    • Identify a runaway Oracle query: first, use ps aux or top to get the UNIX process ID of a runaway Oracle process.

      Log in to SQL*Plus as the admin:

      [service0 ~]$ svrmgrl
       
       Oracle Server Manager Release 3.1.7.0.0 - Production
       
      Index: openacs-4/packages/acs-core-docs/www/maintenance-deploy.html
      ===================================================================
      RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/maintenance-deploy.html,v
      diff -u -N -r1.4 -r1.5
      --- openacs-4/packages/acs-core-docs/www/maintenance-deploy.html	27 Feb 2004 11:20:52 -0000	1.4
      +++ openacs-4/packages/acs-core-docs/www/maintenance-deploy.html	4 Mar 2004 14:09:22 -0000	1.5
      @@ -1,7 +1,7 @@
       Staged Deployment for Production Networks

      Staged Deployment for Production Networks

      By Joel Aufrecht

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

      This section describes minimal-risk methods for deploying changes on a production network. The important characteristics of a safe change deployment include: (THIS SECTION IN DEVELOPMENT)

      • Control: You know for sure that the change you are making is the change that you intend to make and is the change that you tested.

      • Rollback: If anything goes wrong, you can return to the previous working configuration safely and quickly.

      Deployment with CVS

      With this method, we control the files on a site via CVS. In this example, there is one development site and one production site. The only way files should move between the two is via cvs. The production site could run "HEAD" from cvs (raw example from chat log:)

      +        

      This section describes minimal-risk methods for deploying changes on a production network. The important characteristics of a safe change deployment include: (THIS SECTION IN DEVELOPMENT)

      • Control: You know for sure that the change you are making is the change that you intend to make and is the change that you tested.

      • Rollback: If anything goes wrong, you can return to the previous working configuration safely and quickly.

      Deployment with CVS

      With this method, we control the files on a site via CVS. In this example, there is one development site and one production site. The only way files should move between the two is via cvs. The production site could run "HEAD" from cvs (raw example from chat log:)

       1) change the file on dev as desired
       2) test the new file
       3) commit the file: 
      @@ -17,4 +17,4 @@
       the stuff in -m "foo" is a comment visible only from within cvs commands
       4) update the file on production:
       cd /web/foo-prod/www
      -cvs up index.adp

      The drawback to using HEAD as the live code is that you cannot commit new work on the development server without erasing the definition of 'working production code.' So a better method is to use a tag. This guarantees that, at any time in the future, you can retrieve exactly the same set of code. This is useful for both of the characteristics of safe change deployment. For control, you can use tags to define a body of code, test that code, and then know that what you are deploying is exactly that code. For rollback, you can use return to the last working tag if the new tag (or new, untagged changes) cause problems. .... example of using tags to follow ...

      A/B Deployment

      The approach taken in this section is to always create a new service with the desired changes, running in parallel with the existing site. This guarantees control, at least at the final step of the process: you know what changes you are about to make because you can see them directly. It does not, by itself, guarantee the entire control chain. You need additional measures to make sure that the change you are making is exactly and completely the change you intended to make and tested previously, and nothing more. Those additional measures typically take the form of source control tags and system version numbers. The parallel-server approach also guarantees rollback because the original working service is not touched; it is merely set aside.

      This approach can has limitations. If the database or file system regularly receiving new data, you must interrupt this function or risk losing data in the shuffle. It also requires extra steps if the database will be affected.

      Simple A/B Deployment: Database is not changed

      Figure�6.2.�Simple A/B Deployment - Step 1

      Simple A/B Deployment - Step 1

      Figure�6.3.�Simple A/B Deployment - Step 2

      Simple A/B Deployment - Step 2

      Figure�6.4.�Simple A/B Deployment - Step 3

      Simple A/B Deployment - Step 3

      Complex A/B Deployment: Database is changed

      Figure�6.5.�Complex A/B Deployment - Step 1

      Complex A/B Deployment - Step 1

      Figure�6.6.�Complex A/B Deployment - Step 2

      Complex A/B Deployment - Step 2

      Figure�6.7.�Complex A/B Deployment - Step 3

      Complex A/B Deployment - Step 3
      View comments on this page at openacs.org
      +cvs up index.adp

      The drawback to using HEAD as the live code is that you cannot commit new work on the development server without erasing the definition of 'working production code.' So a better method is to use a tag. This guarantees that, at any time in the future, you can retrieve exactly the same set of code. This is useful for both of the characteristics of safe change deployment. For control, you can use tags to define a body of code, test that code, and then know that what you are deploying is exactly that code. For rollback, you can use return to the last working tag if the new tag (or new, untagged changes) cause problems. .... example of using tags to follow ...

    A/B Deployment

    The approach taken in this section is to always create a new service with the desired changes, running in parallel with the existing site. This guarantees control, at least at the final step of the process: you know what changes you are about to make because you can see them directly. It does not, by itself, guarantee the entire control chain. You need additional measures to make sure that the change you are making is exactly and completely the change you intended to make and tested previously, and nothing more. Those additional measures typically take the form of source control tags and system version numbers. The parallel-server approach also guarantees rollback because the original working service is not touched; it is merely set aside.

    This approach can has limitations. If the database or file system regularly receiving new data, you must interrupt this function or risk losing data in the shuffle. It also requires extra steps if the database will be affected.

    Simple A/B Deployment: Database is not changed

    Figure�6.2.�Simple A/B Deployment - Step 1

    Simple A/B Deployment - Step 1

    Figure�6.3.�Simple A/B Deployment - Step 2

    Simple A/B Deployment - Step 2

    Figure�6.4.�Simple A/B Deployment - Step 3

    Simple A/B Deployment - Step 3

    Complex A/B Deployment: Database is changed

    Figure�6.5.�Complex A/B Deployment - Step 1

    Complex A/B Deployment - Step 1

    Figure�6.6.�Complex A/B Deployment - Step 2

    Complex A/B Deployment - Step 2

    Figure�6.7.�Complex A/B Deployment - Step 3

    Complex A/B Deployment - Step 3
    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 -N -r1.30 -r1.31 --- openacs-4/packages/acs-core-docs/www/object-identity.html 27 Feb 2004 11:20:52 -0000 1.30 +++ openacs-4/packages/acs-core-docs/www/object-identity.html 4 Mar 2004 14:09:22 -0000 1.31 @@ -1,18 +1,18 @@ 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.1.0d1 is the explicit representation +

    One of the major design features of OpenACS 5.1.0d2 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.1.0d1 data model this +scope) to identify an object. In the 5.1.0d2 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.1.0d1 data model this +object (the person's membership in a group). In the 5.1.0d2 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/objects.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/objects.html,v diff -u -N -r1.31 -r1.32 --- openacs-4/packages/acs-core-docs/www/objects.html 27 Feb 2004 11:20:52 -0000 1.31 +++ openacs-4/packages/acs-core-docs/www/objects.html 4 Mar 2004 14:09:22 -0000 1.32 @@ -2,7 +2,7 @@ OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

    Overview

    -Developing data models in OpenACS 5.1.0d1 is much like developing data models +Developing data models in OpenACS 5.1.0d2 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 @@ -78,7 +78,7 @@ 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

    +

    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  
    @@ -138,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 @@ -163,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: @@ -211,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 @@ -314,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.1.0d1 data +There are two basic rules you should follow when designing OpenACS 5.1.0d2 data models: @@ -369,7 +369,7 @@ requires a good amount of thought at design time even for simple applications.

    Summary

    -Hooking into the OpenACS 5.1.0d1 object system brings the application developer +Hooking into the OpenACS 5.1.0d2 object system brings the application developer numerous benefits, and doing it involves only four easy steps: 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 -N -r1.14 -r1.15 --- openacs-4/packages/acs-core-docs/www/openacs-unpack.html 18 Feb 2004 14:43:02 -0000 1.14 +++ openacs-4/packages/acs-core-docs/www/openacs-unpack.html 4 Mar 2004 14:09:22 -0000 1.15 @@ -1,17 +1,17 @@ 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 root]# cd /tmp
    -[root tmp]# tar xzf openacs-5.1.0d1.tgz
    +[root tmp]# tar xzf openacs-5.1.0d2.tgz
     cd /tmp
    -tar xzf openacs-5.1.0d1.tgz

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

    [root root]# cd /tmp
    +tar xzf openacs-5.1.0d2.tgz

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

    [root root]# cd /tmp
     [root 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 tmp]# mv openacs-4 openacs-5.1.0d1
    +[root tmp]# mv openacs-4 openacs-5.1.0d2
     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.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/openacs.html,v diff -u -N -r1.30 -r1.31 --- openacs-4/packages/acs-core-docs/www/openacs.html 27 Feb 2004 11:20:52 -0000 1.30 +++ openacs-4/packages/acs-core-docs/www/openacs.html 4 Mar 2004 14:09:22 -0000 1.31 @@ -1,4 +1,4 @@ -Install OpenACS 5.1.0d1

    Install OpenACS 5.1.0d1

    by Vinod Kurup

    +Install OpenACS 5.1.0d2

    Install OpenACS 5.1.0d2

    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, @@ -69,8 +69,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 root]# su - service0
       [service0 service0]$ cd /var/lib/aolserver
      -[service0 aolserver]$ tar xzf /tmp/openacs-5.1.0d1.tgz
      -[service0 aolserver]$ mv openacs-5.1.0d1 service0
      +[service0 aolserver]$ tar xzf /tmp/openacs-5.1.0d2.tgz
      +[service0 aolserver]$ mv openacs-5.1.0d2 service0
       [service0 aolserver]$ chmod -R 775 service0
       [service0 aolserver]$ chown -R service0.service0 service0
       [service0 aolserver]$ ls -al
      @@ -83,8 +83,8 @@
       [root root]#
       su - service0
       cd /var/lib/aolserver
      -tar xzf /tmp/openacs-5.1.0d1.tgz
      -mv openacs-5.1.0d1 service0
      +tar xzf /tmp/openacs-5.1.0d2.tgz
      +mv openacs-5.1.0d2 service0
       chmod -R 755 service0
       chgrp -R service0.service0 service0
       exit
    2. Add the Service to CVS (OPTIONAL)

    3. Prepare the database

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

    • You should see a page from the webserver titled OpenACS Installation: @@ -345,8 +345,8 @@ 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.1.0d1 is now up and running! -

  • Installation Option 3: Install from CVS

    If you want to track fresh code developments inbetween releases, or you are an OpenACS core developer, you may want to install from CVS. This is identical to Option 2 except that you get the files from CVS instead of the tarball: CVS Checkout Instructions. So, instead of tar xzf /tmp/openacs-5.1.0d1.tgz, cvs -z3 -d :pserver:anonymous@openacs.org:/cvsroot co acs-core.

    Next Steps

    Installation Option 3: Install from CVS

    If you want to track fresh code developments inbetween releases, or you are an OpenACS core developer, you may want to install from CVS. This is identical to Option 2 except that you get the files from CVS instead of the tarball: CVS Checkout Instructions. So, instead of tar xzf /tmp/openacs-5.1.0d2.tgz, cvs -z3 -d :pserver:anonymous@openacs.org:/cvsroot co acs-core.

    Next Steps

    • Use daemontools supervice and svc, or inittab, to automate server startup and shutdown.

    • Install Full Text Search (OPTIONAL). If you have installed OpenFTS and enabled OpenFTS, you can now install the OpenFTS Driver package and Full Text Search Engine package in the OpenACS service.

    • This is a good time to make a backup of your service. If this is a production site, you should set up automatic nightly backups.

    • If you want traffic reports, set up analog or another log 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 -N -r1.30 -r1.31 --- openacs-4/packages/acs-core-docs/www/oracle.html 27 Feb 2004 11:20:52 -0000 1.30 +++ openacs-4/packages/acs-core-docs/www/oracle.html 4 Mar 2004 14:09:22 -0000 1.31 @@ -4,7 +4,7 @@

    Note

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

    - OpenACS 5.1.0d1 will install with Oracle 9i but has not been extensively tested so may still have bugs or tuning issues. + OpenACS 5.1.0d2 will install with Oracle 9i but has not been extensively tested so may still have bugs or tuning issues.

    This document assumes that you'll be installing Oracle on the same 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 -N -r1.30 -r1.31 --- openacs-4/packages/acs-core-docs/www/packages.html 27 Feb 2004 11:20:52 -0000 1.30 +++ openacs-4/packages/acs-core-docs/www/packages.html 4 Mar 2004 14:09:22 -0000 1.31 @@ -56,7 +56,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.1.0d1 server is laid out: + Here is how an OpenACS 5.1.0d2 server is laid out:

     ROOT/
         bin/
    @@ -123,7 +123,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.1.0d1, this tool is called the APM.
    +      removal. In OpenACS 5.1.0d2, 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 @@ -145,7 +145,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.1.0d1 that take advantage of the APM's package + management features in OpenACS 5.1.0d2 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. @@ -433,7 +433,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.1.0d1, administrators can define an arbitrary mapping between the + In OpenACS 5.1.0d2, 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 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 -N -r1.24 -r1.25 --- openacs-4/packages/acs-core-docs/www/permissions-tediously-explained.html 27 Feb 2004 11:20:52 -0000 1.24 +++ openacs-4/packages/acs-core-docs/www/permissions-tediously-explained.html 4 Mar 2004 14:09:22 -0000 1.25 @@ -100,7 +100,7 @@

    Context Hierarchy

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

    Table�11.1.�Context Hierarchy Example

    A

    +

    Table�11.1.�Context Hierarchy Example

    A

    object_id=10

    B

    object_id=20 @@ -116,7 +116,7 @@ This can be represented in the acs_objects table by the following entries: -

    Table�11.2.�acs_objects example data

    object_idcontext_id
    2010
    3010
    4020
    5020
    6030

    +

    Table�11.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, 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 -N -r1.30 -r1.31 --- openacs-4/packages/acs-core-docs/www/permissions.html 27 Feb 2004 11:20:52 -0000 1.30 +++ openacs-4/packages/acs-core-docs/www/permissions.html 4 Mar 2004 14:09:22 -0000 1.31 @@ -2,7 +2,7 @@ OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

    Overview

    -The OpenACS 5.1.0d1 Permissions system allows developers and administrators to +The OpenACS 5.1.0d2 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.1.0d1 has two auxiliary mechanisms for making this +site. Therefore, OpenACS 5.1.0d2 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.1.0d1 object type system, +contained a meta-data system much like the OpenACS 5.1.0d2 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.1.0d1 solves both of these modeling problems by introducing a new +OpenACS 5.1.0d2 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.1.0d1, a privilege models the right to perform some operation on +In OpenACS 5.1.0d2, 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.1.0d1, +read. write or execute privileges on files and directories. In OpenACS 5.1.0d2, 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.1.0d1 kernel data model actually defines these +contains. The OpenACS 5.1.0d2 kernel data model actually defines these privileges as follows:

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

    Object Context

    -In OpenACS 5.1.0d1, an object context is a generalization of the scoping +In OpenACS 5.1.0d2, 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: @@ -179,7 +179,7 @@ person or a group of people or the general public (itself a group of people).

    -In OpenACS 5.1.0d1, rather than breaking the world into a limited set of scopes, +In OpenACS 5.1.0d2, 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 @@ -196,7 +196,7 @@ application. With only row-level permissions it is not obvious how to reasonably initialize the access control list when creating a message. At best, we have to explicitly grant various read and write -privileges whenever we create a message, which is tedious. In OpenACS 5.1.0d1, +privileges whenever we create a message, which is tedious. In OpenACS 5.1.0d2, 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 @@ -326,7 +326,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.1.0d1 template system +The if tag is something that the OpenACS 5.1.0d2 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 @@ -340,7 +340,7 @@ permissions to notes that she wanted to make public or whatever. But that's beyond the scope of this example.

    Summary

    -OpenACS 5.1.0d1 defines three separate mechanisms for specifying access control +OpenACS 5.1.0d2 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, 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 -N -r1.29 -r1.30 --- openacs-4/packages/acs-core-docs/www/postgres.html 27 Feb 2004 11:20:52 -0000 1.29 +++ openacs-4/packages/acs-core-docs/www/postgres.html 4 Mar 2004 14:09:22 -0000 1.30 @@ -1,7 +1,7 @@ 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.1.0d1 will run with PostgreSQL 7.3.2, 7.3.3, and 7.3.4. 7.3.4 is the recommended version of PostgreSQL. PostgreSQL 7.4 has been verified.

    • Special notes for Mac OS X.�If you are running Mac OS X prior to 10.3, you should be able to install and use PostGreSQL 7.3.x. Mac OS X 10.3 requires PostGreSQL 7.4.

    • Special Notes for Debian.�

      Debian users, especially Debian stable users, should +

    Skip this section if you will run only Oracle.

    OpenACS 5.1.0d2 will run with PostgreSQL 7.3.2, 7.3.3, and 7.3.4. 7.3.4 is the recommended version of PostgreSQL. PostgreSQL 7.4 has been verified.

    • Special notes for Mac OS X.�If you are running Mac OS X prior to 10.3, you should be able to install and use PostGreSQL 7.3.x. Mac OS X 10.3 requires PostGreSQL 7.4.

    • Special Notes for Debian.�

      Debian users, especially Debian stable users, should install PostGreSQL from source as detailed below. Debian unstable users: the following process has been known to work (but you should double-check that the version of PostGreSQL is @@ -198,11 +198,11 @@ state. Red Hat and Debian and SuSE each work a little differently. If you haven't untarred the OpenACS tarball, you will need to do so now to access the postgresql.txt file.

      • Red Hat RPM:

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

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

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

        [root src]# cp /tmp/openacs-5.1.0d2/packages/acs-core-docs/www/files/postgresql.txt /etc/init.d/postgresql
         [root src]# chown root.root /etc/rc.d/init.d/postgresql
         [root src]# chmod 755 /etc/rc.d/init.d/postgresql
         [root src]# 
        -cp /tmp/openacs-5.1.0d1/packages/acs-core-docs/www/files/postgresql.txt /etc/init.d/postgresql
        +cp /tmp/openacs-5.1.0d2/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 root]# service postgresql stop
         Stopping PostgreSQL: ok
        @@ -225,7 +225,7 @@
         [root ~]# chown root.root /etc/init.d/postgresql
         [root ~]# chmod 755 /etc/init.d/postgresql
         [root ~]# 
        -cp /tmp/openacs-5.1.0d1/packages/acs-core-docs/www/files/postgresql.txt /etc/init.d/postgresql
        +cp /tmp/openacs-5.1.0d2/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
        @@ -253,7 +253,7 @@
                     rc.d/ part in each of the
                     following commands.
         
        -          

      [root ~]# cp /tmp/openacs-5.1.0d1/packages/acs-core-docs/www/files/postgresql.txt /etc/rc.d/init.d/postgresql
      +          

    [root ~]# cp /tmp/openacs-5.1.0d2/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

    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 -N -r1.21 -r1.22 --- openacs-4/packages/acs-core-docs/www/psgml-for-emacs.html 27 Feb 2004 11:20:52 -0000 1.21 +++ openacs-4/packages/acs-core-docs/www/psgml-for-emacs.html 4 Mar 2004 14:09:22 -0000 1.22 @@ -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 tmp]# cp /tmp/openacs-5.1.0d1/packages/acs-core-docs/www/files/emacs.txt /etc/skel/.emacs
    +      terminals.

    [root tmp]# cp /tmp/openacs-5.1.0d2/packages/acs-core-docs/www/files/emacs.txt /etc/skel/.emacs
     cp: overwrite `/etc/skel/.emacs'? y
     [root 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/release-notes.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/release-notes.html,v diff -u -N -r1.34 -r1.35 --- openacs-4/packages/acs-core-docs/www/release-notes.html 27 Feb 2004 11:20:52 -0000 1.34 +++ openacs-4/packages/acs-core-docs/www/release-notes.html 4 Mar 2004 14:09:22 -0000 1.35 @@ -7,7 +7,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.1.0d1, but an alternative is to use John + not current for OpenACS 5.1.0d2, but an alternative is to use John Sequeira's Oasis VM project.

    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 -N -r1.15 -r1.16 --- openacs-4/packages/acs-core-docs/www/releasing-openacs.html 27 Feb 2004 11:20:52 -0000 1.15 +++ openacs-4/packages/acs-core-docs/www/releasing-openacs.html 4 Mar 2004 14:09:22 -0000 1.16 @@ -1,150 +1 @@ -Chapter�16.�How to package and release OpenACS

    Chapter�16.�How to package and release OpenACS

    1. Update version numbers:

      1. Update /packages/acs-core-docs/www/xml/variables.ent with the new version number. -

      2. Add new section in /packages/acs-core-docs/www/xml/for-everyone/release-notes.xml -

      3. Regenerate all HTML docs

      4. Update /readme.txt with the new version number

      5. Update version number in all of the core packages. Here's a bash/perl script which works but could be made easier to use. Run it from the tarball root:

        #!/bin/sh
        -# run this file from ../packages to renumber all .info version numbers
        -
        -#---------------------------------------------------------------------
        -# here's what we're looking for
        -#---------------------------------------------------------------------
        -#   <version name="5.1.0d1" url="http:blahblah/acs-kernel-5.1.0d1.apm">
        -#      <provides url="acs-kernel" version="5.1.0d1"/>
        -#---------------------------------------------------------------------
        -# here's what we don't want to touch
        -#---------------------------------------------------------------------
        -#      <requires url="acs-kernel" version="5.0.0b4"/>
        -#---------------------------------------------------------------------
        -
        -for dir in `find -name *.info`
        -  do
        -  perl -p -i -e 's/name="5\.0\.0"/name="5\.1\.0d1"/' $dir
        -  perl -p -i -e 's/-5\.0\.0.apm"/-5\.1\.0d1.apm"/' $dir
        -  perl -p -i -e 's/(provides.*version)="5\.0\.0"/\1="5\.1\.0d1"/' $dir
        -done
      6. Rebuild the Changelog. I use a tool called cvs2cl. Run this command from the package root to automatically generate a Changelog file in the same dir:

        cd /var/log/aolserver/service0
        -perl /var/tmp/cvs2cl/cvs2cl.pl -F oacs-5-0 --delta openacs-5-0-0-final:oacs-5-0
      7. - Commit changes -

    2. Check out OpenACS Core. The files must be checked - out through a cvs account with write access and should be a - checkout from the release branch. In this example, we are assuming - this is being done as a local user on openacs.org (which make the - checkout and tagging operations much faster).

      cd /var/tmp
      -cvs -d /cvsroot checkout -r oacs-5-0 acs-core

      Repeat with the dotlrn cvs tree.

      cd /var/tmp
      -mkdir dotlrn-packages
      -cd dotlrn-packages
      -cvs -d /dotlrn-cvsroot checkout -r dotlrn-2-0 dotlrn-all
      -
    3. Tag the tree. If it's a final release of core, move or create the appropriate openacs-major-minor-compat tag. (Ie, if releasing 5.0.3 final, move the openacs-5-0-compat flag.)

      cd /var/tmp/openacs-4
      -cvs tag -F openacs-5-0-0a1
      -cvs tag -F openacs-5-0-compat
      -

      Branching

      When we feature-freeze on HEAD as part of the release process, we are blocking new development. To avoid this, we branch the code at this point, so that new work can continue on HEAD while the branch is stabilized for release. However, branching means that bug fixes have to be synchronized between HEAD and the branch, and bug fixes tend to be more frequent right at this time. Therefore, our actual branch point is as late as possible - essentially, we do not branch until and unless new feature work is actively blocked by the feature freeze. Branching is almost the same as tagging, except for the flag and slightly different tag nomenclature. To see the list of old branches, cvs status -v somefile.

      cvs tag -b oacs-5-0

      Tag dotLRN. Since the dotLRN packages aren't all in one - module, we iterate through all of the modules. Log in first - (cvs login) so that you don't have to log in for each - module.

      cd /var/tmp/dotlrn-packages
      -for dir in *; do ( cd $dir && cvs tag -F dotlrn-2-0-0a1 ); done
      -

      Note that we use the -F flag which will force the tag to the new version (just in - case someone has created the tag already on another version). Excercise care when doing this since - you don't want to inadvertently move a prior release tag. Also if the tagging goes horribly wrong - for some reason you can delete the tag via "cvs tag -d <symbolic_tag>".

    4. Make the tarball

      • openacs-core.�

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

          mkdir /var/tmp/tarball
          -cd /var/tmp/tarball
          -cvs -d /cvsroot export -r openacs-5-0-0a1 acs-core
        2. Generate the tarball.

          cd /var/tmp/tarball
          -mv openacs-4 openacs-5.0.0a1
          -tar cz -f openacs-5.0.0a1.tar.gz openacs-5.0.0a1
          -
      • dotlrn.�

        1. Go to a new working space and export the tagged - files. (was getting errors here trying to use -d, so - gave up and just moved things from openacs-4 to - openacs at the end)

          mkdir /var/tmp/dotlrn-tarball
          -cd /var/tmp/dotlrn-tarball
          -cvs -d /cvsroot export -r openacs-5-0-0a1 acs-core
          -cd /var/tmp/dotlrn-tarball/openacs-4/packages
          -cvs -d /cvsroot export -r openacs-5-0-0a1 dotlrn-prereq
          -cvs -d /dotlrn-cvsroot export -r dotlrn-2-0-0a1 dotlrn-core
          -
        2. Copy the dotlrn install.xml file, which controls - which packages are installed on setup, to the root - location:

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

          cd /var/tmp/dotlrn-tarball
          -mv openacs-4 dotlrn-2.0.0a1
          -tar cz -f dotlrn-2.0.0a1.tar.gz dotlrn-2.0.0a1
          -
    5. Test the new tarball

    6. Update openacs.org frontpage, bug-tracker versions, project page, etc.

    7. Clean up after yourself.

      cd /var/tmp
      -rm -rf tarball dotlrn-tarball dotlrn-packages openacs-5.0.0a1

    - Here is a shell script that automates packaging the tarball: -

    #!/bin/bash
    -
    -# if TAG=1 create the cvs tags otherwise assume they exist.
    -TAG=1
    -
    -# What release version are we building; version format should be
    -# dashes rather than dots eg. OACS_VERSION=5-0-0b4
    -
    -OACS_VERSION=5-0-0b4
    -DOTLRN_VERSION=2-0-0b4
    -
    -OACS_BRANCH=oacs-5-0
    -DOTLRN_BRANCH=dotlrn-2-0
    -
    -DOTLRN_CVSROOT=/dotlrn-cvsroot
    -OACS_CVSROOT=/cvsroot
    -
    -#
    -# Nothing below here should need to change...
    -#
    -BASE=/var/tmp/release-$OACS_VERSION
    -mkdir $BASE
    -if [ ! -d $BASE ]; then 
    -    echo "Failed creating base dir $BASE"
    -    exit 1
    -fi
    -
    -cd $BASE 
    -
    -if [ $TAG -eq 1 ]; then 
    -
    -    # Checkout and tag the release 
    -    cvs -d $OACS_CVSROOT checkout -r $OACS_BRANCH openacs-4
    -    cd openacs-4 
    -    cvs tag -F openacs-$OACS_VERSION 
    -    cd ../
    -
    -
    -    # Checkout and tag the dotlrn release
    -    mkdir dotlrn-packages
    -    cd dotlrn-packages
    -    cvs -d $DOTLRN_CVSROOT checkout -r $DOTLRN_BRANCH dotlrn-all
    -    for dir in *; do ( cd $dir && cvs tag -F dotlrn-$DOTLRN_VERSION ); done
    -    cd ../
    -
    -    #
    -    # Should check for .sql .xql .adp .tcl .html .xml executable files and squak if found.
    -    #
    -
    -fi
    -
    -
    -
    -# Generate tarballs...
    -#
    -
    -# openacs
    -#
    -mkdir tarball
    -cd tarball
    -cvs -d $OACS_CVSROOT export -r openacs-$OACS_VERSION acs-core
    -mv opeancs-4 openacs-${OACS_VERSION//-/.}
    -tar -czf ../openacs-${OACS_VERSION//-/.}.tar.gz openacs-${OACS_VERSION//-/.}
    -cd ..
    -
    -# dotlrn
    -#
    -mkdir dotlrn-tarball
    -cd dotlrn-tarball
    -cvs -d $OACS_CVSROOT export -r openacs-$OACS_VERSION acs-core
    -cd  openacs-4/packages
    -cvs -d $OACS_CVSROOT export -r openacs-$OACS_VERSION dotlrn-prereq
    -cvs -d $DOTLRN_CVSROOT export -r dotlrn-$DOTLRN_VERSION dotlrn-core
    -cd ../..
    -cp -f openacs-4/packages/dotlrn/install.xml openacs-4
    -mv openacs-4 dotlrn-${DOTLRN_VERSION//-/.}
    -tar -czf ../dotlrn-${DOTLRN_VERSION//-/.}.tar.gz dotlrn-${DOTLRN_VERSION//-/.}
    -
    -
    -# Clean up after ourselves...
    -cd $BASE && rm -rf dotlrn-tarball tarball openacs-4 dotlrn-packages
    -
    ($Id$)
    View comments on this page at openacs.org
    +Chapter�16.�Releasing OpenACS
    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 -N -r1.30 -r1.31 --- openacs-4/packages/acs-core-docs/www/request-processor.html 27 Feb 2004 11:20:52 -0000 1.30 +++ openacs-4/packages/acs-core-docs/www/request-processor.html 4 Mar 2004 14:09:22 -0000 1.31 @@ -2,11 +2,11 @@ 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.1.0d1 Request Processor; +This document is a brief introduction to the OpenACS 5.1.0d2 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.1.0d1 Request Processor is a global filter and set of Tcl procs that +The 5.1.0d2 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. @@ -35,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.1.0d1, access control +privileges to the requested part of the site. In OpenACS 5.1.0d2, 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/subsites.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/subsites.html,v diff -u -N -r1.30 -r1.31 --- openacs-4/packages/acs-core-docs/www/subsites.html 27 Feb 2004 11:20:52 -0000 1.30 +++ openacs-4/packages/acs-core-docs/www/subsites.html 4 Mar 2004 14:09:22 -0000 1.31 @@ -253,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.1.0d1 +This is a good example of the leverage available in the OpenACS 5.1.0d2 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.1.0d1, application pages and scripts can be aware of the package +In OpenACS 5.1.0d2, 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. Index: openacs-4/packages/acs-core-docs/www/tutorial-cvs.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-cvs.html,v diff -u -N -r1.5 -r1.6 --- openacs-4/packages/acs-core-docs/www/tutorial-cvs.html 27 Feb 2004 11:20:52 -0000 1.5 +++ openacs-4/packages/acs-core-docs/www/tutorial-cvs.html 4 Mar 2004 14:09:22 -0000 1.6 @@ -58,4 +58,4 @@ initial revision: 1.1 done (many lines omitted) -[service0 myfirstpackage]$

    Figure�10.1.�Upgrading a local CVS repository

    Upgrading a local CVS repository
    View comments on this page at openacs.org
    +[service0 myfirstpackage]$

    Figure�10.1.�Upgrading a local CVS repository

    Upgrading a local CVS repository
    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 -N -r1.22 -r1.23 --- openacs-4/packages/acs-core-docs/www/tutorial-database.html 27 Feb 2004 11:20:52 -0000 1.22 +++ openacs-4/packages/acs-core-docs/www/tutorial-database.html 4 Mar 2004 14:09:22 -0000 1.23 @@ -1,7 +1,7 @@ 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 @@ -31,13 +31,13 @@ repository functions to simplify our database creation. (More information about ACS Objects. More information about the Content Repository.) -

    Figure�9.2.�Tutorial Data Model

    Tutorial Data Model

    The top of each sql file has some +

    Figure�9.2.�Tutorial Data Model

    Tutorial Data Model

    The top of each sql file has some standard comments, including doc tags such as @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 ~]$ cd /var/lib/aolserver/service0/packages/myfirstpackage/sql/postgresql
    -[service0 postgresql]$ emacs myfirstpackage-create.sql

    Paste this into the file and save and close.

    Figure�9.3.�Database Creation Script - master create file

    -- creation script
    +[service0 postgresql]$ emacs myfirstpackage-create.sql

    Paste this into the file and save and close.

    Figure�9.3.�Database Creation Script - master create file

    -- creation script
     --
     -- @author joel@aufrecht.org
     -- @cvs-id &Id:$
    @@ -62,7 +62,7 @@
         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 postgresql]$ emacs myfirstpackage-drop.sql

    Figure�9.4.�Database deletion script

    -- drop script
    +[service0 postgresql]$ emacs myfirstpackage-drop.sql

    Figure�9.4.�Database deletion script

    -- drop script
     --
     -- @author joel@aufrecht.org
     -- @cvs-id &Id:$
    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 -N -r1.22 -r1.23
    --- openacs-4/packages/acs-core-docs/www/tutorial-debug.html	27 Feb 2004 11:20:52 -0000	1.22
    +++ openacs-4/packages/acs-core-docs/www/tutorial-debug.html	4 Mar 2004 14:09:22 -0000	1.23
    @@ -1,7 +1,7 @@
     Debugging and Automated Testing

    Debugging and Automated Testing

    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 @@ -22,16 +22,16 @@ ?�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.
    API-001Invoke mfp::note::create with a specific word as the title.Proc should return an object id.
    API-002Given an object id from API-001, invoke mfp::note::get.Proc should return the specific word in the title.
    API-003Given the object id from API-001, invoke mfp::note::delete.Proc should return 0 for success.

    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 and Joel Aufrecht

    + Search for a note.

    Write automated tests

    by Simon Carstensen and Joel Aufrecht

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

    +

    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 once you get the hang of it.

    Create the directory that will contain the test script and edit the script file. The directory location and file name are standards which are recognized by the automated testing package:

    [service0 www]$ mkdir /var/lib/aolserver/service0/packages/myfirstpackage/tcl/test
     [service0 www]$ cd /var/lib/aolserver/service0/packages/myfirstpackage/tcl/test
    Index: openacs-4/packages/acs-core-docs/www/tutorial-distribute.html
    ===================================================================
    RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-distribute.html,v
    diff -u -N -r1.5 -r1.6
    --- openacs-4/packages/acs-core-docs/www/tutorial-distribute.html	27 Feb 2004 11:20:52 -0000	1.5
    +++ openacs-4/packages/acs-core-docs/www/tutorial-distribute.html	4 Mar 2004 14:09:22 -0000	1.6
    @@ -6,5 +6,5 @@
             (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-newpackage.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-newpackage.html,v diff -u -N -r1.23 -r1.24 --- openacs-4/packages/acs-core-docs/www/tutorial-newpackage.html 27 Feb 2004 11:20:52 -0000 1.23 +++ openacs-4/packages/acs-core-docs/www/tutorial-newpackage.html 4 Mar 2004 14:09:22 -0000 1.24 @@ -1,7 +1,7 @@ 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 @@ -21,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.1.0d1 distribution. -

    Figure�9.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.1.0d2 distribution. +

    Figure�9.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 @@ -54,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 -N -r1.22 -r1.23 --- openacs-4/packages/acs-core-docs/www/tutorial-pages.html 27 Feb 2004 11:20:52 -0000 1.22 +++ openacs-4/packages/acs-core-docs/www/tutorial-pages.html 4 Mar 2004 14:09:22 -0000 1.23 @@ -1,8 +1,8 @@ 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/service0/packages/acs-core-docs/www/files/note-procs.tcl /var/lib/aolserver/service0/packages/myfirstpackage/tcl/

    To make this file take effect, go to the APM and choose "Reload changed" for "MyFirstPackage".

    Page Map

    Our package will have two visible pages. The first shows a list of all objects; the second shows a single object in view or edit mode, and can also be used to add an object. The index page will display the list, but since we might reuse the list later, we'll put it in a seperate file and include it on the index page.

    Figure�9.5.�Page Map

    Page Map

    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/service0/packages/acs-core-docs/www/files/note-procs.tcl /var/lib/aolserver/service0/packages/myfirstpackage/tcl/

    To make this file take effect, go to the APM and choose "Reload changed" for "MyFirstPackage".

    Page Map

    Our package will have two visible pages. The first shows a list of all objects; the second shows a single object in view or edit mode, and can also be used to add an object. The index page will display the list, but since we might reuse the list later, we'll put it in a seperate file and include it on the index page.

    Figure�9.5.�Page Map

    Page Map

    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/update-repository.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/update-repository.html,v diff -u -N -r1.4 -r1.5 --- openacs-4/packages/acs-core-docs/www/update-repository.html 24 Feb 2004 17:42:25 -0000 1.4 +++ openacs-4/packages/acs-core-docs/www/update-repository.html 4 Mar 2004 14:09:22 -0000 1.5 @@ -1,4 +1,4 @@ -How to Update the OpenACS.org repository

    How to Update the OpenACS.org repository

    1. +How to Update the OpenACS.org repository

      How to Update the OpenACS.org repository

      1. Setup a local OpenACS server running 5.0 or better.

      2. Edit packages/acs-admin/www/apm/build-repository.tcl and adjust the Configuration Settings.

      3. @@ -13,4 +13,4 @@ The files will be stored on the server's hard drive in the directory specified by the 'repository_dir' variable in the page script, by default "[acs_root_dir]/www/repository/".

    2. If you're on openacs.org, everything should now be fine. Otherwise, you need to move the entire directory tree to openacs.org:/web/openacs/www/repository, replacing what was already there. -

    View comments on this page at openacs.org
    +

    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/update-translations.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/update-translations.html,v diff -u -N -r1.2 -r1.3 --- openacs-4/packages/acs-core-docs/www/update-translations.html 24 Feb 2004 17:42:25 -0000 1.2 +++ openacs-4/packages/acs-core-docs/www/update-translations.html 4 Mar 2004 14:09:22 -0000 1.3 @@ -1,6 +1,6 @@ -How to Update the translations

    How to Update the translations

    1. +How to Update the translations

      How to Update the translations

      1. Update the translation server. (Approach 1: upgrade to the last release; approach 2: upgrade to head or to an alpha or beta release.) Use CVS up.

      2. Go to ACS Lang admin page and click "Import All Messages"

      3. Resolve conflicts, if any, on the provided page, if any.

      4. Back on the admin page, click the export link. If there are conflicts, the messages will be exported anyway and errors will be shown.

      5. Run the acs-lang/bin/check-catalog.sh script. (This checks for keys no longer in use and some other things. Until it is rolled into the UI, do it manually and check the results and take whatever steps you can intuit you should do.) -

      6. CVS commit the catalog files. Done

      View comments on this page at openacs.org
      +

    2. CVS commit the catalog files. Done

    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/upgrade-openacs-files.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/upgrade-openacs-files.html,v diff -u -N -r1.7 -r1.8 --- openacs-4/packages/acs-core-docs/www/upgrade-openacs-files.html 27 Feb 2004 11:20:52 -0000 1.7 +++ openacs-4/packages/acs-core-docs/www/upgrade-openacs-files.html 4 Mar 2004 14:09:22 -0000 1.8 @@ -1,4 +1,4 @@ -Upgrading the OpenACS files

    Upgrading the OpenACS files

    OpenACS is distributed as a collection of files, available as one big tarball, via CVS, and via automatic download from within the APM. Upgrades work by first changing the file system (via any of the previous methods), and then using the APM to scan the file system, find upgrade scripts, and execute them. This section describes how to upgrade the file system. Starting with OpenACS 5.0, this section can generally be skipped because the OpenACS APM can directly download new files from the openacs.org repository.

    Many OpenACS site developers operate their own CVS repository to keep track of changes from the release OpenACS code. This part describes how to import the latest OpenACS version into your own repository. 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 for a site which is not in a CVS repository.�Unpack the tarball into a new directory and copy its contents on top of your working directory.

      [root root]# su - service0
      +Upgrading the OpenACS files

      Upgrading the OpenACS files

      OpenACS is distributed as a collection of files, available as one big tarball, via CVS, and via automatic download from within the APM. Upgrades work by first changing the file system (via any of the previous methods), and then using the APM to scan the file system, find upgrade scripts, and execute them. This section describes how to upgrade the file system. Starting with OpenACS 5.0, this section can generally be skipped because the OpenACS APM can directly download new files from the openacs.org repository.

      Many OpenACS site developers operate their own CVS repository to keep track of changes from the release OpenACS code. This part describes how to import the latest OpenACS version into your own repository. 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 for a site which is not in a CVS repository.�Unpack the tarball into a new directory and copy its contents on top of your working directory.

        [root root]# su - service0
                 [service0 aolserver]$ cd /var/lib/aolserver
                 [service0 web]$ tar xzf /tmp/openacs-4-6.tgz
                 [service0 web]$ cp -r openacs-4-6/* openacs-4
        @@ -10,7 +10,7 @@
                 cp -r openacs-4-6/* openacs-4
                 exit
      • Upgrading files for a site in a private CVS repository -

        Figure�5.2.�Upgrading a local CVS repository

        Upgrading a local CVS repository
        1. Unpack the new files into a working directory.

          [root root]# su - service0
          +        

          Figure�5.2.�Upgrading a local CVS repository

          Upgrading a local CVS repository
          1. Unpack the new files into a working directory.

            [root root]# su - service0
                         [service0 aolserver]$ cd /tmp
                         [service0 tmp]$ tar xzf openacs-4-6.tgz
                         [service0 tmp]$ cd openacs-4.6

            Import the new files into your cvs repository; where they match existing files, they will become the new version of the file.

            [service0 openacs-4.6]$  cvs import -m "upgrade to OpenACS 4.6" openacs 
            @@ -41,4 +41,4 @@
                     

            1. [service0 ~]$ cd /var/lib/aolserver/service0
                           [service0 service0]$ cvs up -Pd
                           (CVS feedback)
              -            [service0 service0]$
      View comments on this page at openacs.org
      + [service0 service0]$
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/upgrade-overview.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/upgrade-overview.html,v diff -u -N -r1.7 -r1.8 --- openacs-4/packages/acs-core-docs/www/upgrade-overview.html 27 Feb 2004 11:20:53 -0000 1.7 +++ openacs-4/packages/acs-core-docs/www/upgrade-overview.html 4 Mar 2004 14:09:22 -0000 1.8 @@ -1,6 +1,6 @@ -Overview

    Overview

    Starting with Version 4.5, all OpenACS core packages support +Overview

    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.

    If all of these conditions are true:

    • Your OpenACS Core is 5.0.0 or later

    • You do not keep your OpenACS site in a local CVS repository

    • You do not have any custom code

    then you can upgrade automatically using the automated installer in the OpenACS Package Manager (APM), and you can probably skip the rest of this chapter. To upgrade directly from the OpenACS repository using the APM:

    1. Browse to the Installer.

    2. Click install or upgrade under "Install from OpenACS Repository" and select the packages to install or upgrade.

    3. The APM will download the requested packages from OpenACS.org, install the files on your hard drive, run any appropriate database upgrade scripts, and prompt you to restart the server. After restarting the server again, the upgrade is complete.

    Figure�5.1.�Upgrading with the APM

    Upgrading with the APM

    It's always a good idea to precede an upgrade attempt with a snapshot backup.

    Table�5.1.�Assumptions in this section

    name of OpenACS userservice0
    OpenACS server nameservice0
    Root of OpenACS file tree/var/lib/aolserver/service0
    Database backup directory/var/lib/aolserver/service0/database-backup
    View comments on this page at openacs.org
    + OpenACS prior to 4.5, upgrading will require manual effort.

    If all of these conditions are true:

    • Your OpenACS Core is 5.0.0 or later

    • You do not keep your OpenACS site in a local CVS repository

    • You do not have any custom code

    then you can upgrade automatically using the automated installer in the OpenACS Package Manager (APM), and you can probably skip the rest of this chapter. To upgrade directly from the OpenACS repository using the APM:

    1. Browse to the Installer.

    2. Click install or upgrade under "Install from OpenACS Repository" and select the packages to install or upgrade.

    3. The APM will download the requested packages from OpenACS.org, install the files on your hard drive, run any appropriate database upgrade scripts, and prompt you to restart the server. After restarting the server again, the upgrade is complete.

    Figure�5.1.�Upgrading with the APM

    Upgrading with the APM

    It's always a good idea to precede an upgrade attempt with a snapshot backup.

    Table�5.1.�Assumptions in this section

    name of OpenACS userservice0
    OpenACS server nameservice0
    Root of OpenACS file tree/var/lib/aolserver/service0
    Database backup directory/var/lib/aolserver/service0/database-backup
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/upgrade-supporting.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/upgrade-supporting.html,v diff -u -N -r1.5 -r1.6 --- openacs-4/packages/acs-core-docs/www/upgrade-supporting.html 24 Feb 2004 17:42:25 -0000 1.5 +++ openacs-4/packages/acs-core-docs/www/upgrade-supporting.html 4 Mar 2004 14:09:22 -0000 1.6 @@ -56,8 +56,7 @@ (many lines omitted) [service0 bin]$ -
  • Use perl to replace timestamp with timestamptz in the dump file.

    find . -type f -name "*sql" | xargs perl -p -i.tmp -e "s/timestamp with time zone/timestamptz/g"
    -          find . -type f -name "*sql" | xargs perl -p -i.tmp -e "s/\\wtimestamp[^t]/ timestamptz/g"
  • Create a new user for PostgreSQL 7.3.x, as per the +

  • Use perl to replace timestamp with timestamptz in the dump file. See example perl code in step two in /contrib/misc/upgrade_4.6_to_5.0.sh

  • Create a new user for PostgreSQL 7.3.x, as per the Postgres installation guide. Keep in mind that your installation location is different, and your startup script (/etc/init.d/postgres73 should be named differently. You 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 -N -r1.14 -r1.15 --- openacs-4/packages/acs-core-docs/www/upgrade.html 12 Feb 2004 13:51:40 -0000 1.14 +++ openacs-4/packages/acs-core-docs/www/upgrade.html 4 Mar 2004 14:09:22 -0000 1.15 @@ -1,4 +1,4 @@ -Chapter�5.�Upgrading

    Chapter�5.�Upgrading

    by Joel Aufrecht

    +Chapter�5.�Upgrading

    Chapter�5.�Upgrading

    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
    Index: openacs-4/packages/acs-core-docs/www/variables.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/variables.html,v diff -u -N -r1.9 -r1.10 --- openacs-4/packages/acs-core-docs/www/variables.html 27 Feb 2004 11:20:53 -0000 1.9 +++ openacs-4/packages/acs-core-docs/www/variables.html 4 Mar 2004 14:09:22 -0000 1.10 @@ -3,7 +3,7 @@ by OpenACS documentation staff.

    Date and Time Variables

    Starting with OpenACS 5.0 and the introduction of acs-lang, we recommend retrieving date/time information from the database in - ANSI format and then using lc_time_fmt to format it for display.

    Example�12.1.�Getting datetime from the database ANSI-style

    db_multirow -extend { mydate_pretty } {
    +    ANSI format and then using lc_time_fmt to format it for display.

    Example�12.1.�Getting datetime from the database ANSI-style

    db_multirow -extend { mydate_pretty } {
         select to_char(mydate, 'YYYY-MM-DD HH24:MI:SS') as mydate_ansi,
               ...
         ...
    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 -N -r1.30 -r1.31
    --- openacs-4/packages/acs-core-docs/www/win2k-installation.html	27 Feb 2004 11:20:53 -0000	1.30
    +++ openacs-4/packages/acs-core-docs/www/win2k-installation.html	4 Mar 2004 14:09:22 -0000	1.31
    @@ -1,11 +1,11 @@
    -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 and the ArsDigita binary distributions are no longer available. Currently - (10/2003), the best option to get OpenACS 5.1.0d1 running on Windows + (10/2003), the best option to get OpenACS 5.1.0d2 running on Windows is to use VMware and John Sequeira's Oasis VM distribution @@ -249,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/releasing-openacs.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/xml/releasing-openacs.xml,v diff -u -N -r1.14 -r1.15 --- openacs-4/packages/acs-core-docs/www/xml/releasing-openacs.xml 27 Feb 2004 11:20:57 -0000 1.14 +++ openacs-4/packages/acs-core-docs/www/xml/releasing-openacs.xml 4 Mar 2004 14:09:24 -0000 1.15 @@ -7,7 +7,9 @@ ]> - How to package and release OpenACS + Releasing OpenACS +
    + OpenACS Core and .LRN Update version numbers: @@ -183,7 +185,7 @@ release script missing ($Id$) - +
    How to Update the OpenACS.org repository @@ -229,7 +231,28 @@
    +
    + How to package and release an OpenACS Package + In this example, we are packaging and releasing myfirstpackage as version 1.0.0, which is compatible with OpenACS 5.0.x. + + + Update the version number of your packages in the APM. + + + Make sure all changes are committed. + + + Tag the updated work.: + cd /var/lib/aolserver/service0/packages/myfirstpackage +cvs tag myfirstpackages-1-0-0-final +cvs tag -F openacs-5-0-compat + + + + Done. The package will be added to the repository automatically. If the correct version does not show up within 24 hours, ask for help on the OpenACS.org development forum. +
    +
    How to Update the translations