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

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

2025-08-19 267

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。

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

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

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

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

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

接着可以选择亚马逊VPS实例计划。亚马逊免费VPS目前提供三个月免费试用,详情参考:《亚马逊VPS怎么免费试用》。

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

三、克隆存储库并编译

接下来所用软件和部署脚本位于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。

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

2、创建

 

 

 

Amazon S3存储桶:选择Storage(存储)。

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

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

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

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

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

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

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

选择File(文件)。

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

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

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

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

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

五、部署Windows 2022 Server

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

1、部署Windows Server 2022

点击Create instance(创建实例)。

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

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

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

选择实例计划,在本教程中,可以使用最小的亚马逊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>

注意:不建议使用访问密钥,但为了完成演示,本教程使用了访问密钥。部署完成后,将删除这些密钥。

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

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

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

选择Delete(删除)。

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

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

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

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

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

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

选择Delete(删除)。

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

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

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

相关推荐:

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

Amazon Lightsail启动并配置WordPress教程

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

  • 广告合作

  • QQ群号:4114653

温馨提示:
1、本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。邮箱:2942802716#qq.com(#改为@)。 2、本站原创内容未经允许不得转裁,转载请注明出处“站长百科”和原文地址。

相关文章