我按照这里的说明使用内置的webserver运行Django,并且能够使用它成功运行它python manage.py runserver
.如果我从网络服务器本地访问127.0.0.1:port,我会得到Django页面,表明它有效.
我意识到Django网络服务器不是一个生产服务器,但是对于我来说,测试目的对于能够从外部世界访问它很重要 - 即不是来自服务器上的Web浏览器,而是来自不同的计算机.
我试过了:
http://mywebserver:port_django_runs_on
但它不起作用.我也尝试使用IP代替(基于ifconfig)来访问:
http://myipaddress:port_django_runs_on
这也没用.
Web服务器正在运行,因此必须可以从外部访问,我只是不确定如何.我正在使用Apache运行Linux,尽管我没有使用Apache配置Django.
关于如何做到这一点的任何想法?
您必须运行开发服务器,以便它侦听网络接口.
例如
python manage.py runserver 0.0.0.0:8000
侦听端口8000 上的每个接口.
使用IP或主机名访问Web服务器无关紧要.我猜你还在自己的局域网中.
如果您确实想从外部访问服务器,则还必须配置路由器以将端口转发8000
到您的服务器.
检查服务器上的防火墙是否允许进入正在使用的端口的连接!
假设您可以从外部成功访问Apache服务器,您也可以尝试这样做:
停止Apache服务器,以便该端口80
是免费的.
使用启动开发服务器 sudo python manage.py runserver 0.0.0.0:80
我必须将此行添加到settings.py以使其工作(否则从另一台计算机访问时显示错误)
ALLOWED_HOSTS = ['*']
然后运行服务器:
python manage.py runserver 0.0.0.0:9595
还要确保防火墙允许连接到该端口
选择一个或多个来自:
您的应用程序未成功收听预期的IP:PORT
因为您尚未成功配置它
因为用户没有权限
您的应用程序正在成功侦听预期的IP:PORT,但客户端无法访问它,因为
服务器本地iptables阻止它.
防火墙会阻止它.
因此,您可以通过lsof -i
在计算机上以root身份运行来查看应用程序是否正在成功侦听,并查找python
具有您指定的相应端口的条目.
非root用户通常无法绑定到端口<1024.
您需要iptables -nvL
查看是否存在阻止访问您尝试绑定应用程序的ip:port的规则.
如果有上游防火墙并且您对此不太了解,则需要与网络管理员联系.