如何从外部访问本地的Djangonetworking服务器

我按照这里的说明使用内置的webserver运行Django,并能够使用python manage.py runserver成功运行它。 如果我从web服务器本地访问127.0.0.1:port,我得到Django页面指示它工作。

我意识到Django的networking服务器并不是一个生产服务器,但是对于我来说,testing的目的是能够从外部访问 – 即不是来自服务器上的networking浏览器,而是来自不同的计算机。

我试过了:

 http://mywebserver:port_django_runs_on 

但它没有工作。 我也尝试使用IP(基于ifconfig)来访问:

 http://myipaddress:port_django_runs_on 

哪个也没用

Web服务器正在运行,所以它必须从外部访问,我只是不知道如何。 我用Apache运行Linux,但是我没有用ApacheconfigurationDjango。

任何想法如何做到这一点?

您必须运行开发服务器,以便在您的networking接口上侦听 。

例如

 python manage.py runserver 0.0.0.0:8000 

监听端口8000上的每个接口。

无论您是使用IP还是主机名访问Web服务器,都无关紧要。 我猜你还在你自己的局域网里。
如果你真的想从外面访问服务器,你还必须configuration你的路由器转发端口,例如8000到你的服务器。


检查服务器上的防火墙是否允许传入连接到正在使用的端口!

假设你可以成功地从外部访问你的Apache服务器,你也可以试试这个:

  • 停止Apache服务器,以便端口80是免费的。
  • sudo python manage.py runserver 0.0.0.0:80启动开发服务器

从以下select一个或多个:

  • 您的应用程序未能成功侦听预期的IP:PORT
    • 因为你没有成功configuration它
    • 因为用户没有权限
  • 您的应用程序正在成功侦听预期的IP:PORT,但客户端无法访问它,因为
    • 服务器本地iptables阻止它。
    • 防火墙阻止它。

因此,您可以通过在计算机上以root身份运行lsof -i来检查您的应用程序是否正在侦听,并使用您指定的相应端口查找python条目。

非root用户通常不能绑定到端口<1024。

你需要查看iptables -nvL来查看是否有一个规则阻止访问你试图绑定你的应用的ip:port。

如果有一个上游防火墙,并且您不太了解,则需要与networkingpipe理员联系。

我不得不将这一行添加到settings.py,以使其工作(否则,从另一台计算机访问时会显示错误)

 ALLOWED_HOSTS = ['*'] 

然后运行服务器:

 python manage.py runserver 0.0.0.0:9595 

还要确保防火墙允许连接到该端口

我要在这里添加这个:

  1. sudo python manage.py runserver 80

  2. 转到您的手机或计算机,并将您的计算机内部IP(例如192.168.0.12 )input浏览器。

此时你应该连接到Django服务器。

这也应该没有sudo的工作:

 python manage.py runserver 0.0.0.0:8000 

只是这样做:

 python manage.py runserver 0:8000 

通过上面的命令你实际上绑定到外部IP地址。 所以现在当你用端口号访问你的IP地址时,你将可以在浏览器中访问它,而不会有任何问题。

只需在浏览器地址栏中input以下内容:

 <your ip address>:8000 

例如:

 192.168.1.130:8000 

您可能需要编辑settings.py在最后一行的settings.py中添加以下内容:

 ALLOWED_HOSTS = ['*'] 

希望这将有助于…

对于AWS用户。

我不得不使用以下步骤去那里。

1)确保pdo和django安装在sudo级别

  • sudo apt-get install python-pip
  • sudo pip安装django

2)确保安全组入站规则包括端口80上的http为0.0.0.0/0

  • 通过AWS控制台configuration

3)将公共IP和DNS添加到ALLOWED_HOSTS

  • ALLOWED_HOSTS是您可以在settings.py中find的列表对象
  • ALLOWED_HOSTS = [“75.254.65.19”,“ec2-54-528-27-21.compute-1.amazonaws.com”]

4)在端口80上使用sudo启动开发服务器

  • sudo python manage.py runserver 0:80

网站现在可以在以下任何一个网站上使用(不需要:http默认为80):

  • [公共DNS]即ec2-54-528-27-21.compute-1.amazonaws.com
  • [公共IP]即75.254.65.19