在自己软件上上传图片没问题到iis发布上就不能_Azure 上使用 Windows Server Core 运行 ASP.NET Core 网站...

news/2024/5/20 13:55:18/文章来源:https://blog.csdn.net/weixin_42517044/article/details/113412169

点击上方蓝字关注“汪宇杰博客”

afdc7189cd530c5c85bfe6cd584afac0.png

导语

微软智慧云 Azure 上虽然早就有 App Service 这种完全托管的 PaaS 服务可以让我们分分钟建网站。但是不自己配一下环境,就不能体现技术含量,容易被说微软的人都只会点鼠标。年轻的时候不敲命令,什么时候可以?今天就教大家如何在 Azure 上用 Windows Server 2019 (Server Core) VM 的方式自己配环境部署 ASP.NET Core 网站。

8ac103f6abc56162afdd6827d2872017.gif

什么是 Windows Server Core

在微软开天辟地之时,先知比尔盖茨认为微软的使命是让复杂的计算机变得易用,因此 Windows 用图形化界面实现了“让每张桌子、每个家庭都拥有一台电脑”的使命。而图形界面也包含了 Windows 的服务器版本,绝大多数服务器组件都可以点鼠标分分钟装完。

但微软不明白,程序员需要的是通过命令行装逼,而不是早点下班。于是 Linux 靠命令行、模块化、轻量级统治了服务器的半壁江山,让程序员和运维充分装到了逼。而且 Windows 服务器还有个问题,就是由于有完整的桌面 GUI,因此服务器硬件的资源并没有最大化利用来处理业务。微软一看,这样不行啊,于是在 Windows Server 2008 的时候推出了 Core 版本。

它是在部署 Windows Server Standard 或 Datacenter 版本时可用的最小安装选项。Server Core 包括大多数但并非全部服务器角色。相比完整桌面,Core 版本剔除了绝大部分GUI,并且你只安装需要的服务器角色,这样不仅降低了硬件开销,也降低了被攻击的风险。管理 Server Core 服务器基本通过命令行完成,易于装逼。

如果想要完全没有 GUI 的 Windows 服务器,可以了解一下 nano server,但这不是本文的议题,因此不暂不讨论。

使用传送门了解 Windows Server Core:

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

3757fcf9701b94430830c7a78ff57db7.gif

在 Azure 创建 Server Core 虚拟机

和创建其他虚拟机一样,在 Azure Portal 中创建 Server Core 虚拟机。镜像不在默认下拉列表里,需要自己从 "Browse all public and private images" 里搜出来。

镜像名称:

Windows Server 2019 Datacenter Server Core

dbf5938b1ab923caf8e018116b4b9b71.png

由于我们要运行的是 ASP.NET Core 网站,并需要使用RDP登录服务器进行配置,所以建议开放 80,443,3389端口。

17bde870bd6b056f8efc826fa6c02d69.png

因为测试用途,我选择不配置防火墙,暴露所有端口到公网(也会忽略上一步的端口设置)。在真实环境中,请不要这样操作。

3d6860b6f2bb5a7c8c7d7a3e5aebeece.png

等服务器部署完成后,点击 DNS name 中的 "Configure" 配置一个域名。这是因为Azure上的VM默认IP地址是动态的,所以最好通过域名来访问,保证随时能找到你的服务器。

8e59eb3c74d5d690344dffcfc081b015.png

分配一个域名前缀

e266cc6dd0bd88468ee82469b399fd59.png

配置完成后,刷新 VM 主页,可以查看和复制用于访问虚拟机的域名。

220ce40d41e21b0045bf6d0823a7f5ac.png

登录 Server Core 服务器

点击 "Connect"

1b699804502af534756164394a10af4d.png

选择 Download RDP File

2854eaf972a35213dd6a61729118ee09.png

使用创建服务器时设置的账号密码登录 Server Core VM

2c9be9d54f6dd9adf29c2a5fed1424dd.png

此时大家会发现,Server Core 并不是完全没有GUI,而是最小化了 GUI 的存在。cmd 窗口依然是Windows渲染的。之后我们要用到的注册表编辑器也是 GUI 方式操作。

安装和配置 IIS

