亚马逊云科技

广告

安信SSL证书

广告

亚马逊免费VPS部署ASP.NET Core详细图文教程

美国云服务器推荐

作为一个免费且开放源代码的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的介绍和教程请参考:

在浏览器中打开亚马逊云科技管理控制台,然后使用搜索栏查找Amazon Lightsail。

搜索栏查找Amazon Lightsail

Amazon Lightsail菜单显示Instances(实例)(即虚拟专用服务器)选项。选择Instances(实例),然后点击Create instance(创建实例)。

创建亚马逊免费VPS

Create an instance(创建实例)页面包含多个选项。首先,选择Instance location(实例位置),可以保留默认值,也可以选择最近的亚马逊云科技区域。其次为亚马逊免费VPS选择Windows Server,然后选择OS Only(仅限操作系统)Windows Server蓝图。

创建亚马逊免费VPS

接着可以选择亚马逊免费VPS实例计划。亚马逊免费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中:

cd ./practical-cloud-guide-code/run-to-build/windows-app-deploy/aspnetcoreapp/bin/Release/net6.0/publish
zip ./windows-app-deploy/deploy/app.zip ./*

四、创建Amazon S3存储桶并上传文件

1、打开亚马逊云科技管理控制台并选择Lightsail。

创建Amazon S3存储桶并上传文件

2、创建Amazon S3存储桶:选择Storage(存储)。

创建Amazon S3存储桶并上传文件

在Create a new bucket(创建新存储桶)页面中,选择5GB存储计划,并使用唯一的名称命名存储桶,例如<my>-practical-cloud-guide。请注意,存储桶名称必须全局唯一。点击Create Bucket(创建存储桶)。

创建Amazon S3存储桶并上传文件

然后会看到practical-cloud-guide存储桶的菜单页面,选择Objects(对象)。

创建Amazon S3存储桶并上传文件

Object list(对象列表)显示存储桶中的对象。点击Upload(上传),将应用程序和部署文件放入该存储桶。

创建Amazon S3存储桶并上传文件

选择File(文件)。

创建Amazon S3存储桶并上传文件

从./practical-cloud-guide-code/run-to-build/windows-app-deploy /deploy/中选择app.zip和 deploy_iis.ps1,然后点击Open(打开)。

创建Amazon S3存储桶并上传文件

这些文件将添加到Object list(对象列表)中。

创建Amazon S3存储桶并上传文件

五、部署Windows 2022 Server

接下来将使用亚马逊免费VPS控制台实例化Windows Server 2000,并将其配置为使用Powershell脚本安装 .NET Core和IIS。

1、部署Windows Server 2022

点击Create instance(创建实例)。

部署Windows 2022 Server

选择Microsoft Windows,然后选择Windows Server 2022。

部署Windows 2022 Server

选择实例计划,在本教程中,可以使用最小的亚马逊VPS计划,但更高的计划响应更快,各位按需选择。

部署Windows 2022 Server

添加一个脚本以创建目录,并下载应用程序和部署脚本。将此脚本复制到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 2022 Server

将实例命名为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窗口。

部署ASP.NET Core应用程序

从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(实例),然后选择三个红点。

删除Windows Server 2022

选择Delete(删除)。

删除Windows Server 2022

选择Yes, delete(是的,删除)。

删除Windows Server 2022

2、删除S3存储桶(可选)

在Lightsail菜单上选择Storage(存储)。点击三个垂直点。

删除S3存储桶

选择Delete(删除)。

删除S3存储桶

选择Force Delete(强制删除),删除文件和S3存储桶。

删除S3存储桶

(本文由美国主机侦探原创,转载请注明出处“美国主机侦探”和原文地址!)

主机侦探企业微信

微信扫码加好友进群

主机优惠码及时掌握

主机侦探QQ群

QQ群号:938255063

主机优惠发布与交流

温馨提示:

1、本站部分图片来源于互联网,如有侵权请联系删除。邮箱:2942802716#qq.com(#改为@)

2、本文评论没有专人回复,如果您有问题请到美国主机侦探论坛提问!

3、美国主机侦探免费为您提供美国主机购买咨询。

RAKsmart美国服务器
返回顶部