点击上方蓝字关注“汪宇杰博客”
导语
微软智慧云 Azure 上虽然早就有 App Service 这种完全托管的 PaaS 服务可以让我们分分钟建网站。但是不自己配一下环境,就不能体现技术含量,容易被说微软的人都只会点鼠标。年轻的时候不敲命令,什么时候可以?今天就教大家如何在 Azure 上用 Windows Server 2019 (Server Core) VM 的方式自己配环境部署 ASP.NET Core 网站。
什么是 Windows Server Core
在微软开天辟地之时,先知比尔盖茨认为微软的使命是让复杂的计算机变得易用,因此 Windows 用图形化界面实现了“让每张桌子、每个家庭都拥有一台电脑”的使命。而图形界面也包含了 Windows 的服务器版本,绝大多数服务器组件都可以点鼠标分分钟装完。
但微软不明白,程序员需要的是通过命令行装逼,而不是早点下班。于是 Linux 靠命令行、模块化、轻量级统治了服务器的半壁江山,让程序员和运维充分装到了逼。而且 Windows 服务器还有个问题,就是由于有完整的桌面 GUI,因此服务器硬件的资源并没有最大化利用来处理业务。微软一看,这样不行啊iis管理器在哪里打开,于是在 Windows Server 2008 的时候推出了 Core 版本。
它是在部署 Windows Server Standard 或 Datacenter 版本时可用的最小安装选项。Server Core 包括大多数但并非全部服务器角色。相比完整桌面,Core 版本剔除了绝大部分GUI,并且你只安装需要的服务器角色,这样不仅降低了硬件开销,也降低了被攻击的风险。管理 Server Core 服务器基本通过命令行完成,易于装逼。
如果想要完全没有 GUI 的 Windows 服务器,可以了解一下 nano server,但这不是本文的议题,因此不暂不讨论。
使用传送门了解 Windows Server Core:
在 Azure 创建 Server Core 虚拟机
和创建其他虚拟机一样,在 Azure Portal 中创建 Server Core 虚拟机。镜像不在默认下拉列表里,需要自己从 “Browse all public and private images” 里搜出来。
镜像名称:
Windows Server 2019 Datacenter Server Core
由于我们要运行的是 ASP.NET Core 网站,并需要使用RDP登录服务器进行配置,所以建议开放 80,443,3389端口。
因为测试用途,我选择不配置防火墙,暴露所有端口到公网(也会忽略上一步的端口设置)。在真实环境中,请不要这样操作。
等服务器部署完成后,点击 DNS name 中的 “Configure” 配置一个域名。这是因为Azure上的VM默认IP地址是动态的,所以最好通过域名来访问,保证随时能找到你的服务器。
分配一个域名前缀
配置完成后,刷新 VM 主页,可以查看和复制用于访问虚拟机的域名。
登录 Server Core 服务器
点击 “Connect”
选择 Download RDP File
使用创建服务器时设置的账号密码登录 Server Core VM
此时大家会发现,Server Core 并不是完全没有GUI,而是最小化了 GUI 的存在。cmd 窗口依然是Windows渲染的。之后我们要用到的注册表编辑器也是 GUI 方式操作。
安装和配置 IIS
首先,借用我以前写的自动装机脚本()里的一部分来安装IIS(除ASP.NET,因为我们用的是.NET Core,和经典ASP.NET没关系)
使用powershell命令,在cmd下启动powershell
powershell
然后依次执行
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
这一步应该也能通过 Install-WindowsFeature Web-Server 命令完成,但我没试过,大家可以自己实践
然后安装管理服务
Install-WindowsFeatureWeb-Mgmt-Service
运行regedit启动注册表编辑器,改一个注册表值
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWebManagementServer
将EnableRemoteManagement 改为 1
执行 exit 退出 powershell 回到 cmd,我们要将 wmsvc 设置为开机自启动
scconfig wmsvc start=auto
然后启动 wmsvc 服务
netstart wmsvc
并且要允许Windows防火墙(和Azure NSG无关)通过这个服务
netsh advfirewall firewall add rule name=”IIS Remote Management” dir=in action=allow service=WMSVC
安装 ASP.NET Core 服务器环境
尽管我们可以通过 powershell 去下载.NET Core运行时然后手工安装,但这样并不方便,逼格也不高。Windows上其实有个类似 Linux 里 apt 那样的命令行包管理工具,叫做chocolatey,我们可以通过它在命令行下全自动安装大量软件。
再次键入 powershell,然后执行以下命令安装 choco
Set-ExecutionPolicyBypass -Scope Process -Force; iex ((New-ObjectSystem.Net.WebClient).DownloadString(‘https://chocolatey.org/install.ps1’))
完成后,键入 choco 检查是否能识别
执行以下命令,全自动安装 ASP.NET Core 服务器运行环境
chocoinstall dotnetcore-windowshosting -y
它将安装 x86, x64 两个运行时,以及 IIS 的 ANCM 模块
安装和配置 Web Deploy
使用 choco 安装 Web Deploy,该组件之后用于远程发布 ASP.NET Core 网站。
chocoinstall webdeploy -y
完成后重启一下 w3svc 服务
net stop w3svc
net start w3svc
IIS 远程管理
现在,我们能够在IIS管理器里远程连接到这台服务器进行网站发布。这可以在任何带有 IIS 7 以上管理器的机器上完成,比如我们自己的 Windows 10 客户端。
如果没有安装过 IIS 管理器,可以运行 optionalfeatures 并勾选 Internet Information Serviece / Web Management Service / IIS Management Console 安装。
然后要自己去下一个IISManager for Remote Administration 1.2,传送门:
安装完成后,启动 IIS 管理器,选择 File-> Connect to a Server
输入我们的服务器地址,即 Azure 上配过的那个DNS名称
忽略证书警告,点 Connect
这时候可能会弹一堆关于 Web Deploy 的可选安装组件,全选并安装
然后在IIS里就能用你熟悉的点鼠标方式,管理服务器上的网站了iis管理器在哪里打开,非常不996,一点也没有福报。
我们做的第一件事应该是检查 ASP.NET Core 的 ANCM 模块有没有安装成功。进入 Modules
检查是否有 AspNetCoreModule 以及AspNetCoreModuleV2
当然,你也可以在服务器上使用 dotnet –info 命令检查运行时版本。
因为要刷新环境变量最方便的办法是重启cmd,然而我们在服务器上退出cmd以后,因为没有完整桌面,不知道哪里去启动cmd,其实可以通过 CTRL SHIFT ESC 调出任务管理器,然后运行cmd命令,开一个新的cmd出来。
然后就能愉快的运行 dotnet –info 了
服务器玩够了,就回到我们老实的 Windows 10 客户端。在 IIS 里给默认网站开个https支持,因为 .NET Core 现在默认会启用https(尽管我们没有证书)
在 Bindings 里,添加https/443的支持,并勾选一个IIS自带的临时证书
———END———
限 时 特 惠: 本站每日持续更新海量各大内部创业教程,一年会员只需98元,全站资源免费下载 点击网站首页每天更新
站 长 微 信: aiwo51889