尽管计算机的 ssh 工作正常,但 Django 服务器无法访问
Posted
技术标签:
【中文标题】尽管计算机的 ssh 工作正常,但 Django 服务器无法访问【英文标题】:Django server is not reachable although ssh to the computer works 【发布时间】:2016-10-13 03:46:32 【问题描述】:我在 Redhat 计算机上运行 Django 服务器。我可以通过 ssh 连接远程连接到计算机,所以我假设没有防火墙问题。但是,当我执行以下命令时(据说应该使服务器公开可用)
python3 manage.py runserver 0.0.0.0:8080
无法从任何其他计算机访问服务器。在本地(从 redhat 机器本身)我可以看到服务器正在运行。
我是 redhat 的新手,所以如果我需要提供任何其他信息,请告诉我。
到目前为止,我发现我可以使用localtunnel
使我的服务器可访问,但是,由于它更改了 url,我更喜欢以其他方式解决问题。
更新:问题与 Django 无关。令人困惑的是服务器运行没有问题,并且没有特定原因变得无法访问。
无论如何,我需要添加一些配置(在here 中找到)以使端口:8080 可达。
【问题讨论】:
尝试netstat -tanp | grep LISTEN
查看端口是否正在监听网络,并尝试iptables -L
确保没有防火墙规则禁止它。
尝试了第一个命令,似乎端口正在监听。我不确定如何解释第二个命令的输出,所以我为您提供输出日志:dropbox.com/s/zoul6y8dag04h74/iptables.txt?dl=0
嗯,相当复杂的规则,最新的RedHat似乎使用firewalld而不是iptable,所以我不能说太多。底部有一条规则 dpt:ssh ctstate NEW
允许新的 ssh 连接,顶部的 ACCEPT all -- anywhere anywhere
可能是 lo
接口,所以我很确定它阻止了到您的 Django 端口的传入连接。你能运行iptables -vL
吗,它会清除ACCEPT all规则,因为它会显示界面。不幸的是,我不确定在 firewalld 上打开端口的最佳方法是什么。
firewall-cmd --zone=public --add-port=8080/tcp
我认为是这样的,但请谨慎对待。我不是 RH 系统管理员。
centos 7 - open firewall port的可能重复
【参考方案1】:
打开8080端口
firewall-cmd --zone=public --add-port=8080/tcp
要将其永久添加到系统中,请像这样添加 --permanent:
firewall-cmd --zone=public --add-port=8080/tcp --permanent
【讨论】:
以上是关于尽管计算机的 ssh 工作正常,但 Django 服务器无法访问的主要内容,如果未能解决你的问题,请参考以下文章
尽管桥接头工作正常,但无法在 Swift 中实例化 Obj C 类
尽管它显示在任务栏上,但 Android Studio 模拟器无法正常工作