Forum OpenACS Q&A: How to install dotLRN 2.1/OpenACS 5.1 on Redhat 9 Enterprise and Oracle 9.2

Hi all,

thanks to Dirk I have installed dotLRN 2.1 from CVS (Branch oacs-5-1) on Redhat 9 and Oracle 9.2.

Please find below the steps. Maybe someone is interested to verify that. Then we could add it to the documentation.

Greetings,
Nima



Steps taken

In the following I assume that Redhat and Oracle are already installed. $OPENACS_SERVICE_NAME is dotlrn. Unix group is "web". Oracle is installed under "/lms/u01/app/oracle".

Preparations for Oracle

  1. Getting database info
    su – oracle
    echo $ORACLE_SID
    echo $ORACLE_HOME
    exit
    
  2. Setting up the environment
    export ORACLE_BASE=/lms/u01/app/oracle
    export ORACLE_HOME=$ORACLE_BASE/9ir2/db_1
    export PATH=$PATH:$ORACLE_HOME/bin
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
    export ORACLE_SID=orcl
    export ORACLE_TERM=vt100
    export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
    
    umask 022
    
  3. Changing some Oracle Params and Restarting Oracle
    sqlplus system/oracle
    SQL> show parameter open_cursors
    SQL> alter system set open_cursors=500 scope=both;
    SQL> alter system set nls_date_format = "YYYY-MM-DD" scope=spfile;
    SQL> exit
    
    sqlplus "sys/oracle as sysdba"
    SQL> shutdown immediate;
    SQL> startup
    
  4. Adding the OpenACS User and Tablespace
    First you have to figure out where the database files are stored so that you can create a tablespace.
    sqlplus system/oracle
    select file_name from dba_data_files;  //returns data local of oracle
    create tablespace dotlrn datafile '/lms/u02/oradata/orcl/dotlrn.dbf' size 2000M autoextend off extent management local uniform size 32k;
    create user dotlrn identified by dotlrn default tablespace dotlrn temporary tablespace temp quota unlimited on dotlrn;
    grant connect, resource, ctxapp to dotlrn;
    alter user dotlrn default role all; //optional
    exit
    
  5. Testing the Database with the user
    env | grep oracle
    sqlplus dotlrn/dotlrn
    SQL> select sysdate from dual;
    
    SYSDATE
    ----------
    2004-08-04
    
    SQL> exit
    
  6. Installing TCL from Sourceforge
    cd /usr/local/src
    wget http://belnet.dl.sourceforge.net/sourceforge/tcl/tcl8.4.7-src.tar.gz
    tar xfz tcl8.4.7-src.tar.gz
    cd tcl8.4.7/unix/
    ./configure --enable-threads
    make install
    
  7. Installing AOLServer 4.0.5 and Modules
    cd /usr/local/src
    mkdir aolserver40r5
    cd aolserver40r5
    cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/aolserver co -r aolserver_v40_r5 aolserver
    cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/aolserver co nscache
    cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/aolserver co nssha1
    cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/aolserver co -r v2_7 nsoracle
    cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/aolserver co nsxml
    wget http://www.tdom.org/tDOM-0.7.8.tar.gz
    tar xvfz tDOM-0.7.8.tar.gz
    
    cd /usr/local/src/aolserver40r5/aolserver
    ./configure --prefix=/usr/local/aolserver40r5 --with-tcl=/usr/local/lib/
    make install
    ln -s /usr/local/aolserver40r5 /usr/local/aolserver
    
    cd /usr/local/src/aolserver40r5/nscache
    make install
    cd ../nsoracle
    make install
    cd ../nssha1
    make
    make install
    cd ../tDOM-0.7.8/unix
    emacs CONFIG
    ../configure --enable-threads --disable-tdomalloc --prefix=/usr/local/aolserver40r5 --with-tcl=/usr/local/lib
    sh CONFIG
    make install
    
    chown –R root.web /usr/local/aolserver/bin
    
  8. Installing OpenACS/dotLRN from CVS
    groupadd web
    useradd dotlrn
    usermod -g web dotlrn	//initial group
    usermod -G dba dotlrn	//further group
    mkdir /var/lib/aolserver
    chgrp web /var/lib/aolserver
    chmod 770 /var/lib/aolserver
    cd /var/lib/aolserver/
    cvs -z3 -d :pserver:anonymous@openacs.org:/cvsroot co -r oacs-5-1 openacs-4
    mv openacs-4/ dotlrn
    chmod -R 775 dotlrn/
    chown -R dotlrn.web dotlrn
    cd dotlrn
    cp packages/dotlrn/install.xml .
    
  9. Preparing the Oracle Wrapper
    cd /usr/local/aolserver40r5/bin
    cp /var/lib/aolserver/dotlrn/packages/acs-core-docs/www/files/nsd-oracle.txt ./nsd-oracle
    
    emacs nsd-oracle
    
    export ORACLE_HOME="/lms/u01/app/oracle/9ir2/db_1"
    export ORACLE_BASE="/lms/u01/app/oracle"
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/ctx/lib:/usr/lib:/lib:/usr/X11R6/lib
    export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/ctx/lib:$PATH
    export ORACLE_SID='orcl'
    export ORACLE_TERM='vt100'
    export ORAENV_ASK=NO
    export NLS_DATE_FORMAT="YYYY-MM-DD"
    export LD_ASSUME_KERNEL=2.4.19
    exec /usr/local/aolserver/bin/nsd $*
    
    chmod 750 nsd-oracle
    chown root.web nsd-oracle
    
  10. Configuring and testing the AOLServer
    su - dotlrn
    cd /var/lib/aolserver/dotlrn/etc
    emacs config.tcl
    set hostname                  yourhost.name
    set address                   xxx.xxx.xxx.xxx
    ...
    set server                    "dotlrn"
    set servername                "dotLRN/OpenACS on Oracle 9.2"
    ...
    set database              oracle
    ...
    if { $database == "oracle" } {
        set db_user               "dotlrn"
        set db_password           "dotlrn"
    ...
    if { $database == "oracle" } {
        ns_param   ora8           ${bindir}/nsoracle.so
    ...
        ns_param   datasource         {orcl} 			//pool1
        ns_param   user               $db_user
    ...
        ns_param   datasource         {orcl} 			//pool2
        ns_param   user               $db_user
    ...
        ns_param   datasource         {orcl} 			//pool3
        ns_param   user               $db_user
    
    /usr/local/aolserver/bin/nsd-oracle -t /var/lib/aolserver/dotlrn/etc/config.tcl
    
  11. Check the Error.log if everything worked
Thanks a lot Nima, this is really helpful. From looking at it I guess it will work and you should feel free to add it to the documentation anyway.

One note though: The datasource ("orcl") in step 10 is the ORACLE_SID.