Unlike uwsgi, apache mod_wsgi does not support passing commandline arguments to the python wsgi script it invokes. As a result while you can pass --config-file when hosting the api and metadata wsgi applications with uwsgi there is no way to use multiple config files with mod_wsgi. This change mirrors how this is supported in keystone today by intoducing a new OS_NOVA_CONFIG_FILES env var to allow operators to optional pass a ';' delimited list of config files to load. This change also add docs for this env var and the existing undocumented OS_NOVA_CONFIG_DIR. Closes-Bug: 1994056 Change-Id: I8e3ccd75cbb7f2e132b403cb38022787c2c0a37b
2.0 KiB
Using WSGI with Nova
Though the compute and metadata APIs can be run using independent scripts that provide eventlet-based HTTP servers, it is generally considered more performant and flexible to run them using a generic HTTP server that supports WSGI (such as Apache or nginx).
The nova project provides two automatically generated entry points
that support this: nova-api-wsgi
and
nova-metadata-wsgi
. These read nova.conf
and
api-paste.ini
by default and generate the required
module-level application
that most WSGI servers require. If
nova is installed using pip, these two scripts will be installed into
whatever the expected bin
directory is for the
environment.
The config files and config directory can be overridden via the
OS_NOVA_CONFIG_FILES
and OS_NOVA_CONFIG_DIR
environment variables. File paths listed in
OS_NOVA_CONFIG_FILES
are relative to
OS_NOVA_CONFIG_DIR
and delimited by ;
.
The new scripts replace older experimental scripts that could be
found in the nova/wsgi
directory of the code repository.
The new scripts are not experimental.
When running the compute and metadata services with WSGI, sharing the compute and metadata service in the same process is not supported (as it is in the eventlet-based scripts).
In devstack as of May 2017, the compute and metadata APIs are hosted by a Apache communicating with uwsgi via mod_proxy_uwsgi. Inspecting the configuration created there can provide some guidance on one option for managing the WSGI scripts. It is important to remember, however, that one of the major features of using WSGI is that there are many different ways to host a WSGI application. Different servers make different choices about performance and configurability.