如何在Droplet Digital Ocean上使用Flask和Nginx更改HTML内容?

时间:2018-11-11 12:31:34

标签: python nginx post flask

基本上,我已逐步按照本指南https://www.digitalocean.com/community/tutorials/how-to-serve-flask-applications-with-uswgi-and-nginx-on-ubuntu-18-04进行操作,现在我可以完美地看到我的网站www.XXX.com上显示文字“ Hello There”。

第一个问题是,无论我对“ return”文件进行多少更改,我都将始终看到“ Hello There”文本。我也尝试过多次重启nginx,但这是行不通的。

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    #line that I usually try to edit, but nothing happens...
    return "<h1 style='color:blue'>Hello There!</h1>"

if __name__ == "__main__":
    app.run(host='0.0.0.0')

此外,本教程没有说明在何处将文件夹“静态”和“模板”与Flask进行通信。我已经学到了很多有关更改nginx conf文件和/或重定向的知识,几乎每个星期我都会尝试看完所有教程,但是到目前为止,仍然没有任何效果。

如何更改html?我应该在哪里编写index.html,以便Flask可以实际看到它,而“ index.html”可以对其进行POST请求?在localhost中,所有内容看起来都不同,因为这里有templates文件夹。但是这里似乎并不在乎。

谢谢!

1 个答案:

答案 0 :(得分:0)

uWSGI默认情况下不重新加载python代码。更改代码时,您必须手动重新启动或重新加载uWSGI,或者将uWSGI配置为自动重新加载。 uWSGI有许多可以使用的配置选项。

对于开发,您可以使用--python-autoreload选项。每次代码更改时都会重新加载,类似于django runserver。此选项会影响性能,因此不应在生产中使用。选项可以是命令行标志,也可以包含在uwsgi配置文件中。

[uwsgi]
module = wsgi:app
python-autoreload = true
...

在生产环境中,还有许多其他方法可以重新加载应用程序。最简单的方法可能只是向uwsgi进程发送SIGHUP信号。例如,使用linux命令pkill

pkill --signal SIGHUP uwsgi

另一种选择是使用touch-reload。如果修改了文件,那只会监视单个文件的更改并重新加载uWSGI。这样就可以在生产中使用它而没有太多的开销。

[uwsgi]
module = wsgi:app
touch-reload = /tmp/somefile
...

使用命令touch /tmp/somefile更新文件时间戳。

uWSGI文档的此部分介绍了配置重载的其他几种方法:The Art of Graceful Reloading