Python 用Nginx将烧瓶放置在覆盆子皮上
我正在尝试使用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 我可以通过以下方式让一切变得更加有趣: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,虽然我根本
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
}