一、问题回溯
虚拟机中通过“flask run”启动web服务,默认访问路径为:http://127.0.0.1:5000/,宿主机无法访问。
二、问题分析
1、宿主机与虚拟机之间是否能够ping通;——可以,如果不行需要修改虚拟机的网络设置,基本都是改为桥接模式。
2、宿主机是否可以通过SecureCRT、Xshell等工具连接服务器(虚拟机);——可以
3、由此基本可以确认是防火墙的问题了;——确实如此,但是问题不能完全解决
4、新问题,IP:127.0.0.1,宿主机会默认访问自己本地,启动Flask时,需要带参数启动。
三、问题解决:
1、防火墙控制
1.1 关闭防火墙:(不推荐,关闭防火墙毕竟不安全)
禁用: systemctl stop firewalld
查看状态: systemctl status firewalld
启动: systemctl start firewalld
停止(重启后依然关闭): systemctl disable firewalld
1.2 添加防火墙白名单(推荐)
root用户添加5000端口的访问权限,这里添加后永久生效
[root@localhost ~]# firewall-cmd --zone=public --add-port=5000/tcp --permanent
[root@localhost ~]# firewall-cmd --reload
查看5000端口访问权限情况
[root@localhost ~]# firewall-cmd --zone=public --query-port=5000/tcp
关闭5000访问权限
[root@localhost ~]# firewall-cmd --zone= public --remove-port=5000/tcp --permanent
2、带参数据启动
# 172.20.10.4为虚拟机IP
[johnny@localhost flask]$ flask run -h 172.20.10.4 -p 5000(其中IP为虚拟机的IP)
(venv) [johnny@localhost flask]$ flask run -h 172.20.10.4 -p 5000