[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:
parent
e97e01e3ec
commit
174b5cb889
|
@ -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
|
|
@ -17,6 +17,7 @@ OpenERP Server
|
||||||
05_test_framework
|
05_test_framework
|
||||||
06_misc
|
06_misc
|
||||||
deployment-gunicorn
|
deployment-gunicorn
|
||||||
|
deployment-mod-wsgi
|
||||||
|
|
||||||
OpenERP Command
|
OpenERP Command
|
||||||
'''''''''''''''
|
'''''''''''''''
|
||||||
|
|
|
@ -186,7 +186,13 @@ def init_logger():
|
||||||
# Normal Handler on standard output
|
# Normal Handler on standard output
|
||||||
handler = logging.StreamHandler(sys.stdout)
|
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)
|
formatter = ColoredFormatter(format)
|
||||||
else:
|
else:
|
||||||
formatter = DBFormatter(format)
|
formatter = DBFormatter(format)
|
||||||
|
|
Loading…
Reference in New Issue