Создание веб-сервера Apache в Ubuntu с Connexion / Flask и публичным IP-адресом - PullRequest
0 голосов
/ 13 сентября 2018

Я пытаюсь запустить простой Python-сервер с REST API и Connexion / Flask , встроенными на удаленный сервер Linux (привязка к серверу общедоступный IP-адрес ) с использованием Apache .(Сервер работает под управлением Ubuntu 16.04.5 LTS, код Python был написан на Python 3.7)

Вот несколько файлов для реализации сервера:

server.py :

import connexion
app = connexion.App(__name__, specification_dir='./')
app.add_api('swagger.yml')

if __name__ == "__main__":
    app.run(host='127.0.0.1', port=5000, debug=True)

swagger.yml : спецификации для REST API, я проверил его на локальном хосте, и он работает нормально. (базовый путь - / api)

opertations.py : функции для API в зависимости от ответа

Моя цель - запуститьСервер на удаленном сервере Linux, который любой, кто знает общедоступный IP-адрес сервера, сможет вызвать API.Например, если общедоступным IP-адресом является xxx.xx.xx.xxx, то пользователи должны иметь возможность вызвать следующий URL-адрес для получения данных:

http://xxx.xx.xx.xxx:<port>/api/<operation_name>?<query_parameters>

До сих пор я мог вызыватьAPI (который работал на localhost на сервере) со стороны клиента с переадресацией порта SSH , а также ngrok (они предоставляют туннели к локальному хосту сервера)), но это не то, что я хочу.

Я новичок в создании своих собственных веб-серверов, я изучал Apache и его работу с VirtualHosts и т. д., но я не мог найти, как именнонастроить его так, чтобы он связывал сервер python с общедоступным IP-адресом сервера Linux.

1 Ответ

0 голосов
/ 14 сентября 2018

Лучший способ сделать это - использовать mod_wsgi из веб-сервера apache

Пример:

Приложение для колб в /var/www/api/app.py

Конфигурация Apache (/etc/apache2/sites-enabled/500-api.conf)

WSGIDaemonProcess app threads=5 home=/var/www/api/
 WSGIScriptAlias /api /var/www/api/app.wsgi

 <directory /var/www/api/>
 WSGIProcessGroup app
 WSGIApplicationGroup %{GLOBAL}
 WSGIScriptReloading On
 Order deny,allow
 Allow from all
</directory>

Файл WSGI - вызов вашего приложения для фляги (/var/www/api/app.wsgi)

#!/usr/bin/python3
# -*- coding: utf-8 -*-

import sys
sys.path.append('/var/www/api')
from app import app as application
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...