数字化技能提升教程,数字化时代生存宝典

首页 / 开发教程 / ASP.NET Core应用程序部署教程

ASP.NET Core应用程序部署教程

浏览:359

ASP.NET Core是一个跨平台、高性能的开源框架,主要为大规模应用开发构建,用于.NET构建新式Web应用。简单来说,ASP.NET Core就是一个免费开源的Web框架,可以处理任何规模的工作负载。接下来站长百科主要介绍如何创建一个Windows Server 2022实例并在IIS上部署一个ASP.NET Core应用程序。

一、前提条件

本教程基于亚马逊云科技的VPS(Amazon Lightsail)、云存储(Amazon S3)等产品实现。编译和打包的应用程序已由CI进程推送到对象存储 (Amazon S3) 中。模拟将应用程序和IIS配置脚本上传至Amazon S3。请注意,配置脚本用于在Windows 2022 Server上部署和配置应用程序,而不是持续交付 (CD) 进程的一部分。

1、注册/登录亚马逊云科技账户,详情参考:

建议参考:《亚马逊云科技账号注册流程

2、亚马逊云科技凭证

3、Git客户端

4、已安装.NET

5、适用于你操作系统的Powershell

二、亚马逊免费VPS Amazon Lightsail简介

>>>点击开始免费试用3个月Amazon Lightsail>>>

通过上方链接访问AWS官网,注册登录后使用搜索栏查找Amazon Lightsail。

查找Amazon Lightsail

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

查找Amazon Lightsail

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

查找Amazon Lightsail

接着可以选择亚马逊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 Server 2022

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

部署Windows Server 2022

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

选择亚马逊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窗口。

部署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

脚本的第二部分为应用程序创建一个目录。该脚本从前面创建的AWS 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存储桶。

清理资源

相关推荐:

Amazon Lightsail上启动cPanel & WHM实例教程

Amazon Lightsail启动并配置WordPress教程

亚马逊VPS部署LAMP Web应用程序教程

相关文章

猜你喜欢