首先,借用我以前写的自动装机脚本(https://github.com/EdiWang/EnvSetup)里的一部分来安装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 命令完成,但我没试过,大家可以自己实践

3dbab2be0fcef6abc40ffbd1e8dda0a8.png

然后安装管理服务

Install-WindowsFeatureWeb-Mgmt-Service

5e724a43ac8c52975c11647293cf9207.png

运行 regedit 启动注册表编辑器,改一个注册表值

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WebManagement\Server

将 EnableRemoteManagement 改为 1

a6e933b436d5d4d7c5510140b0acd9c3.png

执行 exit 退出 powershell 回到 cmd,我们要将 wmsvc 设置为开机自启动

scconfig wmsvc start=auto

c263f4198fd36c2192ad3a95067491a5.png

然后启动 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 检查是否能识别

16eed897914ae71c5ad367fe9e6b5651.png

执行以下命令,全自动安装 ASP.NET Core 服务器运行环境

chocoinstall dotnetcore-windowshosting -y

它将安装 x86, x64 两个运行时,以及 IIS 的 ANCM 模块

56852c3991aabfaccb220ca7bfa1082b.png

安装和配置 Web Deploy

使用 choco 安装 Web Deploy,该组件之后用于远程发布 ASP.NET Core 网站。

chocoinstall webdeploy -y

4727a96ae3db85a3cb1bcf5afe99b26f.png

完成后重启一下 w3svc 服务

net stop w3svc

net start w3svc

6944fbaae34aafffe50775206540817e.png

IIS 远程管理

现在,我们能够在IIS管理器里远程连接到这台服务器进行网站发布。这可以在任何带有 IIS 7 以上管理器的机器上完成,比如我们自己的 Windows 10 客户端。

如果没有安装过 IIS 管理器,可以运行 optionalfeatures 并勾选 Internet Information Serviece / Web Management Service / IIS Management Console 安装。

c0d755c9cc48ef1e14737366c5cf8c67.png8dea7c18531da7a32a76945422c14f8b.png

然后要自己去下一个 IISManager for Remote Administration 1.2,传送门:

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

安装完成后,启动 IIS 管理器,选择 File-> Connect to a Server 

37e04f8cf00babedcb1ccf90398db980.png

输入我们的服务器地址,即 Azure 上配过的那个DNS名称

7568c26b69b6cb3c12c56e566d4e7dd5.png

忽略证书警告,点 Connect 

efc405a66b26b99c70df744626c2c117.png

这时候可能会弹一堆关于 Web Deploy 的可选安装组件,全选并安装

8832462566069de2f3d28ab7ca6ece10.png

然后在IIS里就能用你熟悉的点鼠标方式,管理服务器上的网站了,非常不996,一点也没有福报。

我们做的第一件事应该是检查 ASP.NET Core 的 ANCM 模块有没有安装成功。进入 Modules

471b7b0f0f183b8c97713f7f9992f6d2.png

检查是否有 AspNetCoreModule 以及 AspNetCoreModuleV2

f4e2627ab741ee2c36b55873b6b1ded1.png

当然,你也可以在服务器上使用 dotnet --info 命令检查运行时版本。

因为要刷新环境变量最方便的办法是重启cmd,然而我们在服务器上退出cmd以后,因为没有完整桌面,不知道哪里去启动cmd,其实可以通过 CTRL SHIFT ESC 调出任务管理器,然后运行cmd命令,开一个新的cmd出来。

618592998e6b2fd2ab4b340ba7631034.png

然后就能愉快的运行 dotnet --info 了

a5bed67c7c5097ea08795bde44595b75.png

服务器玩够了,就回到我们老实的 Windows 10 客户端。在 IIS 里给默认网站开个https支持,因为 .NET Core 现在默认会启用https(尽管我们没有证书)

在 Bindings 里,添加https/443的支持,并勾选一个IIS自带的临时证书

894e3db0ff6c64f68fb0cc0b59731a1d.png

然后尝试访问 http/https 两个协议的网址,也就是你的VM DNS名称,忽略证书警告,应该都能打开

e7daab9aa6aaa8dc723be77d46c3ca8a.png

万一打不开,或者无法连接远程服务器的IIS,可以先喝热水,然后到服务器上用 Powershell 的 Restart-Computer 命令重启试试。实在不行,删库跑路,也挺省心,Azure 删 VM 只要几秒钟……

0fbc3ca5b97150a26a52c8931d36207c.png

发布 ASP.NET Core 网站

虽然类似于Azure DevOps 的 CI / CD 工具完全能对接 Web Deploy 全自动发布网站,但这样的体验太没技术含量了,无法 996,没有梦想。因此我教大家开手动挡操作:

将一个 ASP.NET Core 网站编译,并发布到本地文件系统。然后把发布出来的文件打个zip压缩包。

c8180377e8aa2b666e49d895dd298e84.png

然后回到IIS里,在服务器端的网站上点右键,选择 Deploy / Import Application

53bcb10bdf1d68dd9fd23ae863cf01fd.png

选择刚才打包的zip文件

084758a9428909bfad38bcdba27d465d.png

选择zip包内全部内容

cbf0762b5fcbe310266e122801f1950d.png

输入网站名称(一定要和IIS管理器里显示的网站名称一毛一样)

cb06adfba67be662f8d6bc79e1213c10.png

根据自己需要,选择是否删除目标位置多余文件

1a91aaae8926c582a0d3ed725ef42583.png

完成zip包导入

adb1192d40b9b5edbafd0ee8de3e7d39.png

现在IIS管理器里就能看见网站目录下的所有文件了~

dfb2b709ed706a61be9feaedfc67c708.png

尝试访问一下VM的网址,网站成功运行,非常牛逼

414c6131595e5c83f05ed341ee3e30f9.png625162d99ae0d999b93a5451e57a8b87.gif

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_725133.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何在oracle中下载java,如何在oracle官方网站下载JavaSE官方文档

想要學習JAVA,卻又不知道無從下手。不知你是否有這樣的經歷。好不容易把JAVA JDK給下載下來了,也弄清楚了什麼是JDK、JRE、JAVA2、JAVA SE、JAVA EE等一大堆亂七八糟的概念。把JDK與ECLIPSE下載好後,配置開發環境。之後你需要的是JDK API文檔,此類API文檔有兩種方法獲取,一種是…

鸿蒙应用开发在线体验网址,华为鸿蒙应用开发在线体验网站上线,实现跨设备应用协同...

描述华为鸿蒙系统不仅仅是支持华为智能手机,还有应用在平板电脑,智能手表,智能电视以及其他设备上,是一个跨平台的操作系统。华为HarmonyOS应用开发在线体验网站现已上线。开发者可以通过在线体验“To-Do List”Demo,了…

golang 删除文件_Golang丨Java丨Python爬虫实战—Boss直聘网站数据抓取

我们分别通过Golang、Python、Java三门语言,分别实现对Boss直聘网站的招聘数据进行爬取。首先打开Boss直聘网站:然后我们在职位类型中输入Go或者Golang关键字:然后我们可以看到一个列表,和Go语言相关的各种招聘职位,还…

linux服务器安装openwrt,探索openwrt安装宝塔,搭建web网站论坛社区网校

本帖最后由 离人难拥 于 2021-3-14 12:35 编辑本人小白新手,linux命令也不熟悉,学习,有老师的话请指教先认识一下openwrtOpenWrt 可以被描述为一个嵌入式的 Linux 发行版。(主流路由器固件有 dd-wrt,tomato,openwrt,padavan四类)对比一个单一…

蛋白结构建模与优化_这 11 个可以预测蛋白质结构的网站,通通都安利给你!...

蛋白质是生命活动的体现者,其结构决定着功能。由线性氨基酸组成的蛋白质需要折叠成特定的空间结构才具有相应的生理活性和生物学功能。解析蛋白质的空间结构对于认识蛋白质的功能、功能的执行、生物大分子间的相互作用,以及医学和药学的发展(如药物靶点的…

反向索引和自增索引区别_站外SEO入门:了解反向链接的最重要因素

如我们之前就提到过的,搜索引擎优化通常分为两个不同的类别:站内搜索引擎优化又称为站内SEO站外搜索引擎优化又称为站外SEO如果您想了解有关SEO优化的更多信息,请阅读本文。在本文中,我们讨论站外SEO及其最重要的方面,…

seo从入门到精通_SEO入门到精通(六):百度、360、搜狗、谷歌搜索引擎的区别...

常见的搜索引擎有百度、360、搜狗、谷歌等。它们的功能都是从互联网上搜集信息,在对信息进行组织整理,为用户提供搜索服务的。那么,不同的搜索引擎的优化策略有什么不同?简单来说,同为搜索引擎,其搜索原理、…

网站注册中常用的一种倒记时特效代码

网站注册中常用的一种倒记时特效代码效果图:在会员注册时很多网站都有一份协议或条款提供给用户阅读,又为了避免部分用户不阅读而直接点击"我同意"按钮跳过,通常的方法便是在一段时间内使按钮失效,实现方法如下&#xf…

mac版yy服务器连接错误_个人网站搭建之服务器环境搭建

刚刚将自己的网站发布上线,整理出在建站过程中用到的一些软件的配置教程分享给想搭建个人网站的童鞋。本教程适用于快速上手,若想深入研究,请查询相关官网。域名与服务器我的域名与linux服务器都是在阿里云上购买的,这里只介绍阿里…

html网站欢迎页面_整合SpringMVC之欢迎页面与自定义Favicon

一.Spring Boot设置欢迎页面1.默认欢迎页的源码在Spring Boot中,默认的欢迎界面是index.html,那为什么这样呢?我们可以看看源码是怎么定义的。public class WebMvcAutoConfiguration { private Optional getWelcomePage() { String[]…

Linux配置vip在mysql_Keepalived安装配置 - MySQL + MHA +Keepalive + VIP安装配置_服务器应用_Linux公社-Linux系统门户网站...

一、概述keepalived介绍:Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web 服务器从系统中剔除,当web服务器工作正常后Keepalived自动将…

10个技巧助您提高网站访问速度

2019独角兽企业重金招聘Python工程师标准>>> 1、如果可能的话,延迟加载一些内容 可以使用Ajax来按需加载部分内容。比如一个相册,可以在用户浏览页面时先出缩略图,当用户点击了,然后异步请求原图并展示,这样…

转载 ASP.NET SignalR 与LayIM配合,轻松实现网站客服聊天室(三) 激动人心的时刻到啦,实现1v1聊天...

ASP.NET SignalR 与LayIM配合,轻松实现网站客服聊天室(三) 激动人心的时刻到啦,实现1v1聊天 看起来挺简单,细节还是很多的,好,接上一篇,我们已经成功连接singalR服务器了&#xff0c…

继杀毒软件免费之后 网站安全也免费!

前几年刚有杀毒软件免费的时候,各大安全软件厂商还很不适应。冷嘲热讽者有之,不屑一顾者有之,厉声痛斥者有之。而现在看来,这只是一种常见的商业 模式而已,并没有什么可说的。而市场逐渐成熟以后,免费杀毒软…

安装宝塔搭建网站

centos7安装宝塔 我使用的是一台centos7虚拟机。 打开终端访问宝塔官网输入以下命令回车即可。 yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh安装完成之后输入bt出现下面这个界面说明安装成功…

分享20个超酷的酒店类网站设计

为什么80%的码农都做不了架构师?>>> 日期:2012-4-11 来源:GBin1.com 酒店类的网站设计需要有商业技巧,一个好的酒店网站可以把酒店的舒适和特效很好的带到网站的设计之中。这种舒适感会让用户感觉很有入住的冲动。今…

8个应该去逛逛JQuery的学习网站

2019独角兽企业重金招聘Python工程师标准>>> 根据国外科技网站 W3Techs 一项调查了近100万个网站数据显示,jQuery是目前最流行的 JavaScript 库。对于初学者来说,有的时候很难找到一个好的学习jQuery的网站,所以本文收集了8个很棒…

网站群建设在地市级单位的尴尬与解决之道

2019独角兽企业重金招聘Python工程师标准>>> 现实的尴尬做站群也有段日子了,但碰到大多数的案例只是区县级的,地级市的不多,够到省厅的简直凤毛麟角,为何会如此?得从实际情况出发看,往往理论离开…

网页设计师必看!27个响应式的简约风格网站

下面要展示的网站,不单止去除了所有多于的设计元素,并且成功的运用现如今流行的设计趋势,比如超大的文字和图片,简单而有效的导航菜单,连续滚动,别出心思的互动元素,以及最新的响应式设计。 这些…

wordpress替换成360网站卫士CDN代理加速谷歌字体方案

最近,由于各种原因谷歌在中国大陆的业务已基本被屏蔽,直接访问google.com和google.com.hk均无法打开。图:google.com名服务器ping测结果Google服务在大陆的崩溃情况不仅影响到了广大网民,也影响到了数百万的站长。WordPress是世界…