日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

Azure 上使用 Windows Server Core 运行 ASP.NET Core 网站

發(fā)布時間:2023/12/4 asp.net 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Azure 上使用 Windows Server Core 运行 ASP.NET Core 网站 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

點擊上方藍(lán)字關(guān)注“汪宇杰博客”

導(dǎo)語

微軟智慧云 Azure 上雖然早就有 App Service 這種完全托管的 PaaS 服務(wù)可以讓我們分分鐘建網(wǎng)站。但是不自己配一下環(huán)境,就不能體現(xiàn)技術(shù)含量,容易被說微軟的人都只會點鼠標(biāo)。年輕的時候不敲命令,什么時候可以?今天就教大家如何在 Azure 上用 Windows Server 2019 (Server Core) VM 的方式自己配環(huán)境部署 ASP.NET Core 網(wǎng)站。

什么是 Windows Server Core

在微軟開天辟地之時,先知比爾蓋茨認(rèn)為微軟的使命是讓復(fù)雜的計算機(jī)變得易用,因此 Windows 用圖形化界面實現(xiàn)了“讓每張桌子、每個家庭都擁有一臺電腦”的使命。而圖形界面也包含了 Windows 的服務(wù)器版本,絕大多數(shù)服務(wù)器組件都可以點鼠標(biāo)分分鐘裝完。

但微軟不明白,程序員需要的是通過命令行裝逼,而不是早點下班。于是 Linux 靠命令行、模塊化、輕量級統(tǒng)治了服務(wù)器的半壁江山,讓程序員和運(yùn)維充分裝到了逼。而且 Windows 服務(wù)器還有個問題,就是由于有完整的桌面 GUI,因此服務(wù)器硬件的資源并沒有最大化利用來處理業(yè)務(wù)。微軟一看,這樣不行啊,于是在 Windows Server 2008 的時候推出了 Core 版本。

它是在部署 Windows Server Standard 或 Datacenter 版本時可用的最小安裝選項。Server Core 包括大多數(shù)但并非全部服務(wù)器角色。相比完整桌面,Core 版本剔除了絕大部分GUI,并且你只安裝需要的服務(wù)器角色,這樣不僅降低了硬件開銷,也降低了被攻擊的風(fēng)險。管理 Server Core 服務(wù)器基本通過命令行完成,易于裝逼。

如果想要完全沒有 GUI 的 Windows 服務(wù)器,可以了解一下 nano server,但這不是本文的議題,因此不暫不討論。

使用傳送門了解 Windows Server Core:

https://docs.microsoft.com/en-us/windows-server/administration/server-core/what-is-server-core

在 Azure 創(chuàng)建 Server Core 虛擬機(jī)

和創(chuàng)建其他虛擬機(jī)一樣,在 Azure Portal 中創(chuàng)建 Server Core 虛擬機(jī)。鏡像不在默認(rèn)下拉列表里,需要自己從 "Browse all public and private images" 里搜出來。

鏡像名稱:

Windows Server 2019 Datacenter Server Core

由于我們要運(yùn)行的是 ASP.NET Core 網(wǎng)站,并需要使用RDP登錄服務(wù)器進(jìn)行配置,所以建議開放 80,443,3389端口。

因為測試用途,我選擇不配置防火墻,暴露所有端口到公網(wǎng)(也會忽略上一步的端口設(shè)置)。在真實環(huán)境中,請不要這樣操作。

等服務(wù)器部署完成后,點擊 DNS name 中的 "Configure" 配置一個域名。這是因為Azure上的VM默認(rèn)IP地址是動態(tài)的,所以最好通過域名來訪問,保證隨時能找到你的服務(wù)器。

分配一個域名前綴

配置完成后,刷新 VM 主頁,可以查看和復(fù)制用于訪問虛擬機(jī)的域名。

登錄 Server Core 服務(wù)器

點擊 "Connect"

