

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 执行基本 IIS 迁移
<a name="dotnet-migrating-applications-basic-migration"></a>

本节将指导您如何使用 **eb migrate** 命令将 IIS 应用程序迁移到 Elastic Beanstalk。

## 浏览 IIS 环境
<a name="dotnet-migrating-applications-basic-migration-exploring"></a>

在进行任何更改之前，您需要了解服务器上存在哪些资源。先通过运行 **eb migrate explore** 来浏览您的 IIS 站点，如以下示例所示：

```
PS C:\migrations_workspace> eb migrate explore
```

此命令会显示您的 IIS 站点。请参阅以下列表：

```
Default Web Site
Intranet
API.Internal
Reports
```

要详细查看每个站点的配置（包括绑定、应用程序和虚拟目录），请添加 `--verbose` 选项，如以下示例所示：

```
PS C:\migrations_workspace> eb migrate explore --verbose
```

以下列表显示了该命令提供的与环境有关的全面信息：

```
1: Default Web Site:
  - Bindings:
    - *:80:www.example.com
    - *:443:www.example.com
  - Application '/':
    - Application Pool: DefaultAppPool
    - Enabled Protocols: http
    - Virtual Directories:
      - /:
        - Physical Path: C:\inetpub\wwwroot
        - Logon Method: ClearText
  - Application '/api':
    - Application Pool: ApiPool
    - Enabled Protocols: http
    - Virtual Directories:
      - /:
        - Physical Path: C:\websites\api
        - Logon Method: ClearText
2: Intranet:
...
3. API.Internal:
...
4. Reports:
...
```

### 了解发现输出
<a name="dotnet-migrating-applications-basic-migration-exploring-output"></a>

详细输出为迁移规划提供以下关键信息：

站点  
发现输出列出了服务器上的所有 IIS 站点。每个网站都由其名称（例如“Default Web Site”、“Intranet”、“API.Internal”）进行标识，并按顺序编号。当服务器上存在多个站点时，`eb migrate` 命令可以根据您的迁移策略，单独或一起打包和部署每个站点。

绑定  
协议绑定显示您的网站使用哪些协议（HTTP/HTTPS）以及它们在哪些端口上运行。绑定信息包括主机标头要求，其用于定义基于域的路由配置。

应用程序  
应用程序路径显示 IIS 配置中的根和嵌套应用程序结构。应用程序池分配表明应用程序如何相互隔离，以确保安全性并便于资源管理。

虚拟目录  
物理路径映射表明您的内容在文件系统上的位置。身份验证设置显示迁移后需要维护的特殊访问要求。

## 准备迁移
<a name="dotnet-migrating-applications-basic-migration-preparing"></a>

了解环境后，请确保您的服务器满足先决条件。首先，使用以下 PowerShell 命令验证您的 IIS 版本：

```
PS C:\migrations_workspace> Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\InetStp\" -Name MajorVersion
```

需要 IIS 7.0 或更高版本。迁移工具使用 Web 部署 3.6 来打包应用程序。使用以下命令验证是否已安装：



```
PS C:\migrations_workspace> Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\IIS Extensions\MSDeploy\3" -Name InstallPath
```

