我正在使用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
非常感谢任何帮助。感谢。
答案 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指出这一点。