Menjalankan beberapa aplikasi danASP. NETaplikasi inti dengan manifes penerapan - AWS Elastic Beanstalk

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

Menjalankan beberapa aplikasi danASP. NETaplikasi inti dengan manifes penerapan

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 bundel sumber untuk satuASP. NETaplikasi yang berjalan di jalur root situs web Anda. Sebaliknya, Anda dapat menggunakan file manifes untuk menjalankan beberapa aplikasi di jalur yang berbeda. Atau, sebagai alternatif, Anda dapat memberi tahu Elastic Beanstalk untuk menerapkan dan menjalankan aplikasi. ASP NETInti. Anda juga dapat menggunakan manifes deployment untuk mengonfigurasi kolam aplikasi tempat aplikasi Anda dijalankan.

Manifes penerapan menambahkan dukungan untuk. NETAplikasi inti untuk Elastic Beanstalk. Anda dapat menerapkan. NETAplikasi kerangka kerja tanpa manifes penerapan. Namun,. NETAplikasi inti memerlukan manifes penerapan untuk berjalan di Elastic Beanstalk. Saat Anda menggunakan manifes penerapan, Anda membuat arsip situs untuk setiap aplikasi, lalu menggabungkan arsip situs dalam ZIP arsip kedua yang berisi manifes penerapan.

Manifes deployment juga menambahkan kemampuan untuk menjalankan beberapa aplikasi di jalur yang berbeda. Manifes penerapan mendefinisikan array target penerapan, masing-masing dengan arsip situs dan jalur yang IIS harus menjalankannya. Misalnya, Anda dapat menjalankan web API di /api jalur untuk melayani permintaan asinkron, dan aplikasi web di jalur root yang menggunakan file. API

Anda juga dapat menggunakan manifes penerapan untuk menjalankan beberapa aplikasi menggunakan kumpulan aplikasi di IIS atau Kestrel. Anda dapat mengonfigurasi kumpulan aplikasi untuk memulai ulang aplikasi Anda secara berkala, menjalankan aplikasi 32-bit, atau menggunakan versi tertentu dari file. NETRuntime kerangka kerja.

Untuk kustomisasi penuh, Anda dapat menulis skrip penyebaran Anda sendiri 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.

. NETaplikasi inti

Anda dapat menggunakan manifes penerapan untuk menjalankan. NETAplikasi inti pada Elastic Beanstalk. . NETCore adalah versi lintas platform dari. NETyang dilengkapi dengan alat baris perintah (dotnet). Anda dapat menggunakannya untuk menghasilkan aplikasi, menjalankannya secara lokal, dan menyiapkannya untuk penerbitan.

Untuk menjalankan. NETAplikasi inti pada Elastic Beanstalk, Anda dotnet publish dapat menjalankan dan mengemas output ZIP dalam arsip, tidak termasuk direktori yang berisi. Menempatkan arsip situs di paket sumber dengan manifes deployment dengan target deployment tipe aspNetCoreWeb.

Manifes penerapan berikut menjalankan file. NETAplikasi inti dari arsip situs bernama dotnet-core-app.zip di jalur root.

contoh aws-windows-deployment-manifest.json -. NETinti
{ "manifestVersion": 1, "deployments": { "aspNetCoreWeb": [ { "name": "my-dotnet-core-app", "parameters": { "archive": "dotnet-core-app.zip", "iisPath": "/" } } ] } }

Bundel manifes dan arsip situs dalam ZIP arsip untuk membuat bundel sumber.

contoh 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.

contoh 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

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

Manifes penerapan berikut mengonfigurasi dua. NETAplikasi inti. WebApiSampleAppAplikasi ini mengimplementasikan web sederhana API dan melayani permintaan asinkron di jalur. /api Aplikasi DotNetSampleApp adalah aplikasi web yang melayani permintaan di jalur akar.

contoh 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:

Mengonfigurasi kolam aplikasi

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 IIS server 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.

contoh 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>
contoh 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" } } ] } }

IIStidak mendukung banyak aplikasi dalam satu kumpulan 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 kumpulan aplikasi yang berbeda dalam aws-windows-deployment-manifest.json file. 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 a. NETFramework aplikasi web yang berjalan di jalur yang ditentukan.

contoh 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

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

Manifes deployment berikut memberitahu Elastic Beanstalk untuk menjalankan tulisan install bernama siteInstall.ps1. Skrip ini megnisntal situs web selama peluncuran dan deployment instans. Selain itu, manifes penyebaran juga memberi tahu Elastic Beanstalk untuk uninstall menjalankan skrip sebelum menginstal versi baru selama penerapan restart dan skrip untuk memulai ulang aplikasi saat Anda memilih Restart App Server di konsol manajemen. AWS

contoh aws-windows-deployment-manifest.json - penyebaran kustom
{ "manifestVersion": 1, "deployments": { "custom": [ { "name": "Custom site", "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.

contoh C. ustom-site-bundle Zip
. |-- aws-windows-deployment-manifest.json |-- siteInstall.ps1 |-- siteRestart.ps1 |-- siteUninstall.ps1 `-- site-contents.zip