odoo/doc/deployment-mod-wsgi.rst

74 lines
2.5 KiB
ReStructuredText

.. _using-mod-wsgi:
Deploying with ``mod_wsgi``
===========================
``mod_wsgi`` makes it possible to run a WSGI_ application (such as OpenERP)
under the Apache_ HTTP server.
.. _WSGI: http://en.wikipedia.org/wiki/Web_Server_Gateway_Interface
.. _Apache: https://httpd.apache.org/
Summary
-------
Similarly to :doc:`deployment-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