Azure 入门系列 (第三篇 Publish Web Application to VM)
本系列
这个系列会介绍从 0 到 1 搭建一个 Web Application 的 Server. 间中还会带上一些真实开发常用的功能.
一共 6 篇
1. Virtual Machine (VM) 和 SQL Server
3. Publish Web Application to VM (IIS, HTTPS) <-- 你在这里
5. Azure Storage (with custom domain)
6. Computer Vision (smart-cropped thumbnails, OCR)
本篇介绍
安装 IIS
安装 .NET
一个 Web Application Razor page + Ef core 发布上去
point DNS
安装 SSL
安装 IIS
通过 RDP 进入 VM
打开 Server Manager (管理 VM 的软件)

一路 next, 然后选择 IIS


这 4 个要自己加, 其它默认就可以了
一路 next 安装.
IIS 附带了很多功能 module, 而大部分 module 都被 asp.net core 替代了, 比如 static file 等.
web application 可以通过 web config 移除这些 IIS module. 大家依据自己的项目调整吧.
这是我的 web config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<!-- for debug -->
<!-- <aspNetCore processPath="dotnet" arguments=".\Project.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" /> -->
<aspNetCore processPath="dotnet" arguments=".\Project.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
<modules>
<remove name="RewriteModule" />
<remove name="AspNetCoreModule" />
<!-- <remove name="RequestFilteringModule" /> -->
<remove name="iisnode" />
<!-- <remove name="ProtocolSupportModule" /> -->
<!-- <remove name="IsapiModule" /> -->
<remove name="IpRestrictionModule" />
<!-- <remove name="IsapiFilterModule" /> -->
<remove name="HttpRedirectionModule" />
<remove name="DynamicIpRestrictionModule" />
<!-- <remove name="DirectoryListingModule" /> -->
<!-- <remove name="DefaultDocumentModule" /> -->
<remove name="CorsModule" />
<!-- <remove name="ConfigurationValidationModule" /> -->
<remove name="ApplicationInitializationModule" />
<remove name="WebSocketModule" />
<remove name="AnonymousIdentification" />
<remove name="DefaultAuthentication" />
<remove name="FileAuthorization" />
<remove name="FormsAuthentication" />
<remove name="Profile" />
<remove name="OutputCache" />
<remove name="UrlAuthorization" />
<remove name="RoleManager" />
<remove name="ScriptModule-4.0" />
<remove name="UrlMappingsModule" />
<remove name="UrlRoutingModule-4.0" />
<remove name="WindowsAuthentication" />
<remove name="Session" />
<!-- <remove name="StaticFileModule" /> -->
<!-- <remove name="StaticCompressionModule" /> -->
</modules>
<!-- for debug -->
<!-- <httpErrors errorMode="Detailed" /> -->
<httpErrors errorMode="DetailedLocalOnly" />
</system.webServer>
</location>
</configuration>
<!--ProjectGuid: 3a959090-ed3e-49e4-b27a-4f580feb1d39--> <!-- sometime odata 需要很长的 query -->
<!-- <security>
<requestFiltering>
<requestLimits maxQueryString="8192" />
</requestFiltering>
</security> --> <!-- 以前有放这个, 不知道还需要吗, 留着先 -->
<!-- <urlCompression doStaticCompression="false" /> -->
安装 .NET
到官网下载 Hosting Bundle

一路 next 安装
Setup Web App Razor Page + EF Core
git clone https://github.com/keatkeat87/cnblogs-azure-get-started
git checkout 5ef29baef0cb76c0d0daff66d7dad93b6f7c257b
dotnet publish AzureGetStarted.csproj -o C:\keatkeat\projects\release
更新 2022-01-15:
不小心在这篇文章里看到 connect SQL Server by IP port 的讯息

直觉告诉我, SQL 和 Web 都在一台 VM, 最好是不要搞 IP port 去访问, 应该直接用名字.
所以 connection string 应该要改成 Server=JBReviews-VM;Database=JBReviews;User Id=JBReviews.
然后继续把文档 copy paste 去 VM
打开 IIS create Website, binding to 刚才的 folder.

提醒: www 和 non-www 都要 binding 哦
打开 folder 写权限, 让 web app 可以写入文件

数据库我的做法是, 把本地的 database backup 然后 restore to VM, 再创建一个 login account as the database owner.
Point domain DNS
Azure 有卖 DNS service, 如果是买 Azure 的就把 domain 的 Name server point to Azure, 然后到 Azure 的 DNS 写入 record, point to VM IP.
如果不是 Azure DNS, 那就去 hosting 调. 我是用 hosting 的 DNS, 这里就不多介绍了.

