

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Menjalankan beberapa aplikasi dan aplikasi ASP.NET Core dengan manifes deployment
<a name="dotnet-manifest"></a>

Anda dapat menggunakan manifes deployment untuk memberitahu Elastic Beanstalk cara men-deploy aplikasi Anda. Dengan menggunakan metode ini, Anda tidak perlu menggunakan `MSDeploy` untuk menghasilkan paket sumber untuk satu aplikasi ASP.NET yang berjalan di jalur akar situs web Anda. Sebaliknya, Anda dapat menggunakan file manifes untuk menjalankan beberapa aplikasi di jalur yang berbeda. Atau, Anda dapat memberitahu Elastic Beanstalk untuk men-deploy dan menjalankan aplikasi dengan ASP.NET Core. Anda juga dapat menggunakan manifes deployment untuk mengonfigurasi kolam aplikasi tempat aplikasi Anda dijalankan.

Manifes deployment menambahkan dukungan untuk [Aplikasi .NET Core](#dotnet-manifest-dotnetcore) ke Elastic Beanstalk. Anda dapat men-deploy aplikasi .NET Framework tanpa manifes deployment. Namun, aplikasi .NET Core memerlukan manifes deployment untuk berjalan di Elastic Beanstalk. Ketika Anda menggunakan manifes deployment, Anda membuat arsip situs untuk setiap aplikasi, dan kemudian memaketkan arsip situs di arsip ZIP kedua yang berisi manifes deployment.

Manifes deployment juga menambahkan kemampuan untuk [menjalankan beberapa aplikasi di jalur yang berbeda](#dotnet-manifest-multiapp). Manifes deployment mendefinisikan array target deployment, masing-masing dengan arsip situs dan jalur tempat IIS harus menjalankannya. Sebagai contoh, Anda dapat menjalankan API web di jalur `/api` untuk melayani permintaan asinkron, dan aplikasi web di jalur akar yang mengonsumsi API.

Anda dapat menggunakan manifes penerapan untuk [mengonfigurasi situs web IIS dengan binding kustom](#dotnet-manifest-websites) dan jalur fisik. Ini memungkinkan Anda untuk mengatur situs web yang mendengarkan port atau nama host tertentu sebelum menerapkan aplikasi Anda.

Anda juga dapat menggunakan manifes deployment untuk [menjalankan beberapa aplikasi menggunakan kolam aplikasi di IIS atau Kestrel](#dotnet-manifest-apppool). Anda dapat mengonfigurasi kolam aplikasi untuk memulai ulang aplikasi Anda secara berkala, menjalankan aplikasi 32-bit, atau menggunakan versi tertentu dari waktu aktif .NET Framework.

Untuk kustomisasi penuh, Anda dapat [menulis skrip penyebaran Anda sendiri](#dotnet-manifest-custom) di Windows PowerShell dan memberi tahu Elastic Beanstalk skrip mana yang harus dijalankan untuk menginstal, menghapus, dan memulai ulang aplikasi Anda.

Manifes deployment dan fitur terkait memerlukan platform Windows Server [versi 1.2.0 atau lebih baru](dotnet-v2migration.md).

Untuk informasi mendetail tentang semua opsi konfigurasi, properti, dan fitur lanjutan yang tersedia seperti melewatkan penyetelan ulang IIS, lihat referensi skema manifes [penerapan](dotnet-manifest-schema.md).

**Topics**
+ [Aplikasi .NET core](#dotnet-manifest-dotnetcore)
+ [Jalankan beberapa aplikasi](#dotnet-manifest-multiapp)
+ [Konfigurasikan situs web IIS](#dotnet-manifest-websites)
+ [Menggunakan Application Request Routing (ARR)](#dotnet-manifest-arr)
+ [Mengonfigurasi kolam aplikasi](#dotnet-manifest-apppool)
+ [Menentukan deployment khusus](#dotnet-manifest-custom)
+ [Referensi skema manifes penerapan](dotnet-manifest-schema.md)

## Aplikasi .NET core
<a name="dotnet-manifest-dotnetcore"></a>

Anda dapat menggunakan manifes deployment untuk menjalankan aplikasi .NET Core di Elastic Beanstalk. .NET Core adalah versi lintas platform dari .NET yang datang dengan alat baris perintah (`dotnet`). Anda dapat menggunakannya untuk menghasilkan aplikasi, menjalankannya secara lokal, dan menyiapkannya untuk penerbitan.

Untuk menjalankan aplikasi .NET Core di Elastic Beanstalk, Anda dapat menjalankan `dotnet publish` dan paket output di arsip ZIP, tidak termasuk direktori yang berisi. Menempatkan arsip situs di paket sumber dengan manifes deployment dengan target deployment tipe `aspNetCoreWeb`.

Manifes deployment berikut menjalankan aplikasi .NET Core dari arsip situs bernama `dotnet-core-app.zip` di jalur akar.

**Example aws-windows-deployment-manifest.json - .NET inti**  

```
{
  "manifestVersion": 1,
  "deployments": {
    "aspNetCoreWeb": [
      {
        "name": "my-dotnet-core-app",
        "parameters": {
          "archive": "dotnet-core-app.zip",
          "iisPath": "/"
        }
      }
    ]
  }
}
```

Paketkan manifes dan arsip situs di arsip ZIP untuk membuat paket sumber.

**Example dotnet-core-bundle.zip**  

```
.
|-- aws-windows-deployment-manifest.json
`-- dotnet-core-app.zip
```

Arsip situs berisi kode aplikasi yang dikompilasi, dependensi, dan file `web.config`.

**Example dotnet-core-app.zip**  

```
.
|-- Microsoft.AspNetCore.Hosting.Abstractions.dll
|-- Microsoft.AspNetCore.Hosting.Server.Abstractions.dll
|-- Microsoft.AspNetCore.Hosting.dll
|-- Microsoft.AspNetCore.Http.Abstractions.dll
|-- Microsoft.AspNetCore.Http.Extensions.dll
|-- Microsoft.AspNetCore.Http.Features.dll
|-- Microsoft.AspNetCore.Http.dll
|-- Microsoft.AspNetCore.HttpOverrides.dll
|-- Microsoft.AspNetCore.Server.IISIntegration.dll
|-- Microsoft.AspNetCore.Server.Kestrel.dll
|-- Microsoft.AspNetCore.WebUtilities.dll
|-- Microsoft.Extensions.Configuration.Abstractions.dll
|-- Microsoft.Extensions.Configuration.EnvironmentVariables.dll
|-- Microsoft.Extensions.Configuration.dll
|-- Microsoft.Extensions.DependencyInjection.Abstractions.dll
|-- Microsoft.Extensions.DependencyInjection.dll
|-- Microsoft.Extensions.FileProviders.Abstractions.dll
|-- Microsoft.Extensions.FileProviders.Physical.dll
|-- Microsoft.Extensions.FileSystemGlobbing.dll
|-- Microsoft.Extensions.Logging.Abstractions.dll
|-- Microsoft.Extensions.Logging.dll
|-- Microsoft.Extensions.ObjectPool.dll
|-- Microsoft.Extensions.Options.dll
|-- Microsoft.Extensions.PlatformAbstractions.dll
|-- Microsoft.Extensions.Primitives.dll
|-- Microsoft.Net.Http.Headers.dll
|-- System.Diagnostics.Contracts.dll
|-- System.Net.WebSockets.dll
|-- System.Text.Encodings.Web.dll
|-- dotnet-core-app.deps.json
|-- dotnet-core-app.dll
|-- dotnet-core-app.pdb
|-- dotnet-core-app.runtimeconfig.json
`-- web.config
```

## Jalankan beberapa aplikasi
<a name="dotnet-manifest-multiapp"></a>

Anda dapat menjalankan beberapa aplikasi menggunakan manifes deployment dengan mendefinisikan beberapa target deployment.

Manifes deployment berikut mengonfigurasi dua aplikasi .NET Core. `WebApiSampleApp`Aplikasi ini mengimplementasikan API web sederhana dan menyajikan permintaan asinkron di jalur. `/api` Aplikasi `DotNetSampleApp` adalah aplikasi web yang melayani permintaan di jalur akar.

**Example aws-windows-deployment-manifest.json - beberapa aplikasi**  

```
{
  "manifestVersion": 1,
  "deployments": {
    "aspNetCoreWeb": [
      {
        "name": "WebAPISample",
        "parameters": {
          "appBundle": "WebApiSampleApp.zip",
          "iisPath": "/api"
        }
      },
      {
        "name": "DotNetSample",
        "parameters": {
          "appBundle": "DotNetSampleApp.zip",
          "iisPath": "/"
        }
      }
    ]
  }
}
```

Aplikasi sampel dengan beberapa aplikasi tersedia di sini:
+ **Bundel sumber yang dapat digunakan** [- -v2.zip dotnet-multiapp-sample-bundle](samples/dotnet-multiapp-sample-bundle-v2.zip)
+ **Kode sumber** - [dotnet-multiapp-sample-source-v2.zip](samples/dotnet-multiapp-sample-source-v2.zip)

## Konfigurasikan situs web IIS
<a name="dotnet-manifest-websites"></a>

Anda dapat mengonfigurasi situs web IIS dengan binding kustom dan jalur fisik menggunakan manifes penerapan. Ini berguna saat Anda perlu menyiapkan situs web yang mendengarkan port tertentu, menggunakan nama host khusus, atau menyajikan konten dari direktori tertentu.

Manifes penerapan berikut mengonfigurasi situs web IIS kustom yang mendengarkan HTTP dengan nomor port tertentu dan jalur fisik khusus:

**Example aws-windows-deployment-manifest.json - Konfigurasi situs web IIS**  

```
{
  "manifestVersion": 1,
  "iisConfig": {
    "websites": [
      {
        "name": "MyCustomSite",
        "physicalPath": "C:\inetpub\wwwroot\mysite",
        "bindings": [
          {
            "protocol": "http",
            "port": 8080,
            "hostName": "mysite.local"
          }
        ]
      }
    ]
  },
  "deployments": {
    "aspNetCoreWeb": [
      {
        "name": "my-dotnet-core-app",
        "parameters": {
          "appBundle": "dotnet-core-app.zip",
          "iisWebSite": "MyCustomSite",
          "iisPath": "/"
        }
      }
    ]
  }
}
```

Dalam contoh ini:
+ Sebuah situs web bernama MyCustomSite "" dibuat dengan jalur fisik khusus
+ Situs web ini memiliki pengikatan HTTP pada port 8080 dengan nama host tertentu
+ Aplikasi ASP.NET Core diterapkan ke situs web khusus ini menggunakan parameter `iisWebSite`

## Menggunakan Application Request Routing (ARR)
<a name="dotnet-manifest-arr"></a>

Modul Application Request Routing (ARR) dan URL Rewrite sudah diinstal sebelumnya dan tersedia di Elastic Beanstalk Windows. AMIs Modul-modul ini memungkinkan skenario routing lanjutan dan manipulasi URL melalui konfigurasi IIS menggunakan ebextensions atau konfigurasi aplikasi.

Contoh berikut menunjukkan manifes penerapan sederhana yang mengonfigurasi situs web dengan port khusus, dikombinasikan dengan konfigurasi ebextensions yang mengatur perutean ARR dasar:

**Example aws-windows-deployment-manifest.json - Pengaturan ARR sederhana**  

```
{
  "manifestVersion": 1,
  "iisConfig": {
    "websites": [
      {
        "name": "ARRSite",
        "physicalPath": "C:\\inetpub\\wwwroot\\arrsite",
        "bindings": [
          {
            "protocol": "http",
            "port": 8080,
            "hostName": "localhost"
          }
        ]
      }
    ]
  },
  "deployments": {
    "aspNetCoreWeb": [
      {
        "name": "BackendApp",
        "parameters": {
          "appBundle": "backend-app.zip",
          "iisWebSite": "ARRSite",
          "iisPath": "/backend"
        }
      }
    ]
  }
}
```

Konfigurasi ARR dilakukan melalui ebextensions. Konfigurasi berikut mengatur aturan perutean ARR dasar:

**Example .ebextensions/arr-config.config - Konfigurasi ARR dasar**  

```
files:
  "C:\\temp\\configure-arr.ps1":
    content: |
      # Enable ARR proxy at server level
      Set-WebConfigurationProperty -PSPath 'MACHINE/WEBROOT/APPHOST' -Filter 'system.webServer/proxy' -Name 'enabled' -Value 'True'
      
      # Clear any existing global rules to avoid conflicts
      Clear-WebConfiguration -PSPath 'MACHINE/WEBROOT/APPHOST' -Filter 'system.webServer/rewrite/globalRules'

      # Add global rule to route all requests to backend
      Add-WebConfigurationProperty -PSPath 'MACHINE/WEBROOT/APPHOST' `
        -Filter 'system.webServer/rewrite/globalRules' `
        -Name '.' `
        -Value @{
          name = 'Route_to_Backend'
          stopProcessing = 'True'
          match = @{ url = '^(?!backend/)(.*)' }
          action = @{
            type = 'Rewrite'
            url = 'http://localhost:8080/backend/{R:1}'
          }
        }

container_commands:
  01_configure_arr:
    command: powershell -ExecutionPolicy Bypass -File "C:\\temp\\configure-arr.ps1"
    waitAfterCompletion: 0
```

Konfigurasi ini membuat situs web pada port 8080 dan menyiapkan ARR untuk merutekan semua permintaan yang masuk ke aplikasi backend yang berjalan di situs itu.

## Mengonfigurasi kolam aplikasi
<a name="dotnet-manifest-apppool"></a>

Anda dapat mendukung beberapa aplikasi di lingkungan Windows Anda. Dua pendekatan yang tersedia:
+ Anda dapat menggunakan model out-of-process hosting dengan server web Kestrel. Dengan model ini, Anda mengonfigurasi beberapa aplikasi untuk berjalan dalam satu kolam aplikasi.
+ Anda dapat menggunakan model hosting dalam proses. Dengan model ini, Anda menggunakan beberapa kolam aplikasi untuk menjalankan beberapa aplikasi hanya dengan satu aplikasi di setiap kolam. Jika Anda menggunakan server IIS dan perlu menjalankan beberapa aplikasi, Anda harus menggunakan pendekatan ini.

Untuk mengonfigurasi Kestrel agar menjalankan beberapa aplikasi di satu kolam aplikasi, tambahkan `hostingModel="OutofProcess"` di file `web.config`. Pertimbangkan contoh berikut.

**Example web.config - untuk model hosting Kestrel out-of-process**  

```
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add 
    name="aspNetCore" 
    path="*" verb="*" 
    modules="AspNetCoreModuleV2" 
    resourceType="Unspecified" />
</handlers>
<aspNetCore 
    processPath="dotnet" 
    arguments=".\CoreWebApp-5-0.dll" 
    stdoutLogEnabled="false" 
    stdoutLogFile=".\logs\stdout" 
    hostingModel="OutofProcess" />
</system.webServer>
</location>
</configuration>
```

**Example aws-windows-deployment-manifest.json - beberapa aplikasi**  

```
{
"manifestVersion": 1,
  "deployments": {"msDeploy": [
      {"name": "Web-app1",
        "parameters": {"archive": "site1.zip",
          "iisPath": "/"
        }
      },
      {"name": "Web-app2",
        "parameters": {"archive": "site2.zip",
          "iisPath": "/app2"
        }
      }
    ]
  }
}
```

IIS tidak mendukung beberapa aplikasi dalam di satu kolam aplikasi karena menggunakan model hosting dalam proses. Oleh karena itu, Anda perlu mengonfigurasi beberapa aplikasi dengan menetapkan setiap aplikasi ke satu kolam aplikasi. Dengan kata lain, tetapkan hanya satu aplikasi ke satu kolam aplikasi.

Anda dapat mengonfigurasi IIS untuk menggunakan kolam aplikasi yang berbeda di file `aws-windows-deployment-manifest.json`. Lakukan pembaruan berikut saat Anda merujuk ke file contoh berikutnya:
+ Tambahkan bagian `iisConfig` yang mencakup subbagian yang disebut `appPools`.
+ Di blok `appPools`, buat daftar kolam aplikasi. 
+ Di bagian `deployments`, definisikan sebuah bagian `parameters` untuk setiap aplikasi.
+ Untuk setiap aplikasi bagian `parameters` menentukan sebuah arsip, sebuah jalur untuk menjalankannya, dan sebuah `appPool` tempat untuk menjalankannya.

Manifes deployment berikut mengonfigurasi dua kolam aplikasi yang memulai ulang aplikasi mereka setiap 10 menit. Mereka juga melampirkan aplikasi mereka ke aplikasi web .NET Framework yang berjalan di jalur yang ditentukan.

**Example aws-windows-deployment-manifest.json - satu aplikasi per kumpulan aplikasi**  

```
{
"manifestVersion": 1,
  "iisConfig": {"appPools": [
      {"name": "MyFirstPool",
       "recycling": {"regularTimeInterval": 10}
      },
      {"name": "MySecondPool",
       "recycling": {"regularTimeInterval": 10}
      }
     ]
    },
  "deployments": {"msDeploy": [
      {"name": "Web-app1",
        "parameters": {
           "archive": "site1.zip",
           "iisPath": "/",
           "appPool": "MyFirstPool"
           }
      },
      {"name": "Web-app2",
        "parameters": {
           "archive": "site2.zip",
           "iisPath": "/app2",
           "appPool": "MySecondPool"
          }
      }
     ]
    }
}
```

## Menentukan deployment khusus
<a name="dotnet-manifest-custom"></a>

Untuk kontrol lebih, Anda dapat sepenuhnya menyesuaikan deployment aplikasi dengan mendefinisikan *deployment khusus*.

Manifes penerapan ini menginstruksikan Elastic Beanstalk untuk mengeksekusi skrip dalam mode 32-bit. PowerShell Ini menentukan tiga skrip: `install` script (`siteInstall.ps1`) yang berjalan selama peluncuran dan penerapan instance, `uninstall` script (`siteUninstall.ps1`) yang dijalankan sebelum menginstal versi baru selama penerapan, dan `restart` script (`siteRestart.ps1`) yang berjalan saat Anda memilih [Restart](environments-dashboard-actions.md) App Server di konsol manajemen. AWS 

**Example aws-windows-deployment-manifest.json - penyebaran kustom**  

```
{
  "manifestVersion": 1,
  "deployments": {
    "custom": [
      {
        "name": "Custom site",
        "architecture" : 32,
        "scripts": {
          "install": {
            "file": "siteInstall.ps1"
          },
          "restart": {
            "file": "siteRestart.ps1"
          },
          "uninstall": {
            "file": "siteUninstall.ps1"
          }
        }
      }
    ]
  }
}
```

Sertakan Artifact yang diperlukan untuk menjalankan aplikasi dalam paket sumber Anda dengan manifes dan penulisan.

**Example C. ustom-site-bundle Zip**  

```
.
|-- aws-windows-deployment-manifest.json
|-- siteInstall.ps1
|-- siteRestart.ps1
|-- siteUninstall.ps1
`-- site-contents.zip
```