如果您的服务器上未安装 Web 部署，可以从 [Microsoft Web 平台安装程序](https://www.iis.net/downloads/microsoft/web-deploy)下载页面进行下载。

## 首次迁移
<a name="dotnet-migrating-applications-basic-migration-first"></a>

我们从 Default Web Site 的基本迁移开始。以下示例显示了最简单的命令：**eb migrate**。

```
PS C:\migrations_workspace> eb migrate
```

此命令会启动一系列自动步骤，如以下示例输出所示：

```
Identifying VPC configuration of this EC2 instance (i-0123456789abcdef0)
  id: vpc-1234567890abcdef0
  publicip: true
  elbscheme: public
  ec2subnets: subnet-123,subnet-456,subnet-789
  securitygroups: sg-123,sg-456
  elbsubnets: subnet-123,subnet-456,subnet-789

Using .\migrations\latest to contain artifacts for this migration run.
Generating source bundle for sites, applications, and virtual directories...
  Default Web Site/ -> .\migrations\latest\upload_target\DefaultWebSite.zip
```

迁移工具会创建一个包含部署构件的结构化目录。下方列表显示了目录结构：

```
C:\migration_workspace\
└── .\migrations\latest\
    └── upload_target\
        ├── DefaultWebSite.zip
        ├── aws-windows-deployment-manifest.json
        └── ebmigrateScripts\
            ├── site_installer.ps1
            ├── permission_handler.ps1
            └── >other helper scripts<
```

## 控制迁移
<a name="dotnet-migrating-applications-basic-migration-controlling"></a>

为了更好地控制迁移过程，您可以使用以下命令准确指定要迁移的站点：

```
PS C:\migrations_workspace> eb migrate --sites "Default Web Site,Intranet"
```

您还可以自定义环境名称和应用程序名称，如以下示例命令所示：

```
PS C:\migrations_workspace> eb migrate `
    --sites "Default Web Site" `
    --application-name "CorporateApp" `
    --environment-name "Production"
```

有关选项的完整列表，请参阅 [**eb migrate**](eb3-migrate.md)。

## 监控进度
<a name="dotnet-migrating-applications-basic-migration-monitoring"></a>

在迁移期间，**eb migrate** 可提供实时状态更新。请参阅以下输出示例：

```
...
Creating application version
Creating environment... This may take a few minutes

2024-03-18 18:12:15    INFO    Environment details for: Production
  Application name: CorporateApp
  Region: us-west-2
  Deployed Version: app-230320_153045
  Environment ID: e-abcdef1234
  Platform: 64bit Windows Server 2019 v2.7.0 running IIS 10.0
  Tier: WebServer-Standard-1.0
  CNAME: production.us-west-2.elasticbeanstalk.com
  Updated: 2024-03-20 15:30:45
2025-03-18 18:12:17    INFO    createEnvironment is starting.
2025-03-18 18:12:19    INFO    Using elasticbeanstalk-us-east-1-180301529717 as Amazon S3 storage bucket for environment data.
2025-03-18 18:12:40    INFO    Created security group named: sg-0fdd4d696a26b086a
2025-03-18 18:12:48    INFO    Environment health has transitioned to Pending. Initialization in progress (running for 7 seconds). There are no instances.
...
2025-03-18 18:23:59    INFO    Application available at EBMigratedEnv-arrreal3.us-east-1.elasticbeanstalk.com.
2025-03-18 18:24:00    INFO    Successfully launched environment: EBMigratedEnv-arrreal3
```

## 验证迁移
<a name="dotnet-migrating-applications-basic-migration-verifying"></a>

环境准备就绪后，Elastic Beanstalk 将提供多种方法来验证部署。

访问应用程序  
在 Web 浏览器中打开应用程序 URL（CNAME），验证其是否正常运行。

检查环境运行状况  
使用 **eb health** 命令查看环境的运行状况。  

```
PS C:\migrations_workspace> eb health
```
以下屏幕图像显示了实例运行状况、应用程序响应指标和系统资源利用率。  

![\[eb 运行状况命令的输出显示了实例运行状况、应用程序响应指标和系统资源利用率。\]](http://docs.amazonaws.cn/elasticbeanstalk/latest/dg/images/eb-health-after-migration.png)


使用 **eb logs** 命令访问日志，从而对所有问题进行故障排除：  

```
PS C:\migrations_workspace> eb logs --zip
```
**eb logs** 命令可将日志下载到 `.elasticbeanstalk/logs` 目录中。有关更多信息，请参阅 [将 Elastic Bean CloudWatch stalk 与亚马逊日志一起使用](AWSHowTo.cloudwatchlogs.md)。

连接到实例  
如果您在迁移期间指定了密钥对，则可以使用 RDP 连接到实例进行直接故障排除。

访问 Elastic Beanstalk 控制台  
您可以通过该环境的[环境管理控制台](environments-console.md)来查看其运行状况、日志和配置属性。

## 管理迁移构件
<a name="dotnet-migrating-applications-basic-migration-cleanup"></a>

**eb migrate** 命令可在迁移过程中创建本地构件。这些构件包含敏感信息，并且随着时间的推移，可能会占用大量磁盘空间。使用 **cleanup** 子命令管理这些构件，如以下示例所示：

```
PS C:\migrations_workspace> eb migrate cleanup
Are you sure you would like to cleanup older artifacts within ./migrations/? (Y/N):
```

要在不确认的情况下强制清理，请使用 **--force** 选项：

```
PS C:\migrations_workspace> eb migrate cleanup --force
```

清理过程会将最近成功的迁移保留在 `./migrations/latest` 目录中，并删除较旧的迁移目录