如何从外部访问本地的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
还要确保防火墙允许连接到该端口
我要在这里添加这个:
-
sudo python manage.py runserver 80
-
转到您的手机或计算机,并将您的计算机内部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