Hello Cornelia,

> We would like to know, if it's possible to work with more than one
> invenio-instances on the same server?
>
> We installed a second invenio-instance with another prefix and defined
> another database schema in the invenio-local.conf file. But if we
> include the generated invenio-apache-vhost.conf file into the httpd.conf
> file, we get a Problem with the WSGIDaemonProcess definition.
>
> Could anyone say, if it's generally provided to do such installation?
> and what's to be noticed?

we've set up two production Invenio servers here at UAB:
http://ddd.uab.cat/ and http://traces.uab.cat/.  I'll explain our setup,
hoping that it helps.

First of all, we are on 0.99.1, so we are still not using the
WSGIDaemonProcess.  However, we are *also* using a third, SCGI
application (http://drproject.org/) on the same host, using a third
Apache vhost instance, so my hints may help you anyway.  We are on
Debian stable (5.0), and using default Debian versions for almost
anything.

First of all, we have configured and installed the software in user
directories (/home/), not system wide.  For example, in
/home/ddd/download/invenio/cds-invenio-0.99.1/, the configuration option
was:

  $ ./configure --prefix=$HOME/invenio

The same with the second instance.  Databases are named as the instances
as well.  It mostly builds flawlessly except for intbitset cpython
compilation, that insists on living system-wide.  But I copied the
pieces from the system directory /usr/lib/python/whatever to the local
~/invenio/lib/python/invenio/etc.

I also set (following Django wsgi docs) my own $PYTHONPATH both for
command line and apache:

1. In my ~/.profile (export PYTHONPATH=$HOME/lib/python)
2. In my invenio-apache-vhost.conf, VirtualHost section
   (PythonPath "['/home/ddd/lib/python'] + sys.path")

The problem here is that some Invenio processess like Websubmit call
bibconvert using os.system, thus not inheriting my $PYTHONPATH.  I found
it after several days of tracing those calls (Error: No module named
invenio.search_engine).  With our current Debian Python 2.5 there is no
way to set a local directory to be searched by default.  So the only
solution I found was to patch each invenio bin and lib python file with:
 
 import sys, os
 sys.path.append(os.path.expanduser('~/lib/python/'))

(Using a patch management tool like guilt or quilt it becomes
less than a burden, and the same patch can be tested on the test
machine and then propagated to the two production instances.  I
wholeheartly reccomend any of them, maybe I'd favour guilt now
(http://packages.debian.org/guilt).

Also, for Apache, we use apache2-mpm-itk
(http://packages.debian.org/apache2-mpm-itk), that is, an alternative
Apache build that starts it as root and, for each fork, it switches to
the appropiate user.  That helps us keep the files owned for each user,
so the file management is *greatly* simplified.

I attach our (almost) complete invenio-apache-vhost.conf.  Please note
that we are no using any https yet.

Feel free to ask further questions if interested.

Ferran

PS Tomorrow it's my last working day before vacation, so I may not be
   able to follow this thread except for some occassional catch-up.


---

AddDefaultCharset UTF-8
ServerSignature Off
ServerTokens Prod

<Files *.pyc>
   deny from all
</Files>
<Files *~>
   deny from all
</Files>
<VirtualHost *:80>
        ServerName ddd.uab.cat:80
        ServerAlias ddd.uab.es
        ServerAlias ddd
        ServerAdmin [email protected]
        DocumentRoot /home/ddd/invenio/var/www
        ScriptAlias /cgi-bin/ /home/ddd/www/cgi-bin/
        PythonPath "['/home/ddd/lib/python'] + sys.path"
        Options Indexes FollowSymLinks MultiViews
        IndexOptions FancyIndexing HTMLTable FoldersFirst VersionSort

        <Directory /home/ddd/invenio/var/www>
           Options Indexes FollowSymLinks MultiViews
           AllowOverride None
           Order allow,deny
           allow from all
        </Directory>
        ErrorLog /home/ddd/invenio/var/log/ddd.err
        LogLevel warn
        CustomLog /home/ddd/invenio/var/log/ddd.log combined
        DirectoryIndex index.en.html index.html
        <LocationMatch 
"^(/+$|/index|/collection|/record|/author|/search|/browse|/youraccount|/youralerts|/yourbaskets|/yourmessages|/yourgroups|/submit|/getfile|/comments|/error$
           SetHandler python-program
           PythonHandler invenio.webinterface_layout
           PythonDebug On
        </LocationMatch>
        <Directory /home/ddd/invenio/var/www>
           AddHandler python-program .py
           PythonHandler mod_python.publisher
           PythonDebug On
         </Directory>

         [...]

         <IfModule mpm_itk_module>
           AssignUserId ddd users
        </IfModule>

        ErrorDocument 403 /errmsg/403.html

</VirtualHost>

Reply via email to