首页 > 解决方案 > Runserver Django 在生产中成功,但无法访问站点。但是我可以通过 ngrok 隧道

问题描述

在生产中,我运行 django 项目

python3 manage.py runserver

结果:

Performing system checks...

System check identified no issues (0 silenced).
December 09, 2019 - 03:23:26
Django version 2.2.7, using settings 'myproject.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

我也试过python3 manage.py runserver 0.0.0.0:8000

但是当我访问它时,该站点被拒绝连接。(我试过了0.0.0.0:8000,,,127.0.0.1:8000site-url:8000

当我通过 ngrok 隧道时,它运行顺利。所以我发现 django 项目已经在运行,但是我们无法从外部访问它。

当我跑sudo lsof -i -P -n | grep LISTEN

结果是:

sshd        890            root    3u  IPv4   18590      0t0  TCP *:22 (LISTEN)
sshd        890            root    4u  IPv6   18592      0t0  TCP *:22 (LISTEN)
apache2    6049            root    4u  IPv6 2895520      0t0  TCP *:80 (LISTEN)
apache2    6049            root    6u  IPv6 2895524      0t0  TCP *:443 (LISTEN)
python3    6117            aina    4u  IPv4 2896228      0t0  TCP 127.0.0.1:8000 (LISTEN)
apache2    6141        www-data    4u  IPv6 2895520      0t0  TCP *:80 (LISTEN)
apache2    6141        www-data    6u  IPv6 2895524      0t0  TCP *:443 (LISTEN)
ngrok      6198            root    3u  IPv4 2896574      0t0  TCP 127.0.0.1:4040 (LISTEN)
apache2    6383        www-data    4u  IPv6 2895520      0t0  TCP *:80 (LISTEN)
apache2    6383        www-data    6u  IPv6 2895524      0t0  TCP *:443 (LISTEN)
apache2    6401        www-data    4u  IPv6 2895520      0t0  TCP *:80 (LISTEN)
apache2    6401        www-data    6u  IPv6 2895524      0t0  TCP *:443 (LISTEN)
apache2    6417        www-data    4u  IPv6 2895520      0t0  TCP *:80 (LISTEN)
apache2    6417        www-data    6u  IPv6 2895524      0t0  TCP *:443 (LISTEN)
apache2    6419        www-data    4u  IPv6 2895520      0t0  TCP *:80 (LISTEN)
apache2    6419        www-data    6u  IPv6 2895524      0t0  TCP *:443 (LISTEN)
apache2    6420        www-data    4u  IPv6 2895520      0t0  TCP *:80 (LISTEN)
apache2    6420        www-data    6u  IPv6 2895524      0t0  TCP *:443 (LISTEN)
apache2    6421        www-data    4u  IPv6 2895520      0t0  TCP *:80 (LISTEN)
apache2    6421        www-data    6u  IPv6 2895524      0t0  TCP *:443 (LISTEN)
apache2    6512        www-data    4u  IPv6 2895520      0t0  TCP *:80 (LISTEN)
apache2    6512        www-data    6u  IPv6 2895524      0t0  TCP *:443 (LISTEN)
apache2    6555        www-data    4u  IPv6 2895520      0t0  TCP *:80 (LISTEN)
apache2    6555        www-data    6u  IPv6 2895524      0t0  TCP *:443 (LISTEN)
apache2    6693        www-data    4u  IPv6 2895520      0t0  TCP *:80 (LISTEN)
apache2    6693        www-data    6u  IPv6 2895524      0t0  TCP *:443 (LISTEN)

我尝试通过运行 telnet 到端口 8000 telnet 127.0.0.1 8000 结果是:

Connected to 127.0.0.1.
Escape character is '^]'.

由于服务器中正在运行其他项目(Apache 中的 PHP 应用程序),我遵循这个问题Run both Django and PHP application in Apache

但是当我直接访问该站点时(不是通过 ngrok),仍然无法访问该站点。我应该怎么做才能访问 django?

标签: djangoapachesshproduction

解决方案


这是因为我通过https访问它应该来自http


推荐阅读