我猜有一个非常简单的解决方案,但我搜索了每个论坛和设置指南,但无法弄清楚:
我在我的 local 服务器上构建了 Django/CentOS-6.3 环境(使用 VirtualBox 和 Vagrant)。当我在 vagrant 终端中使用“python manage.py runserver [::]:8000”启动服务器时,它启动时没有错误。
Validating models...
0 errors found
May 31, 2013 - 13:56:15
Django version 1.5.1, using settings 'mysitename.settings'
Development server is running at http://[::]:8000/
Quit the server with CONTROL-C.
但是,当我尝试在浏览器中导航到“
http://127.0.0.1:8001
”时(我在 Vagrantfile 中设置了从端口 8000 到端口 8001 的端口转发),浏览器只会挂起 5 分钟,直到超时,然后返回留言:
> The connection was reset
> The connection to the server was reset while the page was loading.
> ...
即使关闭本地服务器,这也与我从浏览器收到的消息完全相同。我的计算机显然将其识别为转发端口,因为我尝试的任何其他端口(例如 8000)都会立即返回错误,指出它无法与 127.0.0.1:8000 处的服务器建立连接。
关于服务器文件,我过去用 Django/Ubuntu 做过很多类似的设置,从来没有遇到过任何问题,但是 Django/CentOS 一定有什么不同导致了这种情况的发生(或者也许我做了一个在我的服务器文件之一中误认为某人)。我也遵循了在 CentOS 上设置 Django 和 PostgreSQL 的指南,但没有成功。我将在下面评论我创建/编辑的一些文件。
如果有人有解决方案,或者甚至对从哪里开始寻找错误有建议,我将非常感激。
python管理.py运行服务器0.0.0.0:8000
并且您仍然无法从 VM 主机访问 django 应用程序,几乎可以肯定存在防火墙问题。 如果您正在运行 iptables,上面的解决方案很好。
我从 Windows 7 主机在 virtualbox 虚拟机上部署了 CentOS 7。 我不知道这个发行版使用firewalld而不是iptables来控制访问。
如果
ps -ae | grep 防火墙返回类似的东西
602? 00:00:00 防火墙您的系统正在运行firewalld,而不是iptables。 他们不一起跑步。
要更正您的虚拟机,以便您可以从主机访问 django 站点,请使用以下命令:
firewall-cmd --zone=public --add-port=8000/tcp --permanent非常感谢 pablo v 在“在虚拟机上访问 django 服务器”一文中指出了这一点。firewall-cmd --reload
python manage.py runserver
仅监听来宾的本地主机。您应该能够从虚拟机内测试它(使用“vagrant ssh”登录)并运行
curl -I http://127.0.0.1:8000/
主机作为不同的IP。要从主机访问开发服务器,您必须在没有 IP 限制的情况下启动它:
python manage.py runserver 0.0.0.0:8000
是的:
python manage.py runserver [::]:8000
应该是一样的。但这就是 IPv6 语法 AFAIK。您确定“manage.py runserver”命令默认支持 IPv6 吗?我从未在 django 中使用过 ipv6 地址,但是查看源代码(
https://github.com/django/django/blob/master/django/core/management/commands/runserver.py)有接缝是一个默认为 False 的标志(“--ipv6”)。也许这才是“真正的”问题?
问候,
这个命令对我来说就像一个魅力
python manage.py runserver [::]:8001