加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > Nginx > 正文

使用uwsgi和nginx部署Flask应用程序

发布时间:2020-12-13 20:58:15 所属栏目:Nginx 来源:网络整理
导读:我正在尝试部署一个使用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 th

我正在尝试部署一个使用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文件应如何显示?

最佳答案
应用程序的复杂程度无关紧要.您告诉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)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读