Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用Nginx将烧瓶放置在覆盆子皮上_Python_Nginx_Flask_Raspberry Pi_Gunicorn - Fatal编程技术网

Python 用Nginx将烧瓶放置在覆盆子皮上

Python 用Nginx将烧瓶放置在覆盆子皮上,python,nginx,flask,raspberry-pi,gunicorn,Python,Nginx,Flask,Raspberry Pi,Gunicorn,我正在尝试使用nginx在我的raspberry pi上部署一个简单的flask应用程序。我遵循了以下两个指南: 而且一切都正常运行。但是,当我加载指向PI IP的web浏览器时,我通过ssh工作——我看到的是默认的欢迎使用nginx页面。发生什么事了 这是我的档案: /home/pi/hello/hello.py /etc/nginx/sites available/hello.conf符号链接到:/etc/nginx/sites enabled/ 这是我的nginx.conf,虽然我根本

我正在尝试使用nginx在我的raspberry pi上部署一个简单的flask应用程序。我遵循了以下两个指南:

而且一切都正常运行。但是,当我加载指向PI IP的web浏览器时,我通过ssh工作——我看到的是默认的欢迎使用nginx页面。发生什么事了

这是我的档案:

/home/pi/hello/hello.py

/etc/nginx/sites available/hello.conf符号链接到:/etc/nginx/sites enabled/

这是我的nginx.conf,虽然我根本没有更改它

/etc/nginx/nginx.conf

主管部分:

/etc/supervisor/conf.d/hello.conf

我可以通过以下方式让一切变得更加有趣:

sudo supervisorctl start hello
但当我点击Pi的IP时:

http://192.168.1.28 
从我的Mac浏览器 我得到的只是:欢迎来到nginx


有什么想法吗?这是我运行和部署的第一台服务器——在Ras Pi上运行它可能不是最好的主意,但到目前为止我学到了很多

您可以在默认端口(5000)上运行flask

尝试更改此行:

if __name__ == '__main__':
    #app.run()
    app.run(port=8000)
或将supervisord命令更改为:

command = /home/pi/hello/bin/python /home/pi/hello/bin/gunicorn hello:app -b 0.0.0.0:8000

您可以在默认端口(5000)上运行flask

尝试更改此行:

if __name__ == '__main__':
    #app.run()
    app.run(port=8000)
或将supervisord命令更改为:

command = /home/pi/hello/bin/python /home/pi/hello/bin/gunicorn hello:app -b 0.0.0.0:8000

您可能希望确保禁用默认站点。只需从启用的站点中删除符号链接默认值

此外,Flask的默认端口是5000而不是8000,因此在nginx配置中,您需要更改以下内容:

location @gunicorn_proxy {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_pass http://127.0.0.1:5000; # Default port
}

您可能希望确保禁用默认站点。只需从启用的站点中删除符号链接默认值

此外,Flask的默认端口是5000而不是8000,因此在nginx配置中,您需要更改以下内容:

location @gunicorn_proxy {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_pass http://127.0.0.1:5000; # Default port
}

当您访问时会发生什么?那怎么办?当你访问时会发生什么?那又如何?我将我的supervisord conf文件更改为您指定的命令,现在我可以通过点击localhost:8000访问我的raspberry pi上的站点。它在我的笔记本电脑上仍然不可用,但我猜这是因为我没有使用ssh隧道,我只是在终端上用ssh连接到我的Pi中。这听起来对吗?谢谢你的帮助!如果你在你的机器上点击192.168.1.28:8000和192.168.1.28怎么办?在我的机器上,192.168.1.28显示欢迎使用nginx,192.168.1.28:8000根本不起作用。@tknickman我相信另一个答案,如果您在sites enabled文件夹中删除默认的符号链接,将在重新启动nginx后修复您的问题。是的,我现在就可以解决所有问题。谢谢我会将此标记为答案,因为这可以让它工作,但下面的答案有助于使站点在没有端口的本地主机上可用。我将supervisord conf文件更改为您指定的命令,现在我可以通过点击localhost:8000在我的raspberry pi上访问站点。它在我的笔记本电脑上仍然不可用,但我猜这是因为我没有使用ssh隧道,我只是在终端上用ssh连接到我的Pi中。这听起来对吗?谢谢你的帮助!如果你在你的机器上点击192.168.1.28:8000和192.168.1.28怎么办?在我的机器上,192.168.1.28显示欢迎使用nginx,192.168.1.28:8000根本不起作用。@tknickman我相信另一个答案,如果您在sites enabled文件夹中删除默认的符号链接,将在重新启动nginx后修复您的问题。是的,我现在就可以解决所有问题。谢谢我会将此标记为答案,因为这样可以使其正常工作,但下面的答案有助于使站点在本地主机上不带端口可用。默认设置为启用站点和可用站点。我将从这两个地方删除它,看看会发生什么。你只需要从启用的站点中删除符号链接,这些站点实际上是活动的。可用站点包含所有配置;当您创建从“已启用的站点”到“可用站点”的链接并重新启动服务器时,这将激活该特定配置。默认设置为“已启用的站点”和“可用的站点”。我将从这两个地方删除它,看看会发生什么。你只需要从启用的站点中删除符号链接,这些站点实际上是活动的。可用站点包含所有配置;当您创建从启用的站点到可用站点的链接并重新启动服务器时,这将激活该特定配置。
location @gunicorn_proxy {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_pass http://127.0.0.1:5000; # Default port
}