我在Windows中安装了Vagrant,现在我有一个虚拟的ubuntu,我运行了一个python脚本:
vagrant@precise32:/vagrant/FlaskMysql/FlaskApp$ ls
app.py static storedPro.txt templates
vagrant@precise32:/vagrant/FlaskMysql/FlaskApp$ python app.py
* Running on http://127.0.0.1:5002/ (Press CTRL+C to quit)
我的Vagrantefile:
config.vm.box = "hashicorp/precise32"
config.vm.provision :shell, path: "bootstrap.sh"
config.vm.network :forwarded_port, guest: 80, host: 4567
config.vm.network :forwarded_port, guest: 5002, host: 5002
我尝试在我的窗口中从浏览器访问上述地址,index.html页面会在几秒钟后出现,然后消失。
更新:
vagrant@precise32:/vagrant/FlaskMysql/FlaskApp$ curl http://127.0.0.1:5000
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>500 Internal Server Error</title>
<h1>Internal Server Error</h1>
<p>The server encountered an internal error and was unable to complete your request. Either the server is overloaded or
there is an error in the application.</p>
感谢。
答案 0 :(得分:2)
除转发端口外,您还需要运行带有主机"0.0.0.0"
的Flask应用:
app.run(host='0.0.0.0', port=5002)
这使得dev服务器在外部可见;在Vagrant的情况下,我们希望应用程序在外部可见(从客户操作系统到主机操作系统)。
答案 1 :(得分:0)
感谢chucksmash的回答,这是我的解决方案版本:
我从 Python App 中更改了主机和端口:
run(host='localhost', port=8080, debug=True)
对此:
run(host='0.0.0.0', port=5002, debug=True)
,并在 vagrantfile 中通过以下操作:
config.vm.network "forwarded_port", guest: 8080, host: 8080, host_ip: "127.0.0.1"
对此:
config.vm.network "forwarded_port", guest: 5002, host: 5002
然后测试请求,并不要忘记添加资源(URL端点)在我的示例中为“ hello”:http://0.0.0.0:5002/hello
这为我解决了这个问题。
答案 2 :(得分:0)
如果有人仍然面临连接主机上的flask URL的问题,我想在Chucksmash的答案中添加更多内容。尝试以下选项之一(两者都应起作用):
流浪文件:
config.vm.network "forwarded_port", guest: 5000, host: 5000, host_ip: "127.0.0.1"
app.py:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return "Hello world!"
if __name__ == "__main__":
app.run()
方法1。。在app.run()中配置主机和端口,并使用python运行Flash应用。
if __name__ == "__main__":
app.run(host="0.0.0.0", port=5000)
运行烧瓶应用程序:
$ python3 app.py
方法2。将host
和port
作为参数传递给flask run
:
export FLASK_APP=app.py
flask run --host "0.0.0.0" --port 5000
您可以通过在终端上运行以下命令来验证其是否有效:
curl http://127.0.0.1:5000
输出:Hello world!