在Ubuntu虚拟机中,可通过几行代码搭建一个非常简单的flask web服务。
from flask import Flask
app=Flask(__name__)
@app.route('/')
def index():
return 'hello world'
if __name__=="__main__":
app.run(debug=True)
运行代码后,打开Ubuntu中浏览器访问127.0.0.1:5000即可正常显示hello world,但如果在Win10中使用浏览器访问对应地址则无法显示。
先说明下为什么有在主机Win10直接访问虚拟机Ubuntu端口数据的需求。比如,个人倾向于在Ubuntu环境中开发API接口,但是一些客户端开发(比如微信小程序)只能在Win10或者OSX中进行。如果不能直接访问,只能在Win10中再搭建一套Python开发环境,这样会很繁琐。
接下来说下解决方案。
第一步:
修改最后一行代码为
app.run(host='0.0.0.0',debug=True) 或者 app.run(host='10.0.2.15',debug=True)
这里host可以改成0.0.0.0(表示在局域网的任意IP上)或者10.0.2.15(在Ubuntu中通过ifconfig命令查看对应IP)
第二步:
按下图配置VirtualBox中的网络端口转发
VirtualBox中点击网络,然后在点击端口转发
注意红框中的IP也可以不填写,为空则默认为0.0.0.0;端口均填写5000
这样修改后即可在Win10中正常访问了。
需要注意的是,如果没有第一步修改host,第二步无论怎么设置都不会成功,比如两个IP都设置成127.0.0.1或者0.0.0.0。由于网络知识有限,具体原因不太清楚,如果有朋友知道不修改host直接通过VB的端口转发即能成功,欢迎评论,感谢!