我希望安装‘n’个 debian,不是每个版本安装一次,而是安装同一个 debian 12 的‘n’个。
每个实例应该有一组不同的 php/nginx|apache/mysql|mariadb
首先,是否可以在同一个 Windows 11 Pro 主机上的同一个 wsl2 上安装多个 Debian 12?
如果是,那么多个 apache|nginx 实例是否可以在同一个端口 80/443 上运行,并将它们设置为仅监听内部 wsl 实例 ip?
答案1
以下是如何拥有同一发行版的多个副本:
从 Windows 商店安装基础发行版或者使用:
wsl --install -d <distribution name>
登录环境并根据需要进行修改,然后退出
使用以下命令导出环境:
wsl --export <distribution name> <export file name>
通过导入文件创建基础环境的新实例
.tar
:wsl --import <new distribution name> <install location> <export file name>
您现在可以使用以下方式打开新环境:
wsl -d <new distribution name>
在 Windows 11 中,您可以通过以下方式在资源管理器中浏览发行版的文件系统桌面 > Linux
新发行版将具有
root
默认用户。要以其他用户身份登录,请使用标志或在环境内的目录中-u <username>
创建/修改文件,其中包含以下部分:wsl.conf
/etc
[user] default=<username>
有关更多截图信息,请参阅文章
设置多个 WSL 分发实例。
答案2
如果您从 Microsoft Store 安装了 Debian(或其他发行版),那么根文件系统 tarball 通常仍会保留在您的系统上,可以直接--import
将其安装到新发行版中。当您想要一个不包含您在现有发行版中所做的更改的“原始”版本时,这会很有用。
要做到这一点:
启动 PowerShellStart a PowerShell行政shell。仅当运行以下命令时才需要管理员访问权限,因为该
C:\Program Files\WindowsApps
目录受到保护,不能进行普通访问:Get-ChildItem -Recurse 'C:\Program Files\WindowsApps\' | Where-Object {$_.Name -eq 'install.tar.gz' }
这将返回您从 Microsoft Store 安装的(大多数)发行版列表以及位置。将目录名称复制到剪贴板。例如,在我的系统上,Debian 位于:
C:\Program Files\WindowsApps\TheDebianProject.DebianGNULinux_1.12.2.0_x64__76v4gfsz19hv4
Ubuntu 22.04 位于:
C:\Program Files\WindowsApps\CanonicalGroupLimited.Ubuntu_2204.1.8.0_x64__79rhkp1fndgsc
如果您有不同的版本,位置可能会略有不同。
退出管理 PowerShell 并启动常规 PowerShell。
创建要在其中存放新发行版的虚拟 SDD 的目录。使用变量名,因为我们将在后续步骤中再次使用它:
$newDistroDir = "D:\WSL\DebianTesting\" mkdir $newDistroDir
将上面复制的目录分配给一个变量(可选,但更清楚):
$rootFSDirectory = "C:\Program Files\WindowsApps\TheDebianProject.DebianGNULinux_1.12.2.0_x64__76v4gfsz19hv4"
导入新的分布:
wsl --import DebianTesting $newDistroDir ($rootFSDirectory+"\install.tar.gz")
替换
DebianTesting
为您所需的名称。启动新的分发:
wsl ~ -d DebianTesting
创建您的常规用户。这通常由 WSL Distro 安装程序完成,但如果从根 FS tarball 导入,则需要手动完成。您的用户的确切组会因发行版而异,因此请检查您的“原始”组。 这个答案包括 Ubuntu 20.04 的示例。