[FIX+DOC] added doc for deployment under mod_wsgi + a fix for that use case.

bzr revid: vmt@openerp.com-20130205172341-pwh0z4go2xsdz7n1
This commit is contained in:
Vo Minh Thu 2013-02-05 18:23:41 +01:00
parent e97e01e3ec
commit 174b5cb889
3 changed files with 66 additions and 1 deletions

View File

@ -0,0 +1,58 @@
.. _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.
For instance, make sure to correctly set the ``addons_path`` configuration
(using absolute paths). Then that Python script can be set in the Apache
configuration.
Configuration
-------------
In Apache's configuration, add the line
::
LoadModule wsgi_module modules/mod_wsgi.so
to activate ``mod_wsgi``.
Then a possible 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.
Finally, it is necessary to make sure the source directory where the script can
be found is allowed by Apache with the ``Directory`` block.
Running
-------
When the Apache configuration changes, it is necessary to restart Apache, e.g. with::
/etc/init.d/httpd restart

View File

@ -17,6 +17,7 @@ OpenERP Server
05_test_framework
06_misc
deployment-gunicorn
deployment-mod-wsgi
OpenERP Command
'''''''''''''''

View File

@ -186,7 +186,13 @@ def init_logger():
# Normal Handler on standard output
handler = logging.StreamHandler(sys.stdout)
if isinstance(handler, logging.StreamHandler) and os.isatty(handler.stream.fileno()):
# Check that handler.stream has a fileno() method: when running OpenERP
# behind Apache with mod_wsgi, handler.stream will have type mod_wsgi.Log,
# which has no fileno() method. (mod_wsgi.Log is what is being bound to
# sys.stderr when the logging.StreamHandler is being constructed above.)
if isinstance(handler, logging.StreamHandler) \
and hasattr(handler.stream, 'fileno') \
and os.isatty(handler.stream.fileno()):
formatter = ColoredFormatter(format)
else:
formatter = DBFormatter(format)