16

我正在使用 django 的内置服务器来开发一个站点,并且我希望我所在的同一网络中的其他计算机能够使用本地 IP 地址访问服务器。我看过很多关于这个的帖子,在尝试了所有建议之后,它仍然不允许我网络中的其他计算机访问该站点。

我使用运行服务器

python manage.py runserver 0.0.0.0:8000

并且已经打开了端口8000,如下图所示。

在此处输入图像描述

我在内核 3.8.11-200 上运行 Django 1.4.2、Python 2.7.3、Fedora 18

非常感谢任何帮助。谢谢。

4

4 回答 4

21

利用python manage.py runserver <ip>:<port>

例如,我的 IP 是 192.168.0.100,我想在 80 端口上运行 django 应用程序,我必须这样做

[sudo] python manage.py runserver 192.168.0.100:80

我的端口 80 需要 root 权限,可能是因为我有其他应用程序访问它。

您还必须将 IP 地址添加到ALLOWED_HOSTSsettings.py 中的列表中

通过这样做,192.168.0 网络中的所有客户端将能够访问位于 192.168.0.100 的站点

于 2013-05-12T05:01:55.640 回答
4

您正在根据需要启动 Django - 只要连接到达它,它就会接受来自任何地方的连接。

检查您的防火墙并确保它允许 8000 端口连接。像这样的东西应该工作:

iptables -I INPUT -p tcp -m tcp --dport 8000 -j ACCEPT

或者,您需要扩展INTERNAL_IPS设置中的变量以允许远程调试:https ://docs.djangoproject.com/en/dev/ref/settings/#internal-ips 。

于 2013-05-12T06:31:32.653 回答
4

斯卡拉普是正确的。如果您的网络配置正确并且您的 django 应用程序使用 pytho9n manage.py runserver 0.0.0.0:8000 并且您仍然无法从 VM 主机访问您的 django 应用程序,那么几乎可以肯定是防火墙问题。如果您正在运行 iptables,上面的插图很好。

我在 Windows 7 主机的 virtualbox VM 上部署了 CentOS 7。我不知道这个发行版使用firewalld,而不是iptables 来控制访问。

如果

ps -ae | grep 防火墙返回类似 602 的内容?00:00:00 防火墙

您的系统正在运行 firewalld,而不是 iptables。他们不一起跑。

要更正您的 VM,以便您可以从主机访问您的 django 站点,请使用以下命令:

firewall-cmd --zone=public --add-port=8000/tcp --permanent firewall-cmd --reload

非常感谢http://www.scriptscoop.net网站上的 pablo v 指出这一点。

于 2015-12-26T02:16:20.990 回答
0

使用 $ sudo ufw enable 设置防火墙规则 $ sudo ufw allow 8000

在inet下输入ipconfig copy addr

做 python3 manage.py runserver your_inet_addr:8000

于 2022-01-21T08:02:04.223 回答