【问题标题】:Creating Apache web server on Ubuntu with Connexion/Flask and public IP address在 Ubuntu 上使用 Connexion/Flask 和公共 IP 地址创建 Apache Web 服务器
【发布时间】:2018-09-13 17:39:49
【问题描述】:

我正在尝试使用内置在远程 Linux 服务器上的 REST API 和 Connexion/Flask 运行一个简单的 Python 服务器(绑定到服务器公共 IP 地址),使用阿帕奇。 (服务器运行 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)

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

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

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

到目前为止,我能够通过 SSH 端口转发 以及 从客户端调用 API(在服务器上的 localhost 上运行) strong>ngrok(他们提供到服务器 localhost 的隧道),但这些不是我想要的。

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

【问题讨论】:

    标签: python linux apache flask server


    【解决方案1】:

    最好的方法是在 apache web 服务器中使用 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 文件 - 调用您的烧瓶应用 (/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
    

    【讨论】:

      猜你喜欢
      • 2020-02-12
      • 2021-12-28
      • 2016-08-04
      • 1970-01-01
      • 2020-07-10
      • 1970-01-01
      • 1970-01-01
      • 2014-05-31
      • 1970-01-01
      相关资源
      最近更新 更多