如果要马上测试, 可以 cmd run ipconfig/flushdns, 或者提早把 TTL set 成很小, 比如 3600 seconds
安装 Certify The Web
装完全部就可以访问了.
Azure 入门系列 (第三篇 Publish Web Application to VM)的更多相关文章
- Azure Front Door(三)启用 Web Application Firewall (WAF) 保护Web 应用程序,拒绝恶意攻击
一,引言 上一篇我们利用 Azure Front Door 为后端 VM 部署提供流量的负载均衡.因为是演示实例,也没有实际的后端实例代码,只有一个 "Index.html" 的静 ...
- 微软云平台windows azure入门系列八课程
微软云平台windows azure入门系列八课程: Windows Azure入门教学系列 (一): 创建第一个WebRole程序与部署 Windows Azure入门教学系列 (二): 创建第一个 ...
- 爬虫入门系列(三):用 requests 构建知乎 API
爬虫入门系列目录: 爬虫入门系列(一):快速理解HTTP协议 爬虫入门系列(二):优雅的HTTP库requests 爬虫入门系列(三):用 requests 构建知乎 API 在爬虫系列文章 优雅的H ...
- Webpack系列-第三篇流程杂记
系列文章 Webpack系列-第一篇基础杂记 Webpack系列-第二篇插件机制杂记 Webpack系列-第三篇流程杂记 前言 本文章个人理解, 只是为了理清webpack流程, 没有关注内部过多细节 ...
- javascript面向对象系列第三篇——实现继承的3种形式
× 目录 [1]原型继承 [2]伪类继承 [3]组合继承 前面的话 学习如何创建对象是理解面向对象编程的第一步,第二步是理解继承.本文是javascript面向对象系列第三篇——实现继承的3种形式 [ ...
- 深入理解javascript函数系列第三篇——属性和方法
× 目录 [1]属性 [2]方法 前面的话 函数是javascript中的特殊的对象,可以拥有属性和方法,就像普通的对象拥有属性和方法一样.甚至可以用Function()构造函数来创建新的函数对象.本 ...
- 深入理解javascript作用域系列第三篇——声明提升(hoisting)
× 目录 [1]变量 [2]函数 [3]优先 前面的话 一般认为,javascript代码在执行时是由上到下一行一行执行的.但实际上这并不完全正确,主要是因为声明提升的存在.本文是深入理解javasc ...
- Windows Azure 入门系列课程Windows Azure 入门系列课程
Windows Azure 入门系列课程 https://www.microsoft.com/china/msdn/events/webcasts/shared/webcast/NewSeries/A ...
- Cordova入门系列(三)Cordova插件调用 转发 https://www.cnblogs.com/lishuxue/p/6018416.html
Cordova入门系列(三)Cordova插件调用 版权声明:本文为博主原创文章,转载请注明出处 上一章我们介绍了cordova android项目是如何运行的,这一章我们介绍cordova的核心 ...
- 深入理解javascript作用域系列第三篇
前面的话 一般认为,javascript代码在执行时是由上到下一行一行执行的.但实际上这并不完全正确,主要是因为声明提升的存在.本文是深入理解javascript作用域系列第三篇——声明提升(hois ...
随机推荐
- 靶机练习: y0usef
靶机: y0usef 准备工作 靶机地址: https://download.vulnhub.com/y0usef/y0usef.ova MD5 校验:28c5d869b003be94b2d8ab4b ...
- MFC--教你如何使用画刷(2)
接下来我们用另外一个类CClientDC来实现我们的画线功能. CClientDC是由CDC派生出来的一个类,在函数构造的时候就会去调用GetDC来获得一个句柄,而在析构的时候便调用ReleaseDC ...
- java面试一日一题:讲下mysql中的锁
问题:请讲下在mysql中的锁 分析:该问题主要考察对中锁的掌握,主要考察的是读.写锁.行锁.间隙锁.next-key,其他还有表锁.意向锁 回答要点: 主要从以下几点去考虑, 1.mysql中的锁有 ...
- 【工具】SpringBoot项目如何查看某个maven依赖是否存在以及依赖链路
当我在SpringBoot项目中想加个依赖,但是不确定现有依赖的依赖的依赖.....有没有添加过这个依赖,怎么办呢?如果添加过了但是不知道我需要的这个依赖属于哪个依赖的下面,怎么查呢? IDEA中提供 ...
- 自写Json转换工具
前面写了简单的API测试工具ApiTools,返回的json有时需要做很多转换,于是开发了这个工具. 功能包括 1.json字符串转为表格,可以直观的展示,也可以复制,并支持转换后的表格点击列头进行排 ...
- 自动化测试框架开发python selenium excel POM
自动化测试框架开发python selenium excel POM 本文主要是采用python selenium excel POM 做UI自动化测试 测试框架选用的是unittest 测试框架用的 ...
- 元学习的经典文献:S. Thrun - 1998 - LEARNING TO LEARN: INTRODUCTION AND OVERVIEW
地址: https://link.springer.com/chapter/10.1007/978-1-4615-5529-2_1
- 【转载】 TensorFlow - 框架实现中的三种 Graph图结构
原文地址: https://zhuanlan.zhihu.com/p/31308381 -------------------------------------------------------- ...
- 个人17年购入的HP 暗影2pro笔记本开机掉电,电池无法充电,无法开机
相关链接: https://www.cnblogs.com/devilmaycry812839668/p/15228316.html 机器问题: 1. 电池时而能充电时而不能充电,有时候使用7天后不能 ...
- 国产最好用的操作系统——deepin,为什么不适合生产环境
前几天看了罗永浩的视频,他推荐了一本Intel创始人的书,看了这本书后想到书中大谈Intel和Microsoft的合作才创建下了今天的PC世界.看到这我就有些不爽了,现在美国各种控制和制裁我们的芯片, ...