繁体   English   中英

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

[英]Creating Apache web server on Ubuntu with Connexion/Flask and public IP address

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

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

服务器.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)

operations.py : API 的函数取决于响应

我的目标是在远程 Linux 服务器上运行服务器,任何知道服务器公共 IP 地址的人都可以调用 API。 例如,如果公网IP地址是xxx.xx.xx.xxx,那么用户应该可以调用以下URL来检索数据:

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

到目前为止,我能够使用SSH 端口转发以及ngrok (它们提供到服务器本地主机的隧道)从客户端调用 API(在服务器上的本地主机上运行),但这些不是我想要的.

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

最好的方法是在 apache web 服务器中使用 mod_wsgi

例子:

烧瓶应用程序位于/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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM