V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
linode
V2EX  ›  Vagrant

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

  •  1
     
  •   linode · 2013-01-17 21:51:00 +08:00 · 8554 次点击
    这是一个创建于 4326 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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):服务器已断开连接,且未发送任何数据。

    该怎么访问呢?
    11 条回复    1970-01-01 08:00:00 +08:00
    liuxurong
        1
    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
        2
    linode  
    OP
       2013-01-17 22:26:42 +08:00
    @liuxurong
    app.run(host='0.0.0.0')的方法确实可访问,但每次修改了代码都得手动重启
    于是我启用了debug模式app.run(debug=True),结果又返回之前的错误了
    liuxurong
        3
    liuxurong  
       2013-01-17 22:28:42 +08:00   ❤️ 1
    app.run(host='0.0.0.0',debug=True)

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

    config.vm.forward_port 27017, 27017

    然后虚拟机的 27017 就变成你实体机的 27017。
    linode
        8
    linode  
    OP
       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
        9
    wuxqing  
       2013-01-19 00:32:41 +08:00
    @linode
    把linux下的防火墙关了试试看
    linode
        10
    linode  
    OP
       2013-01-19 10:59:33 +08:00
    @wuxqing 没有效果
    everbird
        11
    everbird  
       2013-01-19 16:02:52 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   985 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 21:16 · PVG 05:16 · LAX 13:16 · JFK 16:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.