Vagrant里安装Flask后,hello.py运行成功,为什么主机无法访问

2013-01-17 21:51:00 +08:00
 linode
Vagrantfile添加配置:
config.vm.forward_port 5000, 5000

运行Flask简单的hello.py代码测试
http://flask.pocoo.org
提示 Running on http://127.0.0.1:5000/

回到主机,访问http://127.0.0.1:5000/
浏览器返回:

> 未收到数据
> 服务器未发送任何数据,因此无法载入该网页。
> 以下是一些建议:
> 请稍后重新加载此网页。
> 错误 324 (net::ERR_EMPTY_RESPONSE):服务器已断开连接,且未发送任何数据。

该怎么访问呢?
8576 次点击
所在节点    Vagrant
11 条回复
liuxurong
2013-01-17 22:12:21 +08:00
http://docs.torriacg.org/docs/flask/quickstart.html

如果你运行服务器,你会注意到它只能从你自己的计算机上访问,网络中其 它任何的地方都不能访问。这是因为默认情况下,调试模式,应用中的一个 用户可以执行你计算机上的任意 Python 代码。

如果你禁用了 debug 或信任你所在网络的用户,你可以简单修改调用 run() 的方法使你的服务器公开可用,如下:

app.run(host='0.0.0.0')

这让你的操作系统去监听所有公开的IP。
linode
2013-01-17 22:26:42 +08:00
@liuxurong
app.run(host='0.0.0.0')的方法确实可访问,但每次修改了代码都得手动重启
于是我启用了debug模式app.run(debug=True),结果又返回之前的错误了
liuxurong
2013-01-17 22:28:42 +08:00
app.run(host='0.0.0.0',debug=True)

@linode
linode
2013-01-18 11:11:38 +08:00
@liuxurong 谢谢,成功了。上线部署的时候host='0.0.0.0'这个如果不移除会有影响吗?
0bit
2013-01-18 16:20:21 +08:00
app.run应该是在if __name__ == "__main__"里的,上线部署的时候,你不会直接用Flask的Server吧,用uwsgi或者gunicorn,就没问题了,别忘了设置bind的信息。
linode
2013-01-18 22:48:10 +08:00
@0bit
@liuxurong
嗯,同样的。如果我在主机安装了mongodb,127.0.0.1:27017。
那么Vagrant如何访问主机的mongodb呢?
Livid
2013-01-18 23:11:34 +08:00
在 Vagrantfile 里加一行:

config.vm.forward_port 27017, 27017

然后虚拟机的 27017 就变成你实体机的 27017。
linode
2013-01-18 23:51:45 +08:00
config.vm.forward_port 27017, 27017加了,端口也是对的

还是无法链接,使用Vagrant里运行mongo提示:
Fri Jan 18 16:48:10 Error: couldn't connect to server 127.0.0.1:27017 src/mongo/shell/mongo.js:91
exception: connect failed

运行原先写的flask应用提示
could not connect to 127.0.0.1:27017: [Errno 111] Connection refused
wuxqing
2013-01-19 00:32:41 +08:00
@linode
把linux下的防火墙关了试试看
linode
2013-01-19 10:59:33 +08:00
@wuxqing 没有效果
everbird
2013-01-19 16:02:52 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/57939

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX