Создание веб-сервера Apache в Ubuntu с Connexion / Flask и публичным IP-адресом

1

Я пытаюсь запустить простой сервер 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, я протестировал его, запустив на localhost и работая правильно. (Основной путь: /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 (который работал на локальном хосте на сервере) с клиентской стороны с пересылкой портов SSH, а также ngrok (они предоставляют туннели на локальном сервере), но это не то, что я хочу,

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

Теги:
flask
server

1 ответ

0
Лучший ответ

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

Пример:

Приложение с /var/www/api/app.py находится в /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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню