我按照这里的说明使用内置的web服务器运行Django,并且能够成功地使用python manage.py runserver运行它。如果我从web服务器本地访问127.0.0.1:port,我会得到Django页面,表明它工作。
我知道Django web服务器不是一个生产服务器,但是为了测试目的,能够从外部世界访问它是很重要的——也就是说,不是从服务器上的web浏览器,而是从另一台计算机。
我试着:
http://mywebserver:port_django_runs_on
但这并没有起作用。我还尝试使用IP代替(基于ifconfig)访问:
http://myipaddress:port_django_runs_on
这也没有用。
网络服务器正在运行,所以它必须从外部访问,我只是不知道如何。我用Apache运行Linux,虽然我还没有用Apache配置Django。
有什么办法吗?
您必须运行开发服务器,以便它在与您的网络的接口上侦听。
E.g.
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启动开发服务器
适用于AWS用户。
我必须使用以下步骤才能到达那里。
1)确保在sudo级别安装pip和django
Sudo apt-get install python-pip
Sudo PIP安装django
2)确保安全组入局规则包括端口80上的http (0.0.0.0/0)
通过AWS控制台配置
3)在ALLOWED_HOSTS中添加公网IP和DNS
ALLOWED_HOSTS是一个列表对象,可以在settings.py中找到
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
站点现在可在以下任何一个(不需要:80,因为这是默认的http):
[公共DNS]即ec2-54-528-27-21.compute-1.amazonaws.com
[公共IP]即75.254.65.19