使用Connexion / Flask和公共IP地址在Ubuntu上创建Apache Web服务器

问题描述 投票:1回答:1

我正在尝试使用Apache运行一个简单的python服务器,其中REST API和Connexion / Flask内置在远程Linux服务器上(绑定到服务器公共IP地址)。 (服务器正在运行Ubuntu 16.04.5 LTS,python代码是用Python 3.7编写的)

以下是服务器实现的一些文件:

server.朋友:

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.yaml: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(在服务器上的localhost上运行)和SSH端口转发以及ngrok(它们提供到服务器localhost的隧道),但这些不是我想要的。

我是创建自己的Web服务器的新手,我一直在研究Apache以及它如何与VirtualHosts等一起工作但是我找不到如何设置它以便它将python服务器绑定到公共IP地址的Linux服务器。

python linux apache flask server
1个回答
0
投票

执行此操作的最佳方法是在apache Web服务器中使用mod_wsgi

例:

烧瓶app在/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
© www.soinside.com 2019 - 2024. All rights reserved.