Deploying with mod_wsgi

mod_wsgi makes it possible to run a WSGI application (such as OpenERP) under the Apache HTTP server.

Summary

Similarly to Deploying with Gunicorn, running OpenERP behind Apache with mod_wsgi requires to modify the sample openerp-wsgi.py script. Then that Python script can be set in the Apache configuration.

Python (WSGI) application

Apache needs a Python script providing the WSGI application. By default the symbol looked up by Apache is application but it can be overidden with the WSGICallableObject directive if necessary. A sample script openerp-wsgi.py is provided with OpenERP and you can adapt it to your needs. For instance, make sure to correctly set the addons_path configuration (using absolute paths).

Note

The script provided to Apache has often the extension .wsgi but the openerp-wsgi.py script will do just as fine.

Apache Configuration

In Apache’s configuration, add the following line to activate mod_wsgi:

LoadModule wsgi_module modules/mod_wsgi.so

Then a possible (straightforward, with e.g. no virtual server) configuration is as follow:

WSGIScriptAlias / /home/thu/repos/server/trunk/openerp-wsgi.py
WSGIDaemonProcess oe user=thu group=users processes=2 python-path=/home/thu/repos/server/trunk/ display-name=apache-openerp
WSGIProcessGroup oe

<Directory /home/thu/repos/server/trunk>
    Order allow,deny
    Allow from all
</Directory>

The WSGIScriptAlias directive indicates that any URL matching / will run the application defined in the openerp-wsgi.py script.

The WSGIDaemonProcess and WSGIProcessGroup directives create a process configuration. The configuration makes it possible for isntance to specify which user runs the OpenERP process. The display-name option will make the processes appear as apache-openerp in ps (instead of the normal httpd).

Finally, it is necessary to make sure the source directory where the script can be found is allowed by Apache with the Directory block.

mod_wsgi supports a lot of directives, please see this mod_wsgi wiki page for more details: http://code.google.com/p/modwsgi/wiki/ConfigurationDirectives.

Running

When the Apache configuration changes, it is necessary to restart Apache, e.g. with:

/etc/init.d/httpd restart