選擇 Download RDP File

使用創(chuàng)建服務(wù)器時設(shè)置的賬號密碼登錄 Server Core VM

此時大家會發(fā)現(xiàn),Server Core 并不是完全沒有GUI,而是最小化了 GUI 的存在。cmd 窗口依然是Windows渲染的。之后我們要用到的注冊表編輯器也是 GUI 方式操作。

安裝和配置 IIS

首先,借用我以前寫的自動裝機(jī)腳本(https://github.com/EdiWang/EnvSetup)里的一部分來安裝IIS(除ASP.NET,因為我們用的是.NET Core,和經(jīng)典ASP.NET沒關(guān)系)

使用powershell命令,在cmd下啟動powershell

powershell

然后依次執(zhí)行

Enable-WindowsOptionalFeature-Online -FeatureName IIS-DefaultDocument -All

Enable-WindowsOptionalFeature-Online -FeatureName IIS-HttpCompressionDynamic -All

Enable-WindowsOptionalFeature-Online -FeatureName IIS-HttpCompressionStatic -All

Enable-WindowsOptionalFeature-Online -FeatureName IIS-WebSockets -All

Enable-WindowsOptionalFeature-Online -FeatureName IIS-ApplicationInit -All

Enable-WindowsOptionalFeature-Online -FeatureName IIS-ServerSideIncludes

Enable-WindowsOptionalFeature-Online -FeatureName IIS-BasicAuthentication

Enable-WindowsOptionalFeature-Online -FeatureName IIS-WindowsAuthentication

這一步應(yīng)該也能通過 Install-WindowsFeature Web-Server 命令完成,但我沒試過,大家可以自己實踐

然后安裝管理服務(wù)

Install-WindowsFeatureWeb-Mgmt-Service

運(yùn)行?regedit?啟動注冊表編輯器,改一個注冊表值

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WebManagement\Server

將?EnableRemoteManagement 改為 1

執(zhí)行 exit 退出 powershell 回到 cmd,我們要將 wmsvc 設(shè)置為開機(jī)自啟動

scconfig wmsvc start=auto

然后啟動 wmsvc 服務(wù)

netstart wmsvc

并且要允許Windows防火墻(和Azure NSG無關(guān))通過這個服務(wù)

netsh advfirewall firewall add rule name=”IIS Remote Management” dir=in action=allow service=WMSVC

安裝 ASP.NET Core 服務(wù)器環(huán)境

盡管我們可以通過 powershell 去下載.NET Core運(yùn)行時然后手工安裝,但這樣并不方便,逼格也不高。Windows上其實有個類似 Linux 里 apt 那樣的命令行包管理工具,叫做?chocolatey,我們可以通過它在命令行下全自動安裝大量軟件。

再次鍵入 powershell,然后執(zhí)行以下命令安裝 choco

Set-ExecutionPolicyBypass -Scope Process -Force; iex ((New-ObjectSystem.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

完成后,鍵入 choco 檢查是否能識別

執(zhí)行以下命令,全自動安裝 ASP.NET Core 服務(wù)器運(yùn)行環(huán)境

chocoinstall dotnetcore-windowshosting -y

它將安裝 x86, x64 兩個運(yùn)行時,以及 IIS 的 ANCM 模塊

安裝和配置 Web Deploy

使用 choco 安裝 Web Deploy,該組件之后用于遠(yuǎn)程發(fā)布 ASP.NET Core 網(wǎng)站。

chocoinstall webdeploy -y

完成后重啟一下 w3svc 服務(wù)

net stop w3svc

net start w3svc

IIS 遠(yuǎn)程管理

現(xiàn)在,我們能夠在IIS管理器里遠(yuǎn)程連接到這臺服務(wù)器進(jìn)行網(wǎng)站發(fā)布。這可以在任何帶有 IIS 7 以上管理器的機(jī)器上完成,比如我們自己的 Windows 10 客戶端。

如果沒有安裝過 IIS 管理器,可以運(yùn)行 optionalfeatures 并勾選 Internet Information Serviece / Web Management Service / IIS Management Console 安裝。

然后要自己去下一個?IISManager for Remote Administration 1.2,傳送門:

https://www.microsoft.com/en-us/download/details.aspx?id=41177

安裝完成后,啟動 IIS 管理器,選擇 File-> Connect to a Server?

輸入我們的服務(wù)器地址,即 Azure 上配過的那個DNS名稱

忽略證書警告,點 Connect?

這時候可能會彈一堆關(guān)于 Web Deploy 的可選安裝組件,全選并安裝

然后在IIS里就能用你熟悉的點鼠標(biāo)方式,管理服務(wù)器上的網(wǎng)站了,非常不996,一點也沒有福報。

我們做的第一件事應(yīng)該是檢查 ASP.NET Core 的 ANCM 模塊有沒有安裝成功。進(jìn)入 Modules

檢查是否有 AspNetCoreModule 以及?AspNetCoreModuleV2

當(dāng)然,你也可以在服務(wù)器上使用 dotnet --info 命令檢查運(yùn)行時版本。

因為要刷新環(huán)境變量最方便的辦法是重啟cmd,然而我們在服務(wù)器上退出cmd以后,因為沒有完整桌面,不知道哪里去啟動cmd,其實可以通過 CTRL SHIFT ESC 調(diào)出任務(wù)管理器,然后運(yùn)行cmd命令,開一個新的cmd出來。

然后就能愉快的運(yùn)行 dotnet --info 了

服務(wù)器玩夠了,就回到我們老實的 Windows 10 客戶端。在 IIS 里給默認(rèn)網(wǎng)站開個https支持,因為 .NET Core 現(xiàn)在默認(rèn)會啟用https(盡管我們沒有證書)

在 Bindings 里,添加https/443的支持,并勾選一個IIS自帶的臨時證書

然后嘗試訪問 http/https 兩個協(xié)議的網(wǎng)址,也就是你的VM DNS名稱,忽略證書警告,應(yīng)該都能打開

萬一打不開,或者無法連接遠(yuǎn)程服務(wù)器的IIS,可以先喝熱水,然后到服務(wù)器上用 Powershell 的 Restart-Computer 命令重啟試試。實在不行,刪庫跑路,也挺省心,Azure 刪 VM 只要幾秒鐘……

發(fā)布 ASP.NET Core 網(wǎng)站

雖然類似于Azure DevOps 的 CI / CD 工具完全能對接 Web Deploy 全自動發(fā)布網(wǎng)站,但這樣的體驗太沒技術(shù)含量了,無法 996,沒有夢想。因此我教大家開手動擋操作:

將一個 ASP.NET Core 網(wǎng)站編譯,并發(fā)布到本地文件系統(tǒng)。然后把發(fā)布出來的文件打個zip壓縮包。

然后回到IIS里,在服務(wù)器端的網(wǎng)站上點右鍵,選擇 Deploy / Import Application

選擇剛才打包的zip文件

選擇zip包內(nèi)全部內(nèi)容

輸入網(wǎng)站名稱(一定要和IIS管理器里顯示的網(wǎng)站名稱一毛一樣)

根據(jù)自己需要,選擇是否刪除目標(biāo)位置多余文件

完成zip包導(dǎo)入

現(xiàn)在IIS管理器里就能看見網(wǎng)站目錄下的所有文件了~

嘗試訪問一下VM的網(wǎng)址,網(wǎng)站成功運(yùn)行,非常牛逼

參考文檔:https://blogs.msdn.microsoft.com/benjaminperkins/2015/11/02/configure-an-iis-server-core-server-for-remote-management/


總結(jié)

以上是生活随笔為你收集整理的Azure 上使用 Windows Server Core 运行 ASP.NET Core 网站的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。