Implement Apache WSGI for Qinling
Since this review[1], Qinling supports WSGI execution. From a production perspective, Qinling should be deployed using Apache and mod_wsgi. "api_worker" option is not needed anymore because processes will be handle by Apache mod_wsgi. Qinling Docker image review[2] has ben created. [1] https://review.opendev.org/661851 [2] https://review.opendev.org/666647 Change-Id: I9aaee4c2932f1e4ea9fe780a64e96a28fa6bccfb Story: 2005920 Task: 34181
This commit is contained in:
parent
bc7dea58c2
commit
f867c471fb
@ -21,6 +21,7 @@
|
|||||||
- service.enabled | bool
|
- service.enabled | bool
|
||||||
- config_json.changed | bool
|
- config_json.changed | bool
|
||||||
or qinling_conf.changed | bool
|
or qinling_conf.changed | bool
|
||||||
|
or qinling_conf_wsgi.changed | bool
|
||||||
or policy_overwriting.changed | bool
|
or policy_overwriting.changed | bool
|
||||||
or qinling_api_container.changed | bool
|
or qinling_api_container.changed | bool
|
||||||
|
|
||||||
|
@ -69,6 +69,21 @@
|
|||||||
notify:
|
notify:
|
||||||
- Restart {{ item.key }} container
|
- Restart {{ item.key }} container
|
||||||
|
|
||||||
|
- name: Copying over wsgi-qinling files for services
|
||||||
|
vars:
|
||||||
|
service: "{{ qinling_services['qinling-api'] }}"
|
||||||
|
template:
|
||||||
|
src: "wsgi-qinling.conf.j2"
|
||||||
|
dest: "{{ node_config_directory }}/qinling-api/wsgi-qinling.conf"
|
||||||
|
mode: "0660"
|
||||||
|
become: true
|
||||||
|
register: qinling_conf_wsgi
|
||||||
|
when:
|
||||||
|
- inventory_hostname in groups[service.group]
|
||||||
|
- service.enabled | bool
|
||||||
|
notify:
|
||||||
|
- Restart qinling-api container
|
||||||
|
|
||||||
- name: Copying over existing policy file
|
- name: Copying over existing policy file
|
||||||
template:
|
template:
|
||||||
src: "{{ qinling_policy_file_path }}"
|
src: "{{ qinling_policy_file_path }}"
|
||||||
|
@ -1,11 +1,19 @@
|
|||||||
|
{% set qinling_cmd = 'apache2' if kolla_base_distro in ['ubuntu', 'debian'] else 'httpd' %}
|
||||||
|
{% set qinling_dir = 'apache2/conf-enabled' if kolla_base_distro in ['ubuntu', 'debian'] else 'httpd/conf.d' %}
|
||||||
{
|
{
|
||||||
"command": "qinling-api --config-file /etc/qinling/qinling.conf",
|
"command": "{{ qinling_cmd }} -DFOREGROUND",
|
||||||
"config_files": [
|
"config_files": [
|
||||||
{
|
{
|
||||||
"source": "{{ container_config_directory }}/qinling.conf",
|
"source": "{{ container_config_directory }}/qinling.conf",
|
||||||
"dest": "/etc/qinling/qinling.conf",
|
"dest": "/etc/qinling/qinling.conf",
|
||||||
"owner": "qinling",
|
"owner": "qinling",
|
||||||
"perm": "0600"
|
"perm": "0600"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"source": "{{ container_config_directory }}/wsgi-qinling.conf",
|
||||||
|
"dest": "/etc/{{ qinling_dir }}/wsgi-qinling.conf",
|
||||||
|
"owner": "qinling",
|
||||||
|
"perm": "0600"
|
||||||
}{% if qinling_policy_file is defined %},
|
}{% if qinling_policy_file is defined %},
|
||||||
{
|
{
|
||||||
"source": "{{ container_config_directory }}/{{ qinling_policy_file }}",
|
"source": "{{ container_config_directory }}/{{ qinling_policy_file }}",
|
||||||
|
@ -7,7 +7,6 @@ transport_url = {{ rpc_transport_url }}
|
|||||||
[api]
|
[api]
|
||||||
port = {{ qinling_api_port }}
|
port = {{ qinling_api_port }}
|
||||||
host = {{ api_interface_address }}
|
host = {{ api_interface_address }}
|
||||||
api_workers = {{ openstack_service_workers }}
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if service_name == 'qinling-engine' %}
|
{% if service_name == 'qinling-engine' %}
|
||||||
|
33
ansible/roles/qinling/templates/wsgi-qinling.conf.j2
Normal file
33
ansible/roles/qinling/templates/wsgi-qinling.conf.j2
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
{% if kolla_base_distro == 'ubuntu' %}
|
||||||
|
{% set python_path = '/usr/lib/python3/dist-packages' if qinling_install_type == 'binary' else '/var/lib/kolla/venv/lib/python3.6/site-packages' %}
|
||||||
|
{% else %}
|
||||||
|
{% set python_path = '/usr/lib/python2.7/site-packages' if qinling_install_type == 'binary' else '/var/lib/kolla/venv/lib/python2.7/site-packages' %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
Listen {{ api_interface_address }}:{{ qinling_api_port }}
|
||||||
|
|
||||||
|
ServerSignature Off
|
||||||
|
ServerTokens Prod
|
||||||
|
TraceEnable off
|
||||||
|
|
||||||
|
<VirtualHost *:{{ qinling_api_port }}>
|
||||||
|
|
||||||
|
## Vhost docroot
|
||||||
|
DocumentRoot "/var/www/cgi-bin/qinling"
|
||||||
|
|
||||||
|
## Directories, there should at least be a declaration for /var/www/cgi-bin/qinling
|
||||||
|
|
||||||
|
<Directory "/var/www/cgi-bin/qinling">
|
||||||
|
Options Indexes FollowSymLinks MultiViews
|
||||||
|
Require all granted
|
||||||
|
</Directory>
|
||||||
|
|
||||||
|
## Logging
|
||||||
|
ErrorLog "/var/log/kolla/qinling/qinling_api_wsgi_error.log"
|
||||||
|
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b %D \"%{Referer}i\" \"%{User-Agent}i\"" logformat
|
||||||
|
CustomLog "/var/log/kolla/qinling/qinling_api_wsgi_access.log" logformat
|
||||||
|
WSGIApplicationGroup %{GLOBAL}
|
||||||
|
WSGIDaemonProcess qinling group=qinling processes={{ openstack_service_workers }} threads=1 user=qinling python-path={{ python_path }}
|
||||||
|
WSGIProcessGroup qinling
|
||||||
|
WSGIScriptAlias / "/var/www/cgi-bin/qinling/wsgi.py"
|
||||||
|
</VirtualHost>
|
Loading…
Reference in New Issue
Block a user