在本文中,您将学习如何使用Windows Subsystem for Linux 2在Windows中设置和运行本地Linux shell界面,而无需使用虚拟机。这与使用添加到$ PATH的UNIX工具子集的Git Bash或cmder等终端不同。这实际上就像在Windows上运行可以执行本机Linux应用程序的完整Linux内核。那真是太棒了,不是吗?
如果您是一位经验丰富的开发人员,您已经知道Linux是使用开源技术构建和运行基于服务器的解决方案的最佳平台。虽然可以在Windows上运行相同的,但体验并不是那么好。大多数云托管公司为客户提供Linux,以便在稳定的环境中运行其服务器解决方案。为了确保软件在服务器机器上完美运行,就像在本地开发机器上一样,您需要运行相同的平台。否则,您可能会遇到配置问题。
使用开源技术构建项目时,您可能会遇到在Linux上运行良好但在Windows上不完全支持的依赖项。因此,您将需要执行以下任务之一才能为项目做出贡献:
- 双启动Windows和Linux(切换到Linux以贡献代码)
- 使用Vagrant,VirtualBox,VMWare等平台运行Linux虚拟机。
- 在Docker容器中运行项目应用程序
以上所有解决方案从启动开始需要几分钟才能运行完整的Linux界面。使用新的Linux子系统Linux版本2(WSL2),访问完整的Linux shell需要一秒或更短的时间。这意味着您现在可以快速地在Windows内部基于Linux的项目上工作。让我们看一下如何在本地机器中设置一个。
在Windows中安装Ubuntu
首先,您需要运行最新版本的Windows。在我的情况下,它是构建1903.一旦你确认了这一点,你将需要激活该Windows Subsystem for Linux
功能。只需打开或关闭控制面板 - > 程序 - > 打开Windows功能。查找“适用于Linux的Windows子系统”并选中该复选框。给Windows一两分钟来激活该功能。完成后,单击下一步显示的重启机器按钮。
接下来,转到Windows应用商店并安装Ubuntu。第一个Ubuntu选项将安装最新版本。其他Ubuntu选项允许您安装较旧的受支持版本。
安装完成后,您需要从菜单中启动它。由于这是第一次,您需要等待Ubuntu映像下载并安装在您的计算机上。这是一次性步骤。下次启动时,您将立即访问Linux Shell。
图像安装完成后,系统将提示您在此shell中创建新的root用户帐户:
创建凭据后,可以随意键入任何Linux命令以确认您是否真正访问了本机Linux shell:
你会很高兴地注意到git
,python3
,ssh
,vim
,nano
,curl
,wget
和许多其他流行的工具都可以开箱即用。在后面的部分中,我们将使用sudo apt-get
命令安装更多框架。首先,让我们看看我们可以通过几种方式访问这个新的Linux shell终端界面。升级当前安装的软件包可能是个好主意:
$ sudo apt-get update && sudo ap-get upgrade
访问Linux Shell界面
有几种有趣的方式可以访问Linux shell界面。
-
转到Windows菜单开始 >键入“Ubuntu”。您可以将其固定为“开始”以便更快地访问
-
打开命令提示符或Windows PowerShell并执行命令
bash
-
在Windows资源管理器中,SHIFT+右键单击文件夹以打开特殊的上下文菜单。单击此处打开Linux shell。
-
在Windows资源管理器中,导航到所需的任何文件夹,然后在地址栏中键入
wsl
,然后按enter。 -
在Visual Studio代码中,将默认终端更改为
wsl
。
如果您遇到新方法,请告诉我。让我们在下一节中设置Node.js.
安装Node.js.
安装和配置Node.js的最佳方法是通过nvm。在Linux shell中,执行以下命令:
$ sudo apt-get install build-essential
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
$ nvm install --lts
以上命令应安装最新的Node.js LTS版本。如果遇到问题执行nvm
命令,请在.bashrc
文件中添加以下行:
source ~/.nvm/nvm.sh
source ~/.bashrc
在尝试执行nvm命令之前,您需要重新启动Linux shell或执行命令。Node.js安装完成后,尝试全局安装npm软件包以确认它是否正常工作。
您还可以导航到Windows驱动器上的现有Node.js项目,并尝试运行它以确认它正在运行。Windows子系统Linux的一个非常酷的功能是您localhost
在运行Web应用程序时仍然使用。Node.js在Windows上运行完全正常。因此,对于Linux用户来说,Windows子系统并没有那么大的好处。它真正闪耀的地方是开源的后端框架,如Django,Ruby on Rails和Lamp Stack。在Windows中设置它们有时可能是一个挑战。对于某些项目,由于某些开源库缺乏Windows支持,因此无法实现。使用WSL2,这不再是一个问题。在下一节中,我们将在Windows上安装LAMP堆栈,我发现它比WAMP堆栈更容易安装和配置。
在Windows上安装LAMP
在Linux shell中,键入以下要安装的命令Apache2
,MySQL
和PHP
。这是一个相当大的下载,所以给它一点时间来完成:
$ sudo apt-get install lamp-server^
接下来,让我们开始并配置我们的MySQL数据库:
# Start the MySQL service
$ sudo service mysql start
# Define password for root@localhost
$ sudo mysql
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
exit
您也可以使用CTRL+ D退出MySQL shell。接下来,让我们配置并启动Apache Web服务器。使用vim
,nano
或者你喜欢的文本编辑器,下面的两行添加到/etc/apache2/apache2.conf
:
Servername localhost
AcceptFilter http none
使用该命令启动Apache Web服务器sudo service apache2 start
。导航以http://localhost
确认Apache已成功启动:
接下来,让我们安装PhpMyAdmin
:
$ sudo apt-get install phpmyadmin
将以下行添加到/etc/apache2/apache2.conf
:
Include /etc/phpmyadmin/apache.conf
重新加载Apache Web服务器以使新配置生效:
$ sudo service apache2 reload
要确认phpmyadmin
已成功配置,请导航到URL http://localhost/phpmyadmin
。输入您之前设置的MySQL用户凭据。(请注意用户名是root
)。您应该有类似的观点:
这就是在Windows上设置LAMP的简单方法。这应该足以证明您可以在Windows上轻松设置Linux开发环境。在下一节中,我们将简要介绍一下Microsoft正在开发的新Windows终端。
Windows终端
Windows Terminal是Microsoft的一个开源项目,旨在提供社区要求的功能,例如:
- 丰富的文字
- 全球化
- 标签支持
- 主题和造型
- 和许多其他人......
如果不破坏与旧控制台应用程序的兼容性,则无法在现有控制台界面上实现这些功能。因此,创建了Windows Terminal项目,允许开发人员彻底更改体系结构,而不必担心向后兼容性。该项目目前仍处于开发阶段,因此预计未来会发布更多功能。我们来看看如何安装和自定义新的Windows终端。
安装和升级
在安装Windows Terminal之前,请确保在计算机上安装了最新的Windows 10版本。否则,安装将因旧版本而失败。目前有两种方法可以安装Windows终端。第一种方法是通过Microsoft Store:
第二种方法是使用Chocolatey工具,就像npm
Windows应用程序一样。一旦在计算机上安装了Chocolatey,就可以通过PowerShell在您的计算机上安装Windows终端,如下所示:
choco install microsoft-windows-terminal
您应该期望类似的输出。就我而言,我正在升级:
安装完成后,您可以从“开始”菜单启动它。您将找到的默认终端是PowerShell。只要单击+号,就会使用默认终端创建一个新选项卡。使用下拉菜单,您可以选择其他类型的终端。
如果单击“ 设置”,将打开JSON的默认编辑器。对你而言,可能是NotePad,NotePad ++,VS Code或任何其他编辑器。我更喜欢VS Code或类似的东西,因为它在键入时自动关闭JSON标签。如果仔细观察,您会注意到以下部分:
- Globals - 全局设置:例如默认配置文件,选项卡设置,终端大小等。
- 键绑定 - 快捷键
- 配置文件 - 终端启动:例如PowerShell,命令提示符
- 方案 - 配色方案
如您所见,以JSON格式理解和自定义设置非常容易。我想展示的一个简单提示是像我这样安装了旧版Windows终端的用户。你们中的一些人可能已经注意到上面的截图中缺少一些配置文件。尽管更新了应用程序,但我的个人资料设置保持不变。要快速添加缺少的设置而不手动这样做,我所要做的就是:
- 完全关闭Windows Terminal App
- 删除
profile.json
(位于%USERPROFILE%\AppData\Local\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\RoamingState
) - 重新启动终端应用程序
此外,还添加了新的快捷键,其中包括以下内容:
{
"command" : "closePane",
"keys" :
[
"ctrl+shift+w"
]
},
{
"command" : "copy",
"keys" :
[
"ctrl+shift+c"
]
},
{
"command" : "duplicateTab",
"keys" :
[
"ctrl+shift+d"
]
},
{
"command" : "paste",
"keys" :
[
"ctrl+shift+v"
]
},
现在让我们在下一节中了解如何设置终端的样式。
设置控制台的样式
在每个配置文件下的设置中处理终端样式。您可以通过更改以下任何属性来自定义每个配置文件:
"acrylicOpacity" : 0.2,
"useAcrylic" : true
"colorScheme" : "One Half Dark",
"cursorColor" : "#FFFFFF",
"cursorShape" : "bar",
"fontFace" : "Consolas",
"fontSize" : 10,
"padding" : "0, 0, 0, 0",
"background":"#002B36",
"backgroundImage": ""
"backgroundImageOpacity": 1,
"backgroundImageStretchMode": "none"
我认为上述设置非常自我解释,除了acrylic
。这是一种背景效果,使终端的背景略微透明和模糊。acrylicOpacity
控制透明度。要拥有完全不透明的背景,请设置useAcrylic
为false
。您可以使用GIF backgroundImage
。动画将自动播放。很酷,对吗?
将colorScheme
来自schemes
部分。默认出现的是:
- Campbell
- One Half Dark
- One Half Light
- Solarized Dark
- Solarized Light
摘要
这是对Windows新开发工具和平台的快速介绍。他们仍然是从烤箱里新鲜出炉的,所以会一些错误 - 这将在不久的将来得到整理。如果您计划从基于VM的开发切换到Windows子系统Linux 2上的开发,请告诉我。