【问题标题】:Deploying Flask application with uwsgi and nginx使用 uwsgi 和 nginx 部署 Flask 应用程序
【发布时间】:2014-06-04 23:02:18
【问题描述】:

我正在尝试部署一个使用 Python 和 Flask 构建的简单 Web 应用程序。

我的应用具有以下结构:

/var/www/watchgallery/
    + app
        + __init__.py
        + views.py
        + templates
    + flask #virtual environment for Flask
    + run.py #script I used in my machine to start the development Flask server
    + watchgallery_nginx.conf
    + watchgallery_uwsgi.ini
    + watchgallery_uwsgi.sock

出于部署的目的,我关注此链接:http://vladikk.com/2013/09/12/serving-flask-with-nginx-on-ubuntu/

在本教程中,Flask 应用程序仅包含一个 hello.py 文件。他配置他的uwsgi文件的方式是这样的(/var/www/demoapp/demoapp_uwsgi.ini):

[uwsgi]
#application's base folder
base = /var/www/demoapp

#python module to import
app = hello
module = %(app)

home = %(base)/venv
pythonpath = %(base)

#socket file's location
socket = /var/www/demoapp/%n.sock

#permissions for the socket file
chmod-socket    = 666

#the variable that holds a flask application inside the module imported at line #6
callable = app

#location of log files
logto = /var/log/uwsgi/%n.log

我尝试将相同的逻辑应用于我的uwsgi.ini 文件,但我做错了什么。这是我的文件的样子:

[uwsgi]
#application's base folder
base = /var/www/watchgallery

#python module to import
app = run
module = %(app)

home = %(base)/flask
pythonpath = %(base)

#socket file's location
socket = /var/www/watchgallery/%n.sock

#permissions for the socket file
chmod-socket    = 666

#the variable that holds a flask application inside the module imported at line #6
callable = app

当我在本地机器上开发我的应用程序时,我运行这个命令来启动服务器:./run.py

这是我的run.py 文件:

#!flask/bin/python
from app import app
app.run(debug = False)

现在,我的问题是:鉴于我的 Flask 应用程序包含多个文件,我的 uwsgi.ini 文件应该是什么样子?

【问题讨论】:

    标签: python deployment nginx flask uwsgi


    【解决方案1】:

    您的应用程序有多复杂并不重要。你告诉 uWSGI 入口在哪里,其余的通过 Python 导入正常处理。

    在您的情况下,条目是 module = %(app)callable = app。所以 uWSGI 将加载模块并向作为 Flask 应用程序的可调用对象发送请求。

    现在由于请求将由 uWSGI 而不是 Flask 的服务器提供服务,因此您不需要 app.run(debug = False) 行。但是你可以通过这个技巧保持开发和生产代码相同:

    #!flask/bin/python
    
    from app import app
    
    if __name__ == "__main__":
        app.run(debug = False)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-19
      • 1970-01-01
      • 2013-07-16
      • 1970-01-01
      • 2021-01-01
      • 2023-02-09
      • 2019-07-13
      相关资源
      最近更新 更多