尽管计算机的 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 服务器无法访问的主要内容,如果未能解决你的问题,请参考以下文章

尽管单元测试正常运行,但 Authtoken 迁移不起作用

Django 中单元测试的覆盖设置无法正常工作

尽管桥接头工作正常,但无法在 Swift 中实例化 Obj C 类

尽管它显示在任务栏上,但 Android Studio 模拟器无法正常工作

下面的代码是每次单击按钮时显示随机颜色。但尽管已完全编译,但它无法正常工作。谢谢

在主机上测试 ssh 密钥可以正常工作,但不能在具有相同密钥的容器中