Installation Instructions for RHEL 5

Contributed by Timothy Kutz and Matthew Ellison.

Pre-req Installs

  • RHEL 5.6
  • Oracle 10g Client – installed to /data2/app/oracle
  • Python 2.6.4 – installed to /usr/bin/python2.6 with libs at /usr/lib/python2.6
  • Django 1.2.5 – installed to python2.6 location
  • cx_Oracle-5.0.4-10g-py26-1.x86_c6.rpm
  • Apache 2.2.18 – installed to /data2/app/apache22
  • Mod_wsgi 3.3 for Python 2.6.4 – installed to apache modules

Install Indivo

  • Indivo_server codebase – installed to /data2/app/apphome/indivo: Ensure this location is readable by the user Apache will run under (usually daemon)

  • Using Virtualenv tool (, create python26 environment in /data2/app/python/python26:

    $ Python /data2/app/python/python26
  • Ensure the links created here point correctly to the python 2.6 locations. If it points to 2.4, something is wrong, possibly the version of python invoked by the user running the tool.

  • Ensure this environment is permissioned 755 (public readable/executable).

Apache Config

  • Add to $APACHE_HOME/bin/envvars:

    export ORACLE_HOME
    export LD_LIBRARY_PATH
    export PATH
  • Add to $APACHE_HOME/conf/httpd.conf:

    (in modules section: ):

    LoadModule wsgi_module modules/

    (at end of file: ):

    <IfModule wsgi_module>
        DocumentRoot /data2/app/apphome/indivo/indivo_server
        Alias /static/ /data2/app/apphome/indivo/indivo_server/static/
        EnableMMAP  On
        EnableSendfile On
        LogLevel  warn
       <Directory /data2/app/apphome/indivo/indivo_server>
          Order deny,allow
          Allow from all
       WSGIPythonHome /data2/app/python/python-26/
       WSGIApplicationGroup %{GLOBAL}
       WSGIScriptAlias / /data2/app/apphome/indivo/indivo_server/django.wsgi
       WSGIPassAuthorization On

Django/Indivo Config

  • Modify (Only modified lines shown, in order):

    # base URL for the app
    APP_HOME = '/data2/app/apphome/indivo/indivo_server'
    # URL prefix
    #Oracle DB settings
    #NOTE: DATABASE_NAME must be under 255 chars, so all whitespace has been removed below.
    # logging
    #import logging
    #logging.basicConfig(level = logging.DEBUG, format = '%(asctime)s %(levelname)s%(message)s',
    #           filename = '/data2/app/indivo/logs/indivo.log', filemode = 'w'
    #           )

Set Up Oracle Instance

  • The Oracle instance(s) serving Indivo must match the connection string in under DATABASE_NAME. This will involve setting up a tablespace for Indivo (in the above example CHRACTST), and user access.