第 2.5 部分 - 将文件从开发环境复制和提取到 Linux

适用于: .NET Core 2.1、.NET Core 3.1、.NET 5

本文介绍如何将文件从基于 Windows 的计算机复制到 Linux 虚拟机并提取文件。

先决条件

此部分没有任何先决条件。

本部分的目标

你将了解如何将文件从基于 Windows 的计算机复制到 Linux 虚拟机(VM)。 将应用程序部署到 Linux 时,这非常有用。

尽管此部分没有先决条件,但理想的设置将遵循上一部分的指导。 应具有以下各项:

  • Nginx 自动运行,并配置为侦听端口 80 上发送的请求
  • Nginx 配置为反向代理,并将传入请求路由到 ASP.NET 核心应用程序,这是侦听端口 5000
  • 配置为在服务器重启或进程停止或崩溃后自动启动的 ASP.NET Core 应用程序。
  • 配置为允许 SSH 和 HTTP 流量的 Linux 本地防火墙

将文件从 Windows 复制到 Linux,反之亦然

有多种选项可用于在 Windows 和 Linux 之间复制文件。 可以在几个好文章中找到不同的方法,例如 文章。 提供以下选择:

  • 共享网络文件夹。 请参阅 SMB 协议Samba
  • 使用 FTP 传输文件。 Linux 中最著名的 FTP 服务器之一是 PureFTPd
  • 通过 SSH 安全地复制文件。 可以使用 scp 命令通过 SSH 复制。 但是,更好的工具是 pscp(包含在 PuTTY 中)。
  • 使用同步软件共享数据。 同步程序可帮助你在 Windows 和 Linux 中创建同步点,然后使用加密密钥进行同步。
  • 如果 Linux 在 VM 中作为 VM 运行,请使用共享文件夹。 多个工具(如 Oracle 的 VirtualBox)可帮助你创建虚拟共享目录。

在本部分中,你将使用 pscp 将文件从 Windows 传输到 Linux。

基本 pscp 参数

Pscp 可以轻松地执行基本任务,例如将文件复制到 Linux。 此工具包含在 PuTTY,因此它应与 PuTTY 一起安装在基于 Windows 的计算机上。 如果不是,请立即安装。

下面是一个示例命令:

pscp -i <private key path> <local file to upload> user@host:<Linux path to save>

例如,若要将 c:\web\publish.zip 文件复制到 Linux 中的用户主目录,请使用以下命令:

pscp -i d:\secure\myprivatekey.ppk c:\web\publish.zip <UserName>@buggyamb:<Linux path to save>

当尝试使用 PuTTY 连接到 VM 时,私钥与从 .pem 文件转换的 .ppk 密钥相同。 如果成功执行此操作,则应已拥有此文件。 如果没有 .ppk 文件,请按照“使用 PuTTY 进行连接”部分中的说明操作,并将 .pem 文件转换为 .ppk

将文件复制到 Linux 并将其解压缩到另一个文件夹

下载示例项目

在本教程中,你将复制名为 BuggyAmb 的测试应用程序。 此应用程序可用于 BuggyAmb 调试示例应用程序。 建议使用此示例应用程序,因为下一部分使用此应用程序来模拟在故障排除实验室中出现高、低 CPU 性能问题和崩溃问题。

BuggyAmb 只是基于 Core 3.1 的 Razor Pages 应用程序的 buggy ASP.NET。 此应用程序被有意创建为 buggy 应用程序,用作学习资源,以排查 Linux 上 ASP.NET Core 应用程序的有问题方案。

可以在适用于 Linux 的 ASP.NET 核心二进制文件中找到源代码文件。 这是.tar.gz格式,因为这种格式在 Linux 世界中很常见。 还可以以 windows .zip 格式下载 buggyamb_v1.1

将buggyamb_v1.1.tar.gz文件复制到 Linux VM

在基于 Windows 的计算机上打开命令提示符窗口,并转到 PuTTY 安装到的文件夹。 若要复制该文件,请运行以下命令:

pscp -i d:\secure\myprivatekey.ppk D:\Learn\Linux\buggyamb_v1.1.tar.gz <UserName>@buggyamb:/home/<UserName>

此外, pscp 使用自己的私钥和路径进行修改后,请运行该命令。 以下屏幕截图显示了 Windows 和 Linux VM 之间的成功文件传输。

pscp 命令的屏幕截图。

注意

使用 pscp 命令首次连接到 VM 时,可能会看到有关主机密钥不匹配的警告消息。

连接到 Linux VM,并检查文件是否存在。 可以通过使用 ls 命令完成此操作。

ls 命令的屏幕截图。

还有其他方法可用于在 Linux 和 Windows 之间复制文件。 但此方法足以用于本教程。

使用buggyamb_v1.1.tar.gz文件创建另一个在 Nginx 后面运行的 ASP.NET Core 应用程序。 这一次,此应用程序将配置为使用主机名浏览它。 在构成本教程的故障排除实验室中将使用相同的应用程序。

注意

如果在将buggyamb_v1.1.tar.gz文件复制到 Linux 计算机时遇到困难,只需使用以下简单wget命令从 Linux VM 下载.tar.gz文件:

wget https://buggyambfiles.blob.core.windows.net/bin/buggyamb_v1.1.tar.gz

提取文件并复制到 /var/ 文件夹

Buggyamb_v1.1.tar.gz包含运行 buggy 应用程序所需的所有内容。 就像对第一个 ASP.NET Core 应用程序所做的那样,按照相同的步骤将此应用程序配置为始终在 Nginx 后面运行。

提取.tar.gz文件,并将其复制到 /var 文件夹。 可通过两种简单的方法来实现此目的:

  • 选项 1:通过运行tar -xf filename.tar.gztar.gz文件提取到当前目录。 然后,将提取的文件夹复制到 /var 文件夹。
  • 选项 2:将 tar.gz 文件直接提取到 /var 目录。

选项 1:运行 tar -xf buggyamb_v1.1.tar.gz 以创建 buggyamb_v1.1 文件夹。 然后,使用命令将其复制到 /var 文件夹。sudo cp -a buggyamb_v1.1 /var/

sudo cp 命令的屏幕截图。

选项 2:使用sudo tar -xf buggyamb_v1.1.tar.gz -C /var/命令将应用程序直接提取到 /var/ 文件夹。

sudo tar 命令的屏幕截图。

选择任一选项,提取 buggyamb_v1.1 应用程序文件。 应提取或移动到 /var/buggyamb_v1.1 文件夹以完成设置。 此文件夹将用作新 ASP.NET Core 应用程序的工作目录。

后续步骤

第 2.6 部分 - 同时运行两个 ASP.NET Core 应用程序

配置并运行 Nginx 后面的 buggy ASP.NET Core 应用程序。 在这些步骤结束时,你将有两个 ASP.NET 核心应用程序在 Nginx 后面运行。