本地Django网站不会在浏览器中加载

时间:2013-05-31 20:16:19

标签: django centos localhost virtualbox vagrant

我猜这是一个非常简单的解决方案,但我搜索了每个论坛和设置指南,但无法弄明白:

我在本地服务器上构建了一个Django / CentOS-6.3环境(使用VirtualBox和Vagrant)。当我使用'python manage.py runserver [::]:8000'在vagrant终端启动我的服务器时,它启动时没有错误。

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”时(我在V​​agrantfile中设置从端口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必须有不同的东西导致这种情况发生(或许我在我的一个服务器文件中犯了一个错误)。我已按照指南设置Django& CentOS上的PostgreSQL也是如此,但无济于事。我将评论我在下面创建/编辑的一些文件。

如果有人有解决方案,或者甚至建议开始寻找错误的地方,我将非常感激。

4 个答案:

答案 0 :(得分:5)

如果你的网络配置正确,你的django应用程序

python 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

非常感谢pablo v在“虚拟机上访问django服务器”一文中指出这一点。

答案 1 :(得分:4)

主持人的“127.0.0.1”与来宾的“127.0.0.1”不同。默认情况下,命令

python manage.py runserver

仅侦听来宾的localhost。您应该能够在vm中测试它(使用“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吗?我从来没有使用ipv6地址w / django,但是查看源代码(https://github.com/django/django/blob/master/django/core/management/commands/runserver.py),这些接缝是默认为False(“--ipv6”)的标志。也许那是“真正的”问题?

此致

答案 2 :(得分:1)

对于类似的问题,

这个命令对我来说就像一个魅力

python manage.py runserver [::]:8001

答案 3 :(得分:0)

检查你的iptables,然后停止它。 Ubuntu启动时通常不会打开iptables。