Adding WSGI support
Following commits adds possiblity to run monasca-api with Apache2 (mod_wsgi). Needed-By: Idcc181bbb19a68c622eca51dc9822bde9a91f6a9 Change-Id: Id07dcc249965d97644da9396b6d288255ffaab43
This commit is contained in:
parent
6dcfebc82e
commit
bff8cd27eb
46
README.md
46
README.md
@ -103,6 +103,7 @@ located::
|
||||
|
||||
/etc/monasca/api-config.ini
|
||||
/etc/monasca/api-config.conf
|
||||
/etc/monasca/api-logging.conf
|
||||
|
||||
Once the configurations are modified to match your environment, you can start
|
||||
up the server by following the following instructions.
|
||||
@ -123,8 +124,51 @@ from the root directory of this project
|
||||
To run all the unit test cases, run the following command from the root
|
||||
directory of this project
|
||||
|
||||
$ tox -e py27 (or -e py26, -e py33)
|
||||
$ tox -e py27
|
||||
|
||||
### Start the Server -- for Apache
|
||||
|
||||
To start the server using Apache: create a modwsgi file,
|
||||
create a modwsgi configuration file, and enable the wsgi module
|
||||
in Apache.
|
||||
|
||||
The modwsgi configuration file may look something like this, and the site will need to be enabled:
|
||||
|
||||
```apache
|
||||
Listen 8070
|
||||
|
||||
<VirtualHost *:8070>
|
||||
|
||||
WSGIDaemonProcess monasca-api processes=4 threads=1 socket-timeout=120 user=mon-api group=monasca python-path=/usr/local/lib/python2.7/site-packages
|
||||
WSGIProcessGroup monasca-api
|
||||
WSGIApplicationGroup monasca-api
|
||||
WSGIScriptAlias / /usr/local/lib/python2.7/site-packages/monasca_log_api/api/wsgi/monasca_api.py
|
||||
|
||||
WSGIPassAuthorization On
|
||||
|
||||
LogLevel info
|
||||
ErrorLog /var/log/monasca-api/wsgi.log
|
||||
CustomLog /var/log/monasca-api/wsgi-access.log combined
|
||||
|
||||
<Directory /usr/local/lib/python2.7/site-packages/monasca_log_api>
|
||||
Require all granted
|
||||
</Directory>
|
||||
|
||||
SetEnv no-gzip 1
|
||||
|
||||
</VirtualHost>
|
||||
|
||||
```
|
||||
|
||||
The wsgi file may look something like this:
|
||||
|
||||
```py
|
||||
|
||||
from monasca_log_api.api import server
|
||||
|
||||
application = server.get_wsgi_app(config_base_path='/etc/monasca')
|
||||
|
||||
```
|
||||
|
||||
# License
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
# Copyright 2014 IBM Corp
|
||||
# (C) Copyright 2015,2016 Hewlett Packard Enterprise Development LP
|
||||
# Copyright 2017 Fujitsu LIMITED
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
@ -60,7 +61,10 @@ cfg.CONF.register_opts(dispatcher_opts, dispatcher_group)
|
||||
LOG = log.getLogger(__name__)
|
||||
|
||||
|
||||
def launch(conf, config_file="/etc/monasca/api-config.conf"):
|
||||
def launch(conf):
|
||||
# use default, but try to access one passed from conf first
|
||||
config_file = conf.get('config_file', "/etc/monasca/api-config.conf")
|
||||
|
||||
log.register_options(cfg.CONF)
|
||||
log.set_defaults()
|
||||
cfg.CONF(args=[],
|
||||
@ -130,9 +134,33 @@ def launch(conf, config_file="/etc/monasca/api-config.conf"):
|
||||
return app
|
||||
|
||||
|
||||
def get_wsgi_app(config_base_path=None, **kwargs):
|
||||
|
||||
# allow to override names of the configuration files
|
||||
config_file = kwargs.get('config_file', 'api-config.conf')
|
||||
paste_file = kwargs.get('paste_file', 'api-config.ini')
|
||||
|
||||
if config_base_path is None:
|
||||
# allow monasca-api to be run in dev mode from __main__
|
||||
config_base_path = os.path.join(
|
||||
os.path.dirname(os.path.realpath(__file__)), '../../etc')
|
||||
|
||||
config_file = os.path.join(config_base_path, config_file)
|
||||
global_conf = {'config_file': config_file}
|
||||
|
||||
LOG.debug('Initializing WSGI application using configuration from %s',
|
||||
config_base_path)
|
||||
|
||||
return (
|
||||
paste.deploy.loadapp(
|
||||
'config:%s' % paste_file,
|
||||
relative_to=config_base_path,
|
||||
global_conf=global_conf
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
wsgi_app = (
|
||||
paste.deploy.loadapp('config:etc/api-config.ini',
|
||||
relative_to=os.getcwd()))
|
||||
wsgi_app = get_wsgi_app()
|
||||
httpd = simple_server.make_server('127.0.0.1', 8070, wsgi_app)
|
||||
httpd.serve_forever()
|
||||
|
20
monasca_api/api/wsgi.py
Normal file
20
monasca_api/api/wsgi.py
Normal file
@ -0,0 +1,20 @@
|
||||
# Copyright 2017 FUJITSU LIMITED
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
# extremely simple way to setup of monasca-api
|
||||
# with wsgi
|
||||
|
||||
from monasca_api.api import server
|
||||
|
||||
application = server.get_wsgi_app(config_base_path='/etc/monasca')
|
Loading…
Reference in New Issue
Block a user