我是 WSL2 的新手,但到目前为止它真的很好用。我有一个简单的 HTML 页面,我想用 Nginx 提供服务,但我希望它可以通过主机上的 Web 浏览器访问。默认的 nginx 网页有效(!),所以我开始模仿默认的 nginx html 页面(/var/www/html/index.html)。
我创建了:
/var/www/test.dev/index.html
/etc/nginx/sites-available/test.dev(sites-enabled/中的+符号链接)
Nginx 配置:
server {
listen 9000;
listen [::]:9000;
server_name test.dev;
root /var/www/test.dev;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
Run Code Online (Sandbox Code Playgroud)
所以与默认配置的唯一大不同是端口 9000。
我重新加载/重新启动 nginx 并尝试卷曲我的配置:
$ curl https://localhost
$ curl https://localhost:9000
Run Code Online (Sandbox Code Playgroud)
两个请求都成功了。
但现在我想使用网络浏览器访问我的 Windows 主机上的页面。第一个(默认)有效,我可以看到默认的 Nginx HTML 页面。第二个不起作用:网站无法访问。
所以我的问题:
1. 为什么会这样?我是否必须对 Windows 防火墙设置进行一些更改?
2. 我喜欢有一个像 example.com 这样的虚拟主机名而不是 localhost:9000
我已经编辑了 /etc/hosts ... 它可以与 curl 一起使用,但又不在主机浏览器中
我一直在修改 WSL-2 一段时间,但并不完全了解主机和 WSL-2 dist 之间的流量是如何路由的。
在某些来源中,似乎 WSL-2 使用的所有端口都会自动对主机可用。例如在Microsoft 的本教程中。同样,我设法托管了一个 Jupyter 实例,它可以通过localhost:8888.
但是,在尝试其他服务时,例如 ssh(也在非标准端口上尝试过),该端口不会通过 localhost 自动变为可用,我必须使用分配给我的 WSL 发行版的 IP 地址(来自wsl hostname -I)
为了通过 localhost 提供服务,我发现了这个 portforwarding script,它有效。但我想了解为什么需要它。
为什么某些服务需要端口转发,而不是所有服务?
WSL2 停止工作。当我重新安装 Linux 发行版时,单击启动按钮时会抛出以下错误:
Installing, this may take a few minutes...
WslRegisterDistribution failed with error: 0x80070003
Error: 0x80070003 The system cannot find the path specified.
Press any key to continue...
Run Code Online (Sandbox Code Playgroud)
该wsl --help命令工作正常,但是wsl -l命令和其他 wsl 命令会抛出以下错误
The system cannot find the path specified.
Run Code Online (Sandbox Code Playgroud) 我正在尝试在 Ubuntu WSL2 中运行 VSCode。
\n当我运行时code .,zsh 无法找到 VSCode。\n我已经安装了Remote - WSL插件,并且我能够从 Windows 打开我的 Ubuntu 实例。我也想从 Ubuntu 终端实现它。
ayman@DESKTOP \xee\x82\xb0 ~ \xee\x82\xb0 code .\nzsh: command not found: code\nRun Code Online (Sandbox Code Playgroud)\n我努力了wsl --shutdown然后重新安装 Remote-WSL 插件,但仍然不起作用。
zsh从终端运行 VSCode是否需要配置?如果可以,需要什么配置?
如果可能,如何将文件从一个 WSL 实例直接移动到另一个实例?这在尝试新发行版时很有用,例如将 /home 从 Ubuntu 18.04 复制到 20.04。
我厌倦了通过资源管理器通过访问\\wsl$Windows 主机来执行此操作,它似乎无法可靠地传输所有文件并且总体上感觉不对。
我在 WSL2 Ubuntu 上运行 Jupyter Lab,并在 Win10 PC 上的 Firefox 中访问它。它们在同一台机器上运行,因此不应该涉及“网络”。我将其运行为jupyter lab --no-browser. 服务器在终端中启动得很好:
[I 11:17:40.843 LabApp] [jupyter_nbextensions_configurator] enabled 0.4.1
[I 11:17:40.885 LabApp] JupyterLab extension loaded from /home/muthur/anaconda3/lib/python3.8/site-packages/jupyterlab
[I 11:17:40.886 LabApp] JupyterLab application directory is /home/muthur/anaconda3/share/jupyter/lab
[I 11:17:40.888 LabApp] Serving notebooks from local directory: /home/muthur
[I 11:17:40.888 LabApp] Jupyter Notebook 6.2.0 is running at:
[I 11:17:40.888 LabApp] http://localhost:8888/?token=...
[I 11:17:40.888 LabApp] or http://127.0.0.1:8888/?token=...
[I 11:17:40.888 LabApp] Use Control-C to stop this server and shut down all kernels (twice …Run Code Online (Sandbox Code Playgroud) 我主要在 Windows 上进行开发,但我正在使用 WSL 测试我的应用程序,因为我会将其推送到 Linux 服务器。我当前的问题是将在 WSL 上运行的 django 应用程序连接到在 Windows 上运行的 postgres。许多文章解释了如何连接到在 WSL 上运行的 postgres,但反之则不然。
我正在 wsl2 中的 .net core 5 中开发 api,并按照所有文档安装实体框架核心工具。
当我跑步时
dotnet tool list -g
Run Code Online (Sandbox Code Playgroud)
它打印
Package Id Version Commands
--------------------------------------
dotnet-ef 5.0.7 dotnet-ef
Run Code Online (Sandbox Code Playgroud)
但当我跑步时
dotnet ef
Run Code Online (Sandbox Code Playgroud)
或其任何子命令,我明白了
Could not execute because the specified command or file was not found.
Possible reasons for this include:
* You misspelled a built-in dotnet command.
* You intended to execute a .NET program, but dotnet-ef does not exist.
* You intended to run a global tool, but a dotnet-prefixed executable with this name could not …Run Code Online (Sandbox Code Playgroud) 我尝试在 Windows 10 Pro 21H1 上安装 Docker Desktop,但不断收到以下错误:
Component CommunityInstaller.EnableFeaturesAction failed: Not found
at CommunityInstaller.InstallWorkflow.<DoHandleD4WPackageAsync>d__29.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at CommunityInstaller.InstallWorkflow.<DoProcessAsync>d__23.MoveNext()
Run Code Online (Sandbox Code Playgroud)
我尝试过删除:
C:\Program Files\
C:\Users\username\AppData\Local\Docker
C:\Users\username\AppData\Local\Docker Desktop
Run Code Online (Sandbox Code Playgroud)
...以及其他 Docker 相关文件夹多次。
我的 WSL2 在 Ubuntu 20 系统上运行良好。
sid_c06@LAPTOP-HJCDC6N0:~$ wsl.exe -l -v
NAME STATE VERSION
* Ubuntu-20.04 Running 2
Run Code Online (Sandbox Code Playgroud)
我尝试在安装过程中取消选中 WSL2 选项,但在安装后尝试启动 Docker Desktop 时,在 WSL2 上启动 Linux 容器的步骤失败。
Unable to start
at Docker.Core.Pipe.NamedPipeClient.d__5.MoveNext()
--- End of stack …Run Code Online (Sandbox Code Playgroud) 我正在尝试遵循本教程。
我正在 Windows 10 系统中运行 WSL2 Ubuntu18.04 机器,并且在运行此行时陷入困境:
$ solana-test-validator
这是我得到的输出:
Ledger location: test-ledger
Log: test-ledger/validator.log
Unable to connect to validator: Client error: test-ledger/admin.rpc does not exist
Run Code Online (Sandbox Code Playgroud)
关于可能出什么问题的任何线索吗?
wsl-2 ×10
windows-subsystem-for-linux ×6
.net-core ×1
c# ×1
django ×1
docker ×1
networking ×1
nginx ×1
postgresql ×1
solana ×1
ubuntu ×1
zsh ×1