如何使用 WSL (Windows Subsystem for Linux) 访问 Django 服务器?

3
我正在使用Windows 10上的Ubuntu Bash,并在Python虚拟环境中安装了Django。我可以成功启动Django服务器,但是当我在Windows 10浏览器中输入“http://127.0.0.1:8000/”时,我没有得到任何响应。
我尝试将端口号更改为其他值(例如,“python3 manage.py runserver 127.0.0.1:7171”),但仍然没有得到任何响应。
我不认为这是防火墙问题,因为WSL和浏览器都在同一台Windows 10笔记本电脑上运行。您知道可能是什么问题吗?
(env) $ python3 manage.py runserver
Performing system checks...

System check identified no issues (0 silenced).
July 26, 2018 - 00:50:25
Django version 2.0.7, using settings 'portfolio.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

Windows 版本:Windows 10 build 1709 (16299.492)

Ubuntu 版本:Ubuntu 16.04.5 LTS


它在Linux上工作吗,例如 curl 127.0.0.1:8000 - Selcuk
4个回答

2
在您的WSL终端上运行以下命令:
python3 manage.py runserver 0.0.0.0:8080

settings.py文件中,将您的主机名(计算机名称)添加到允许的主机列表中。

在浏览器中运行:http://yourhostname:8080


0

前段时间我自己做这个的时候,发现没有办法将在WSL中运行的东西绑定到本地主机。

但是当通过我的主机名连接时,我确实取得了成功。

因此,假设主机名为GAMMAFLYER,请执行以下操作:

python3 manage.py runserver 0.0.0.0:8000

这允许外部连接。

然后在您的浏览器中:

http://GAMMAFLYER:8000

奇怪,这个答案提供了不同的建议。出于好奇,当你ping GAMMAFLYER时,你得到了什么? - Selcuk
1
这曾经是一个问题,但如果他们在过去几个月内修复了它,那么我的WSL系统知识似乎已经过时了。 - Shadow
谢谢Shadow。我尝试使用主机名,但仍然没有得到响应。当我不使用WSL,只在Windows上用Python运行Django时,它可以正常工作。我想我必须切换回去了。我刚刚对WSL感到兴奋。 - gammaflyer
是的,我也对此非常兴奋。很遗憾它还没有到达那个阶段 - 但它已经有了这么大的进展让我感到希望。 - Shadow

0

我也遇到了同样的问题,@Shadow 的答案对我很有用,即在 WSL 上运行 python manage.py runserver 0.0.0.0:8000 后,我可以从 Windows 访问 http://HOSTNAME:8000

但是,对于那些在 Windows 系统上安装了 VirtualBox 的人来说,有一种方法可以让它正常工作并通过禁用 VirtualBox 网络适配器来访问 Windows 上的 http://localhost:8000

我发现我的主机名在 Windows 上的 IP 地址是 VirtualBox Host-Only Ethernet Adapter 的 IP:

(Windows 命令提示符):

ping -4 HOSTNAME

Pinging HOSTNAME [192.168.56.1] with 32 bytes of data:
Reply from 192.168.56.1: bytes=32 time<1ms TTL=128
Reply from 192.168.56.1: bytes=32 time<1ms TTL=128

ipconfig -all

Ethernet adapter VirtualBox Host-Only Network:

   Connection-specific DNS Suffix  . :
   Description . . . . . . . . . . . : VirtualBox Host-Only Ethernet Adapter
   Physical Address. . . . . . . . . : ***
   DHCP Enabled. . . . . . . . . . . : No
   Autoconfiguration Enabled . . . . : Yes
   Link-local IPv6 Address . . . . . : fe80::7d75:46fe:41d8:1ee3%5(Preferred)
   IPv4 Address. . . . . . . . . . . : 192.168.56.1(Preferred)
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . :
   DHCPv6 IAID . . . . . . . . . . . : ***
   DHCPv6 Client DUID. . . . . . . . : ***
   DNS Servers . . . . . . . . . . . : fec0:0:0:ffff::1%1
                                       fec0:0:0:ffff::2%1
                                       fec0:0:0:ffff::3%1
   NetBIOS over Tcpip. . . . . . . . : Enabled

当我从控制面板\网络和Internet\网络连接禁用了这个适配器,并在WSL shell上重新运行python manage.py runserver后,它运行良好,我能够从Windows访问http://localhost:8000


0

我目前在 Windows 10 计算机上运行 wsl2。当我尝试设置一个 Django 项目时,遇到了这个问题。通过在 PowerShell 上运行以下命令,我成功地解决了它。

netsh interface portproxy reset

我的代理端口存在一些配置错误,上述命令可以修复这些错误。因此,如果您曾经使用过wsl2,但现在无法正常工作,请运行该命令。然而,如果您刚刚安装了wsl2,则需要添加代理端口才能本地访问该端口

netsh interface portproxy add v4tov4 listenport=4000 listenaddress=0.0.0.0 connectport=4000 connectaddress=192.168.101.100

在这种情况下,我正在公开4000端口。

来源:


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接