2013-02-28 73 views
3

的外部可视性的问题我已成功地安装烧瓶中,运行Hello世界的脚本:与瓶web服务器

from flask import Flask 
app = Flask(__name__) 

@app.route('/') 
def hello_world(): 
    return 'Hello World!' 

if __name__ == '__main__': 
    app.run() 

我留下了深刻印象是多么容易。然后我想让我的网络服务器在外部可见。按照建议,我把host='0.0.0.0'作为运行函数的参数。然后我找到了我的IP地址(在Google中),并将其放在我的Web浏览器的地址栏中(而hello-world-script正在运行)。

结果我:“一个用户名和密码被要求”和一个对话框,在这里我需要把用户名和密码。我不确定,但我认为它来自我的无线网络。有没有办法改变这种行为?

+0

顺便说一句,-1的想法使*开发服务器*可用于外部。获得认真的服务器(Nginx/Apache/Gunicorn)或使用PAAS(OpenShift/AppFog/...)。 – gioi 2013-03-07 16:44:38

回答

7

你是如何试图运行你的应用程序?如果您运行的烧瓶app.run() - 瓶创建你的主机(by default 127.0.0.1)和端口(by default 5000)自身WSGI服务器(需要权限,如果端口< 1000)。如果使用nginx + WSGI或其他方式运行烧瓶,则服务器会解析主机和端口。

现在看起来你想通过解决您的服务器一样的nginx或Apache端口得到应用。尝试使用默认端口http://your-server-host-or-ip:5000烧瓶应用程序或尝试更改端口(设置显式),如app.run('0.0.0.0', 8080),并通过http://your-server-host-or-ip:8080得到它。

顺便说一句,你可以使用命令行工具,例如总是得到IP地址适用于类Unix系统的ifconfig,适用于Windows的ipconfig /all

+0

如果罗马有NAT,该怎么办? – gioi 2013-03-03 15:53:32

+0

然后,“请求的用户名和密码”响应不是来自他的服务器。但是他无法访问NAT后面的服务器。 – tbicr 2013-03-04 07:45:26

1

要精心有点到什么@tbicr说,该密码提示符表明您正在尝试连接到您的IP端口80,这是最有可能举办一个管理页面为您的路由器/调制解调器。您希望在端口5000上连接到IP,Flask应用程序的默认端口使用app.run()运行。