gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:15:40 24 4
gpt4 key购买 nike

我正在尝试使用内置于远程 Linux 服务器(绑定(bind)到服务器公共(public) IP 地址)的 REST API 和 Connexion/Flask 运行一个简单的 python 服务器,使用 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 服务器上运行服务器,任何知道服务器公共(public) IP 地址的人都可以调用 API。例如,如果公共(public) IP 地址是 xxx.xx.xx.xxx,那么用户应该可以调用以下 URL 来检索数据:

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

到目前为止,我能够通过SSH端口转发以及< strong>ngrok(它们提供到服务器本地主机的隧道),但这不是我想要的。

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

最佳答案

最好的方法是使用 apache 网络服务器中的 mod_wsgi

示例:

flask 应用程序在 /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 文件 - 调用您的 flask 应用程序 (/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

关于python - 使用 Connexion/Flask 和公共(public) IP 地址在 Ubuntu 上创建 Apache Web 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52319053/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com