[Zope] Zope/Linux/Oracle - Cannot establish DB connection
Brian Lloyd
Brian@digicool.com
Tue, 4 Jan 2000 09:47:01 -0500
> OK, that looks like it.
>
> When I stopped ZServer (which was originally started by init
> on boot) and
> restarted it from a logon (which would have run /etc/profile
> where all the
> Oracle environment variables were initialised), I was able to connect.
>
> It looks like I need to set these ORACLE_ environment variables in my
> startup scripts. Is it a good idea to do this in
> /etc/rc.d/init.d/zope, or
> would you recommend doing it somewhere else?
Hi Andrew -
There are 2 common ways to define environment variables for
the Zope process (and they should be better documented in
the standard Zope docs - I think they are just mentioned in
the READMEs for the various database adapters right now).
Starting with Zope 2.x, most folks use the "start" script
generated by the Zope installation to crank up Zope - that's
the best place to set any environment variables needed by
Zope products (such as DB adapters, though other components
could conceivably want env. vars as well). The default "start"
script should look something like:
#! /bin/sh
reldir=`dirname $0`
PYTHONHOME=`cd $reldir; pwd`
export PYTHONHOME
exec /usr/local/bin/python1.5.2 -O \
$PYTHONHOME/z2.py \
-D -P 8000 "$@"
So if you add the appropriate env. vars to this, a la:
#! /bin/sh
reldir=`dirname $0`
PYTHONHOME=`cd $reldir; pwd`
export PYTHONHOME
ORACLE_HOME=/foo/bar
export ORACLE_HOME
ORACLE_SID=whatever_it_is
export ORACLE_SID
exec /usr/local/bin/python1.5.2 -O \
$PYTHONHOME/z2.py \
-D -P 8000 "$@"
Then the Zope process will get them, provided you start Zope with
the "start" script (via init.d, manually or some other means).
Another way to do it is to put the appropriate variables in your
Zope.cgi file, but *this only works if you use PCGI exclusively
and PCGI is responsible for starting up your Zope process*. This
is mainly a holdover from 1.x, where in most cases pcgi was
responsible for starting the process. That is rarely the case now,
but I wanted to mention it in case this tidbit is useful to somebody.
If (and only if) PCGI starts the process itself, any name=value pairs
found in the pcgi resource file (Zope.cgi) that don't relate directly
to PCGI are added to the environment at the time that PCGI starts the
Zope process.
Hope this helps!
Brian Lloyd brian@digicool.com
Software Engineer 540.371.6909
Digital Creations http://www.digicool.com