如何在本地浏览器中从远程服务器访问 Django 网站?
How to access a Django website from remote server in a local browser?
我已经查看并尝试了几个小时,但似乎没有任何效果。这是信息:
在我的 Windows 机器上,我使用 PuTTY 或 MobaXterm 通过 SSH(仅命令行)连接到远程 Linux 服务器。
我用这个命令开始了一个新项目:django-admin startproject mysite
。
我使用source
命令激活虚拟环境。
我运行服务器使用这个命令:python3 manage.py runserver 0.0.0.0:8000
.
假设 ip a
的输出结果为以下假 IP 地址:
1: inet 127.0.0.1/8 scope host lo
2: inet 172.10.12.50/24 brd 172.10.12.200 scope global ens3
3: inet 62.3.8.10/26 brd 62.3.8.22 scope global ens4
现在呢?我不知道如何访问该网站。我尝试了各种 IP 地址,我尝试使用 PuTTY 的 tunneling/port 转发功能,我尝试弄清楚 MobaXterm 的 tunneling/port 转发功能,我想我已经尝试了所有可能的 IP 组合这些设置中的地址。没有任何效果。
当端口转发正常工作时,我应该可以使用 http://127.0.0.1:8000 访问该站点,但这还没有发生。我还尝试使用 ip a
命令中的其他 IP 地址。
这适用于 RHEL 7.* 或 CentOS,如果您 运行 使用 Linux 发行版:
你有没有试过关闭你的firewalld来测试一下你是否可以通过浏览器访问Django?如果您还没有,只需输入 sudo firewall-cmd --state
查看防火墙状态是否处于活动状态,然后按 sudo systemctl stop firewalld
关闭
试试看是否通过[external IPv4]:8000访问
如果可以,那我们就有所进展了。
打开 firewalld sudo service firewalld start
并使用以下命令允许 http 服务通过防火墙 firewall-cmd --permanent --add-service=http
最后,重新加载防火墙firewall-cmd --reload
希望这能奏效。
我们终于弄明白了。问题是使用跳转服务器。我是先登录serverA,然后用ssh登录到项目所在的serverB。我们这样做是因为如果不先访问服务器 A 就无法访问服务器 B。 (我不知道为什么。)
所以我在 PuTTY 中使用的设置,Connection > SSH > Tunnels 是:
- 来源 = 8000
- 目的地 = 0.0.0.0:8000
然后在我登录到serverA后,我使用以下命令登录到serverB:
$ ssh serverB -L8000:0.0.0.0:8000
然后我运行虚拟环境的source命令,然后是runserver命令:
$ python3 manage.py runserver 0.0.0.0:8000
然后我可以通过 http://127.0.0.1:8000
在我的本地计算机上访问该网站
现在在 MobaXterm 中解决这个问题,因为这是我首选的 SSH 客户端...
我已经查看并尝试了几个小时,但似乎没有任何效果。这是信息:
在我的 Windows 机器上,我使用 PuTTY 或 MobaXterm 通过 SSH(仅命令行)连接到远程 Linux 服务器。
我用这个命令开始了一个新项目:
django-admin startproject mysite
。我使用
source
命令激活虚拟环境。我运行服务器使用这个命令:
python3 manage.py runserver 0.0.0.0:8000
.假设
ip a
的输出结果为以下假 IP 地址:
1: inet 127.0.0.1/8 scope host lo
2: inet 172.10.12.50/24 brd 172.10.12.200 scope global ens3
3: inet 62.3.8.10/26 brd 62.3.8.22 scope global ens4
现在呢?我不知道如何访问该网站。我尝试了各种 IP 地址,我尝试使用 PuTTY 的 tunneling/port 转发功能,我尝试弄清楚 MobaXterm 的 tunneling/port 转发功能,我想我已经尝试了所有可能的 IP 组合这些设置中的地址。没有任何效果。
当端口转发正常工作时,我应该可以使用 http://127.0.0.1:8000 访问该站点,但这还没有发生。我还尝试使用 ip a
命令中的其他 IP 地址。
这适用于 RHEL 7.* 或 CentOS,如果您 运行 使用 Linux 发行版:
你有没有试过关闭你的firewalld来测试一下你是否可以通过浏览器访问Django?如果您还没有,只需输入 sudo firewall-cmd --state
查看防火墙状态是否处于活动状态,然后按 sudo systemctl stop firewalld
试试看是否通过[external IPv4]:8000访问 如果可以,那我们就有所进展了。
打开 firewalld sudo service firewalld start
并使用以下命令允许 http 服务通过防火墙 firewall-cmd --permanent --add-service=http
最后,重新加载防火墙firewall-cmd --reload
希望这能奏效。
我们终于弄明白了。问题是使用跳转服务器。我是先登录serverA,然后用ssh登录到项目所在的serverB。我们这样做是因为如果不先访问服务器 A 就无法访问服务器 B。 (我不知道为什么。)
所以我在 PuTTY 中使用的设置,Connection > SSH > Tunnels 是:
- 来源 = 8000
- 目的地 = 0.0.0.0:8000
然后在我登录到serverA后,我使用以下命令登录到serverB:
$ ssh serverB -L8000:0.0.0.0:8000
然后我运行虚拟环境的source命令,然后是runserver命令:
$ python3 manage.py runserver 0.0.0.0:8000
然后我可以通过 http://127.0.0.1:8000
现在在 MobaXterm 中解决这个问题,因为这是我首选的 SSH 客户端...