簡體   English   中英

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

[英]Deploying Flask application with uwsgi and 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 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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM