[Zope] Getting Postgres and exUserFolder to work with Zope
Heimo Laukkanen
huima@fountainpark.org
Sun, 21 Oct 2001 05:24:05 +0300
Hi,
I spent a couple of hours trying to get Zope to work with postgres.
There simply was not one good guide or howto available, all the rigth
info was avaialble -- but on different mailinglists. Here is what I did,
hope it helps someone else -- or perhaps someone will get a spark from
this and write a decent howto.
Atleast after this mail people will find the info from one place.
Using:
Zope Zope 2.3.2
Python 1.52
ExUserFolder 0-8-0
psycopg-0.99.6
postgresql-7.1.3
egenix-mx-base-2.0.2
1) Getting all the pieces together
Postgresql - http://www.postgresql.org/
ExUserFolder - http://exuserfolder.sourceforge.net/
psycopg (Postgres database adapter ) -
http://www.zope.org/Members/fog/psycopg
egenix mx Extensions -
http://www.lemburg.com/files/python/eGenix-mx-Extensions.html
2 ) Installing Postgres
Downloaded source-distribution and unpacked it to my tmp. cd to the
postgres directory.
Read from the manual how to install. Here is it snipped in short form.
./configure
gmake
gmake install
adduser postgres
mkdir /usr/local/pgsql/data
chown postgres /usr/local/pgsql/data
su - postgres
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
/usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data >logfile 2>&1 &
/usr/local/pgsql/bin/createdb test
/usr/local/pgsql/bin/psql test
After this make sure that the lib-files are in a place that Zope can
find them!
3 ) Install egenix mx Extensions
Downloaded source-distribution, since only that has the header-files we
need while compiling psycopg. Unpack into temp. cd to the directory.
python setup.py install
4) Installing psycopg
Unpack to the temp. cd to the directory. Make sure you know where your
egenix-sources are, postgres lib-files and postgres includes. Then give
then in config. Example below.
./configure
--with-mxdatetime-includes=../egenix-mx-base-2.0.2/mx/DateTime/mxDateTime/
--with-postgres-libraries=/usr/local/pgsql/lib
--with-postgres-includes=/usr/local/pgsql/include
make
make install
5) Copying files to rigth places
This part was frustrating and propably has had everyone wondering for
some time. I found this thing to be helpful, tip was also found on
different mailing lists.
copy mxDateTime.so
from: .../python1.5/site-packages/mx/DateTime/mxDateTime.so
to: .../python1.5/site-packages/mxDateTime.so
so that psycopgmodule.so can find it when zope is started up.
And similarly make sure that the psycopgmodule is located in
the psycopgmodule.so got placed in
.../python1.5/site-packages/psycopgmodule.so
6) Installing exUserFolder
Just unpack it and copy to zope/Products - where ever you have it.
7) Create database table for authentication
Within the exUserFolder distribution comes a file pgAndreasScheme.sql.
>From that we will use only one table for now.
This is just for testing purposes.
su postgres
psql template1
CREATE TABLE "passwd" (
"username" character varying(64) UNIQUE NOT NULL,
"password" character varying(64) NOT NULL,
"roles" character varying(255),
Constraint "passwd_pkey" Primary Key ("username")
);
\q
You have created your table.
8) Restart zope
9) Go into management interface
You should see Z psycopg Database connection in the list available for
selection. If not, go to the control panel and product management and
see what is the traceback on that product. Propably some of the modules
is not found - which can be because you lib-files are somewhwere whwre
they should not be ,-)
Try to add Z psycopg Database connection.
For connection string use:
dbname = template1 user = postgres
Ok.
Everything should work.
You can test it by clicking the test-tab in Z psycopg and trying
following sql-query: select * from passwd;
10) Add exUserFolder
Warning. Don't do this on the root folder!
Select postgres authentication source.
And select rest as you like. Click next.
For authentication properties write:
Table Name: passwd
Username Column: username
Password column: password
Roles Column: roles
Etc.
Have fun. Hope this helps.
-huima