Pycharm 远程启动 Django 项目不能访问
操作步骤
今天用 Pycharm 远程创建一个 Django 项目。
创建成功后 Pycharm 会自动为其生成 Configuration ,因此我没有自己去配置。点击运行按钮,测试 Django 能否正常启动。
结果是,项目正常启动(Pycharm 没有报错),但打开浏览器访问 http://192.168.20.133:8000 ,不能得到正常页面。
问题排查
首先,由于我的 Pycharm 能够正常连接远程 Python 解释器,说明本机与远程机通信正常。
继而我想,是不是 Pycharm 启动远程 Django 项目出了问题。所以我做了以下步骤:
- 检查防火墙是否开启:
firewall-cmd --state
(centos7 环境)。返回 running,防火墙果然开着,为快速定位问题,我选择直接把防火墙关掉:systemctl stop firewalld.service
。但是仍不能正常访问页面。 - 检查 8000 端口是否被监听。如果 Django 正常启动,那么远程机上的 8000 端口一定是被监听着的。命令:
netstat -nlp|grep 8000
。结果发现 8000 端口被 Python 的进程监听着,那么说明没啥问题。所以决定直接在远程机上访问 url:http://192.168.20.133:8000/。
- linux 终端访问 url 可用 curl,即:
curl http://127.0.0.1:8000
。
返回内容显示,Django 的确跑起来了,而且是正常的跑起来了。只不过本机访问不了。 - 我突然灵机一动,想到“在远程机上,用远程机的 IP 访问页面可以吗?”
结果是:不行。于是我抱着试一试的心态,把 Django 自动生成的 Configuration 修改了,增加了 Host 的内容,为 0.0.0.0,如下图这样。 - 选择 apply,点击 ok。通过浏览器访问页面正常,远程机上
curl http:192.168.20.133
访问正常。
结论
虽然不知道这之间原理,但基本可以得出一个结论:。严格地说,应该是在某种情况下不完全相等。