从另一台机器同一网络访问Django devserver

时间:2013-05-12 04:22:32

标签: python linux django fedora

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

我使用

运行服务器
python manage.py runserver 0.0.0.0:8000

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

enter image description here

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

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

3 个答案:

答案 0 :(得分:13)

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

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

[sudo] python manage.py runserver 192.168.0.100:80

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

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

答案 1 :(得分: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

答案 2 :(得分:3)

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

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

如果

  

ps -ae | grep防火墙   返回类似的东西    602? 00:00:00 firewalld

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

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

  

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

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