本系列

这个系列会介绍从 0 到 1 搭建一个 Web Application 的 Server. 间中还会带上一些真实开发常用的功能.

一共 6 篇

1. Virtual Machine (VM) 和 SQL Server

2. Backup & Recovery Disaster

3. Publish Web Application to VM (IIS, HTTPS) <-- 你在这里

4. Azure Key Vault

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

参考: 免费 SSL Certify The Web

装完全部就可以访问了.

Azure 入门系列 (第三篇 Publish Web Application to VM)的更多相关文章

  1. Azure Front Door(三)启用 Web Application Firewall (WAF) 保护Web 应用程序,拒绝恶意攻击

    一,引言 上一篇我们利用 Azure Front Door 为后端 VM 部署提供流量的负载均衡.因为是演示实例,也没有实际的后端实例代码,只有一个 "Index.html" 的静 ...

  2. 微软云平台windows azure入门系列八课程

    微软云平台windows azure入门系列八课程: Windows Azure入门教学系列 (一): 创建第一个WebRole程序与部署 Windows Azure入门教学系列 (二): 创建第一个 ...

  3. 爬虫入门系列(三):用 requests 构建知乎 API

    爬虫入门系列目录: 爬虫入门系列(一):快速理解HTTP协议 爬虫入门系列(二):优雅的HTTP库requests 爬虫入门系列(三):用 requests 构建知乎 API 在爬虫系列文章 优雅的H ...

  4. Webpack系列-第三篇流程杂记

    系列文章 Webpack系列-第一篇基础杂记 Webpack系列-第二篇插件机制杂记 Webpack系列-第三篇流程杂记 前言 本文章个人理解, 只是为了理清webpack流程, 没有关注内部过多细节 ...

  5. javascript面向对象系列第三篇——实现继承的3种形式

    × 目录 [1]原型继承 [2]伪类继承 [3]组合继承 前面的话 学习如何创建对象是理解面向对象编程的第一步,第二步是理解继承.本文是javascript面向对象系列第三篇——实现继承的3种形式 [ ...

  6. 深入理解javascript函数系列第三篇——属性和方法

    × 目录 [1]属性 [2]方法 前面的话 函数是javascript中的特殊的对象,可以拥有属性和方法,就像普通的对象拥有属性和方法一样.甚至可以用Function()构造函数来创建新的函数对象.本 ...

  7. 深入理解javascript作用域系列第三篇——声明提升(hoisting)

    × 目录 [1]变量 [2]函数 [3]优先 前面的话 一般认为,javascript代码在执行时是由上到下一行一行执行的.但实际上这并不完全正确,主要是因为声明提升的存在.本文是深入理解javasc ...

  8. Windows Azure 入门系列课程Windows Azure 入门系列课程

    Windows Azure 入门系列课程 https://www.microsoft.com/china/msdn/events/webcasts/shared/webcast/NewSeries/A ...

  9. Cordova入门系列(三)Cordova插件调用 转发 https://www.cnblogs.com/lishuxue/p/6018416.html

    Cordova入门系列(三)Cordova插件调用   版权声明:本文为博主原创文章,转载请注明出处 上一章我们介绍了cordova android项目是如何运行的,这一章我们介绍cordova的核心 ...

  10. 深入理解javascript作用域系列第三篇

    前面的话 一般认为,javascript代码在执行时是由上到下一行一行执行的.但实际上这并不完全正确,主要是因为声明提升的存在.本文是深入理解javascript作用域系列第三篇——声明提升(hois ...

随机推荐

  1. [oeasy]python0136_接收输入_input函数_字符串_str

    输入变量 回忆上次内容 上次研究了 一行赋值多个变量 a = b = 5 a, b = 7, 8   还研究了 标识符的惯用法 python使用的是 snake_case蛇形命名法 用下划线 分隔开小 ...

  2. oeasy教您玩转vim - 17 - # 向上向下

    向上向下 回忆上节课内容 和 f 相关的是跳到 向 前 跳到是 f 向 后 跳到是 F 和 t 相关的是贴靠 向 前 贴靠是 t 向 后 贴靠是 T 和 小写 相关的是 向前 向前 跳跃是 f 向前 ...

  3. [oeasy]教您玩转python - 0004 - 万行代码之梦

    ​ 继续运行 回忆上次内容 上次从1行代码进化到了2行代码 yy p粘贴剪贴板中的内容 将剪贴板中的代码粘贴9999次 9999p 真的实现了万行代码梦 是真·圆梦 没有撒谎的那种 不过圆梦之后多少有 ...

  4. oeasy教您玩转vim - 90 - # 语法定义syntax

    ​ 内容查找 grep 回忆 我们这次研究了一下配色方案 murphy虽然配色好看 但是对于java的支持并不好 我们对于murphy进行了修改 增加了String.StorageClass颜色的定义 ...

  5. [MAUI 项目实战] 笔记App:程序设计

    前言 有人说现在记事类app这么多,市场这么卷,为什么还想做一个笔记类App? 一来,去年小孩刚出生,需要一个可以记录喂奶时间的app,发现市面上没有一款app能够在两步内简单记录一个时间,可能iOS ...

  6. JavaScript 常用 Web APIs

    Web APIs Web APIs DOM 页面文档对象模型 DOM 树 获取元素 事件 监听事件 事件解绑 操作元素 样式属性操作 结点操作 结点关系 创建节点 DOM 事件流 事件对象 常用鼠标事 ...

  7. pycharm中可以运行脚本(只在控制台运行,Debugger不运行,设置的断点没用)但是不能debug脚本

    以前用的时候好好地,但是最近上班突然脚本就不能debug了,debug直接报错,如下所示 上网查过该有的原因: 1.在pycharm中两个地方设置成utf-8,页面右下角和File>settin ...

  8. 【Vue】MineData 地图接入

    一.文档资料: MineData开放平台: https://minedata.cn/md-platform/login/login MineData V2.1.0 接口文档: http://113.1 ...

  9. 家务机器人(人形机器人)—— Mobile ALOHA: Your Housekeeping Robot

    项目地址: https://mobile-aloha.github.io/ 演示视频地址: https://www.youtube.com/watch?v=HaaZ8ss-HP4 论文地址: http ...

  10. 2023年3月份至2024年3月份CCF会议情况——人工智能领域

    April 2, 2023:          https://2023.ecmlpkdd.org/submissions/key-dates-deadlines/ ECML-PKDD (Europe ...