2013-05-12 59 views
9

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

我运行使用

python manage.py runserver 0.0.0.0:8000 

服务器,并已经打开端口8000,你可以在下图中看到的。

enter image description here

我在内核3.8.11-200

任何帮助运行Django的1.4.2,2.7.3的Python,Fedora的18是高度赞赏。谢谢。

回答

11

使用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权限,也许是因为我有其他应用程序访问它。

通过192.168.0网络中做这一切的客户将能够在192.168.0.100

访问该网站
+0

谢谢拉杰夫。但是这不起作用,因为我的本地Apache正在使用80端口,而8000端口是大多数django开发者使用的端口,因此我不想为任何新东西而去。另外0.0.0.0:8000表示8000端口上的任何IP,因此给它一个特定的IP并没有太大的区别。 – Paulo 2013-05-12 14:16:16

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

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

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

如果

PS -ae | grep防火墙 返回类似 602? 00:00:00 firewalld

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

要纠正你的虚拟机,所以你可以从主机访问你的Django网站上使用的命令:

防火墙-CMD --zone =公共--add端口= 8000/TCP --permanent 防火墙-cmd --reload

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

相关问题