笔者最近正在学习Django,学习过程中一般都是在本机上使用 manage.py runserver 命令启动开发用HTTP服务器,使用本机浏览器访问此服务器。相信大多数人在学习中都是这样操作的。
那么如果需要在联网的其他电脑上访问这个Django服务器,则需要额外做一些设置,否则会显示无法连接或连接失败等错误。
以笔者使用的 CentOS7 + Python3.7.1 + Django2.1.4 环境举例说明,首先我们启动开发服务器时,应使用如下命令:
./manage.py runserver 0.0.0.0:8000
命令中需指定IP与监听端口,IP为0.0.0.0表示允许所有连接,端口8000必须未被占用。
编辑此开发服务器的 settings.py,在找到其中的这一行设置
ALLOWED_HOSTS=[ ]
在其中的方括号中输入本服务器的IP地址,如果服务器有多个IP,则输入允许用那个IP接受访问,例如,服务器有两个IP为 192.168.34.54, 170.199.201.130,则可设置为:
ALLOWED_HOSTS=["192.168.34.54", "170.199.201.130", ]
请注意这里也可以使用*通配,但不推荐这样做,因为可能会有安全风险:
ALLOWED_HOSTS=["*", ]
接下来我们需要设置防火墙,开放8000端口。注意下述操作需要管理员权限。
查看所有开放的端口:
firewall-cmd --zone=public --list-ports
如没有8000端口,则将8000端口永久开放:
firewall-cmd --zone=public --add-port=8000/tcp --permanent
重新加载配置信息:
firewall-cmd --reload
一切就绪,此时从其他电脑就可以访问此Django服务器了。