Сценарий: я использую инфраструктуру Python Falcon для своей службы REST API. Приложение изначально запускается Gunicorn
.
Прямо сейчас, когда я звоню https://example.com:8000/,, я получаю правильный ответ, который диктует логика API.
Цель: я хочу развернуть его на Apache2
вместе с mod_wsgi
на моем личном сервере разработки.
API по-прежнему будет работать под Gunicorn, и Apache должен взаимодействовать с Gunicorn всякий раз, когда делается запрос на эту конечную точку.
Структура каталогов:
| - abc_service
| - abc_service
| - __init__.py
| - app.py
| - wsgi.py
| - .abc_venv
Исходный код для app.py
выглядит примерно так:
import falcon
from .abc import ABC
api = application = falcon.API() # pylint: disable=invalid-name
# Creating a unique GET resource from the ABC class
test_handler_resource = ABC() # pylint: disable=invalid-name
# Mapping the HTTP GET endpoint with the unique resource
api.add_route('/abc', test_handler_resource)
# Mapping the HTTP POST endpoint with the unique resource
api.add_route('/abc/filters', test_handler_resource)
В моем wsgi.py
есть следующее содержимое:
from abc_service import application
Конфигурация Apache в /etc/apache2/sites-available/000-default.conf
выглядит следующим образом:
# WSGI
WSGIDaemonProcess python-path=/home/uname/abc-service/src/abc_service/.abc_venv/lib/python3.5/site-packages
WSGIScriptAlias /abc /home/uname/abc-service/src/abc_service/wsgi.py
ProxyPass /abc http://localhost:8000/abc
ProxyPassReverse /abc http://localhost:8000/abc
<Location /abc>
AuthType None
Require all granted
# Always set these headers.
Header always set Access-Control-Allow-Origin "https://example.com"
Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT"
Header always set Access-Control-Max-Age "1000"
Header always set Access-Control-Allow-Headers "x-requested-with, Content-Type, origin, authorization, accept, client-security-token"
</Location>
Я не могу найти в Интернете ни одного полезного ресурса, касающегося того же в Интернете, где используется эта комбинация Falcon
, Gunicorn
, mod_wsgi
и Apache
. Так что я не могу понять, что я делаю неправильно.
Я ценю ваше время и помощь. Спасибо!