作为一个免费且开放源代码的Web框架,ASP.NET Core既可以Windows上的完整.NET Framework上运行,也可以在跨平台.NET Core上运行。在云中部署.NET应用程序与在本地服务器或数据中心部署类似。
在接下来的教程中,将教大家创建一个Windows Server 2022实例并在IIS上部署一个ASP.NET Core应用程序。
本教程基于这样一个场景:编译和打包的应用程序已由CI进程推送到对象存储 (Amazon S3) 中。模拟将应用程序和IIS配置脚本上传至Amazon S3。请注意,配置脚本用于在Windows 2022 Server上部署和配置应用程序,而不是持续交付 (CD) 进程的一部分。
一、前提条件
1、注册/登录亚马逊云科技账户,详情参考:
2、亚马逊云科技凭证
3、Git客户端
4、已安装.NET
5、适用于你操作系统的Powershell
二、亚马逊免费VPS Amazon Lightsail简介本文将将在Windows Server中的IIS上部署ASP.NET Core应用程序。该应用程序是一个简单的Web应用程序,但除了部署该应用程序外,还需要安装和配置IIS。
亚马逊云科技官网:点击领取3个月免费VPS
我们先大概了解一下亚马逊免费VPS Amazon Lightsail方案,熟悉如何使用该服务。请注意,这只是帮您熟悉该服务的简要介绍。更多关于亚马逊VPS的介绍和教程请参考:
- 《AWS Lightsail价格多少》
- 《亚马逊VPS主机性能和速度评测》
- 《亚马逊VPS搭建Magento教程》
- 《亚马逊VPS启动cPanel & WHM实例教程》
- 《亚马逊VPS Amazon Lightsail创建CDN分配教程》
- 《亚马逊VPS Amazon Lightsai配置MySQL数据库教程》
- 《PrestaShop网站搭建全指南(通过亚马逊免费VPS实现)》
在浏览器中打开亚马逊云科技管理控制台,然后使用搜索栏查找Amazon Lightsail。
Amazon Lightsail菜单显示Instances(实例)(即虚拟专用服务器)选项。选择Instances(实例),然后点击Create instance(创建实例)。
Create an instance(创建实例)页面包含多个选项。首先,选择Instance location(实例位置),可以保留默认值,也可以选择最近的亚马逊云科技区域。其次为亚马逊免费VPS选择Windows Server,然后选择OS Only(仅限操作系统)Windows Server蓝图。
接着可以选择亚马逊免费VPS实例计划。亚马逊免费VPS目前提供三个月免费试用,详情参考:《亚马逊VPS怎么免费领取 亚马逊免费VPS领取教程》。
接下来所用软件和部署脚本位于GitHub存储库中,将克隆该存储库以将文件复制到本地驱动器,将使用 .NET 编译应用程序并将其打包为zip文件。
1、克隆practical-cloud-guide-code 存储库,构建并压缩应用程序
git clone https://github.com/build-on-aws/practical-cloud-guide-code
2、编译ASP.NET Core应用程序
此步骤将C#代码编译为可执行文件并创建publish目录。
在Windows、Linux或macOS中:
cd ./practical-cloud-guide-code/run-to-build/windows-app-deploy/aspnetcoreapp/
dotnet publish -c release
3、将应用程序打包为zip文件
此步骤将所有应用程序文件打包为一个zip文件,以便上传至云存储并部署在Windows Server上。请注意在压缩应用程序时,必须位于publish目录中。解压缩该zip文件后,所有文件都将位于网站的根目录下。
在Windows或Powershell中:
cd ./practical-cloud-guide-code/run-to-build/windows-app-deploy/aspnetcoreapp/bin/Release/net6.0/publish
Compress-Archive -Path ./ -DestinationPath ./deploy/app.zip
在Linux或macOS中:
四、创建Amazon S3存储桶并上传文件cd ./practical-cloud-guide-code/run-to-build/windows-app-deploy/aspnetcoreapp/bin/Release/net6.0/publish
zip ./windows-app-deploy/deploy/app.zip ./*
1、打开亚马逊云科技管理控制台并选择Lightsail。
2、创建Amazon S3存储桶:选择Storage(存储)。
在Create a new bucket(创建新存储桶)页面中,选择5GB存储计划,并使用唯一的名称命名存储桶,例如<my>-practical-cloud-guide。请注意,存储桶名称必须全局唯一。点击Create Bucket(创建存储桶)。
然后会看到practical-cloud-guide存储桶的菜单页面,选择Objects(对象)。
Object list(对象列表)显示存储桶中的对象。点击Upload(上传),将应用程序和部署文件放入该存储桶。
选择File(文件)。
从./practical-cloud-guide-code/run-to-build/windows-app-deploy /deploy/中选择app.zip和 deploy_iis.ps1,然后点击Open(打开)。
这些文件将添加到Object list(对象列表)中。
接下来将使用亚马逊免费VPS控制台实例化Windows Server 2000,并将其配置为使用Powershell脚本安装 .NET Core和IIS。
1、部署Windows Server 2022
点击Create instance(创建实例)。
选择Microsoft Windows,然后选择Windows Server 2022。
选择实例计划,在本教程中,可以使用最小的亚马逊VPS计划,但更高的计划响应更快,各位按需选择。
添加一个脚本以创建目录,并下载应用程序和部署脚本。将此脚本复制到Launch script(启动脚本)输入框中。将访问密钥、安全密钥和区域的值替换为账户。
<powershell>
iex ($YourAccessKey = ‘<your-access-key>’)
iex ($YourSecretKey = ‘<your-secret-key>’)
iex ($YourRegion = ‘<your-region>’)
iex (Set-DefaultAWSRegion -Region $YourRegion)
iex (Set-AwsCredential -AccessKey $YourAccessKey -SecretKey $YourSecretKey -StoreAs default)
iex (New-Item -Path ‘C:\deploy’ -ItemType Directory)
iex ($YourBucketName = ‘<my>-practical-cloud-guide’)
iex ($YourAppKey = ‘deploy_iis.ps1’)
iex (Copy-S3Object -BucketName practical-cloud-guide -Key deploy_iis.ps1 -LocalFoil C:\deploy\deploy_iis.ps1)
iex (Copy-S3Object -BucketName $YourBucketName -Key $YourAppKey -LocalFile C:\deploy\$YourAppKey)
</powershell>
注意:不建议使用访问密钥,但为了完成演示,本教程使用了访问密钥。部署完成后,将删除这些密钥。
将实例命名为Windows_Server_IIS。然后点击 Create Instance(创建实例)。
六、部署ASP.NET Core应用程序接下来将展示如何在Windows Server 2022中安装并配置IIS以及如何使用Powershell脚本从S3存储桶部署ASP.NET Core应用程序
1、部署IIS和ASP.NET Core应用程序
deploy_iis.ps1 Powershell脚本可自动执行安装IIS及其管理工具、配置新网站和部署ASP.NET Core Razor应用程序的过程。我们先使用内置的远程桌面客户端 (RDP) 登录服务器。选择计算机图标,打开RDP窗口。
从Windows开始菜单打开Powershell终端。将目录更改为C:\deploy,然后使用记事本查看deploy_iis.ps1脚本。
cd C:\deploy
notepad.exe ./deploy_iis.ps1
脚本的第一部分安装IIS和管理工具。要托管ASP.NET Core应用程序,IIS需要ASP.NET Core 6.0托管包。注意该脚本将ProgressPreference设置为SilentlyContinue,以防止cmdlet输出写入终端。
Set-Variable $global:ProgressPreference SilentlyContinue
# Install IIS
Install-WindowsFeature Web-Server -IncludeManagementTools# Download and install the ASP.NET Core 6.0 Hosting Bundle
$filein = “https://download.visualstudio.microsoft.com/download/pr/7ab0bc25-5b00-42c3-b7cc-bb8e08f05135/91528a790a28c1f0fe39845decf40e10/dotnet-hosting-6.0.16-win.exe”
Invoke-WebRequest -Uri $filein -OutFile “$(pwd)\dotnet-hosting-6.0.16-win.exe”Start-Process -FilePath “$(pwd)\dotnet-hosting-6.0.16-win.exe” -Wait -ArgumentList /passive
# Stop and start IIS
net stop was /y
net start w3svc
脚本的第二部分为应用程序创建一个目录。该脚本从前面创建的S3存储桶下载app.zip,并将其解压缩到该目录下。
# download and unzip the application
New-Item -Path ‘C:\inet\newsite’ -ItemType Directory
$YourBucketName = “<my>-practical-cloud-guide”
$AppKey = “app.zip”
$AppFile = “C:\inet\newsite\” + $AppKey
Copy-S3Object -BucketName $YourBucketName -Key $AppKey -LocalFile $AppFile
Expand-Archive $AppFile -DestinationPath “C:\inet\newsite”
脚本的第三部分禁用默认的IIS网站,配置新的应用程序池、网站,并部署应用程序。如果脚本成功运行,将打开Microsoft Edge并显示应用程序。
在脚本的最后删除亚马逊云科技凭证,因为服务器不需要访问其他亚马逊云科技服务或资源。
# Create application pool
$appPoolName = ‘DemoAppPool’
New-WebAppPool -Name $appPoolName -force# Create website
New-Item IIS:\Sites\DemoSite -physicalPath C:\inet -bindings @{protocol=”http”;bindingInformation=”:8080:”}
Set-ItemProperty IIS:\Sites\DemoSite -name applicationPool -value $appPoolName# Add application to website
New-Item IIS:\Sites\DemoSite\DemoApp -physicalPath C:\inet\newsite -type Application
Set-ItemProperty IIS:\sites\DemoSite\DemoApp -name applicationPool -value $appPoolName# start new website
Start-WebAppPool -Name $appPoolName
Start-WebSite -Name “DemoSite”# Open application on Edge
start microsoft-edge:http://localhost:8080/DemoApp# delete AWS credentials
Remove-AWSCredentialProfile -Force -ProfileName default
运行脚本,完成安装和部署。
七、清理资源C:\deploy\deploy_iis.ps1
为避免AWS后台产生额外费用,请删除Windows Server 2022。S3存储桶是否删除取决于你自己,如果后续还需要用于其他方面,可以选择不删除。
1、删除Windows Server 2022
在Lightsail菜单中选择Instances(实例),然后选择三个红点。
选择Delete(删除)。
选择Yes, delete(是的,删除)。
2、删除S3存储桶(可选)
在Lightsail菜单上选择Storage(存储)。点击三个垂直点。
选择Delete(删除)。
选择Force Delete(强制删除),删除文件和S3存储桶。
(本文由美国主机侦探原创,转载请注明出处“美国主机侦探”和原文地址!)

微信扫码加好友进群
主机优惠码及时掌握

QQ群号:938255063
主机优惠发布与交流