sayhello 项目部署后无法访问

大家好!

这个项目我部署到

Linux版本是:Linux version 4.18.0-240.el8.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 8.3.1 20191121 (Red Hat 8.3.1-5) (GCC)) #1 SMP Fri Sep 25 19:48:47 UTC 2020
python版本:3.6.8

之后,访问127.0.0.1:5000 或者用 flask run --host --port 指定地址,全部不能访问。查看5000端口是正常监听状态,防火墙也关闭了;然后页面提示 127.0.0.1 拒绝了我们的连接请求。

想请教下怎么解决,谢谢。

不知道有没有理解错,你是把项目部署到服务器上,然后本机想访问项目?
其中127.0.0.1指本地主机,你部署到服务器,应该用服务器的地址吧

理解的没问题,我用过服务器地址,也试过本地访问,不知道应该从哪个角度去考虑。
部署过程按照文档搞起来的。如果我主机考虑,是Python版本问题或者centos8的系统兼容问题?

(如果我自己考虑)

首先你的问题描述不清楚,很难帮你定位问题,麻烦先看看置顶的提问贴.
根据你的描述,你是能启动,但不能访问.因此程序是没有问题的
如果你是启动不了,麻烦提供错误信息.
能启动的话,你没有给出完整的网络拓扑结构也无法帮你解决.请重新编辑问题

根据问题的信息,大致能定位到的问题如下:

  1. 程序不能启动
  2. 外部无法访问已运行的服务

程序不能启动

关于这个问题,请提供详细的错误信息

外部无法访问主机上已运行的服务

注意 这里我们将本地电脑称为客户端 部署的电脑称为服务器

  1. 在服务器上访问你所部署的服务看是否正常 -> 如curl等命令
  2. 服务器上能访问,但客户端不能访问

如果客户端不能访问,请检查下面的清单

  1. 服务端启动地址是127.0.0.1还是0.0.0.0
  2. 服务器端口是否打开
  3. 云厂商的防火墙是否打开 (如果是个人网络,检查网关路由)

如果服务端启动地址是127.0.0.1 则可以使用以下方法解决

  1. 将监听地址改成0.0.0.0
  2. 使用反向代理
1 个赞

项目在本地虚拟机,网络NAT(PC端口也开了);问题描述里面说过了指定地址是无法访问的状态.

selinux也关闭了,设置了disable

根据你的描述,服务已经运行了,但外部无法访问。因此排除你所说的python版本和Linux系统问题

你这里的指定地址,指定的地址是什么地址? 因为你使用的是虚拟机,请根据自己的网络拓扑结构访问。

服务器使用了NAT, 需要确保端口转发正确 。此部分可以通过设置多一个桥接的eth来判断你是否正确的转发。除了虚拟网络适配器外,Linux系统的防火墙(system firewalld)也需要放行对应的端口。

你这个描述没有看懂,PC的端口和虚拟机上的端口并没有冲突,详细请参考对应虚拟机的虚拟网络部分

The End

问题描述不清楚,DEBUG过程也没说清楚,无法准确判断问题所在,上述方法只是针对特定的情况的解决方法之一,解决办法不唯一。

我认为描述的比较清楚了,项目部署在本地虚拟机,centos 8,防火墙关闭,网络模式NAT ,也试过指定IP地址以及端口,selinux也关闭了。ps -ef可以查到进程,查看5000端口正在监听状态。(我在pc上telnet 目标IP地址的5000端口是不通的(ssh是可以用的),不知道是不是这个问题,但是防火墙关了,理论上不应该出现这个问题。我不知道还有什么,其他debug的方法

既然程序运行了,那服务器上应该是可以正常访问的。也就是说外部无法访问,那就要根据你自己的网络拓扑结构自行调整了。

那既然程序跑起来了,为什么还考虑python或者系统问题?

其他方法就是 使用桥接模式测试

1 个赞

好的,谢谢你。我大概知道方向了。

桥接试过了,还是不行,但应该就是网络的问题了。总之谢谢老哥认真耐心的指导。

搞定了,跑项目的时候指定了IP地址还有端口,0.0.0.0 5000 然后访问虚拟机的IP地址可以访问项目了。

解决方案在一开始已经给出了,提问应尽量描述清楚原问题,而不是X-Y问题。不然他人很难帮你定位问题

1 个赞

恩,谢谢你,不好意思,我不是很明白反向代理这个东西,的确还有很多东西需要学习。