本系列

这个系列会介绍从 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. CF1363A 题解

    洛谷链接&CF 链接 题目简述 共有 \(T\) 组数据. 对于每组数据,给定 \(n,x\) 和 \(n\) 个数,问是否可以从 \(n\) 个数中选 \(x\) 个使其和为奇数,可以输出 ...

  2. 英伟达又向开源迈了一步「GitHub 热点速览」

    大家是否还记得 2012 年,Linux 之父 Linus Torvalds 在一次活动中"愤怒"地表达了对英伟达闭源 Linux GPU 驱动的不满?这个场景曾是热门表情包,程序 ...

  3. WorPress基础之谷歌GSC与GA统计代码安装

    本篇文章讲介绍什么是GSC和GA以及如何安装. 什么是GSC GSC,全称为Google Search Console,由谷歌官方提供的网站管理工具,可帮助监控和维护网站在Google 搜索结果中的展 ...

  4. Python和RPA网页自动化-处理alert弹框

    以百度为例,分别使用python和RPA自动化完成以下步骤:设置->搜索设置->保存设置->确定 1.python代码如下 注意:[已经记录下您的使用偏好]弹框是无法捕获网页源代码的 ...

  5. 【Project】原生JavaWeb工程 02 登陆业务的流程(第一阶段样例)

    1.对用户信息的描述 首先用户有一些基本信息: 最简单的: 用户名称 + 用户密码 然后是用户状态,例如封号,注销,停用,等等 用户名称 + 用户密码 + 账号状态 接着为了防止脚本攻击,又产生了图形 ...

  6. 【Layui】02 图标 Icon

    官网下载地址: https://www.layui.com/ 学习参考: https://www.bilibili.com/video/BV1ct411n7SN [Layui的文件结构] 我们只需要这 ...

  7. 使用Transformer模型实现四足机器人控制—— 跨模态Transformer: LocoTransformer —— LEARNING VISION-GUIDED QUADRUPEDAL LOCOMOTION END-TO-END WITH CROSS-MODAL TRANSFORMERS

    论文: LEARNING VISION-GUIDED QUADRUPEDAL LOCOMOTION END-TO-END WITH CROSS-MODAL TRANSFORMERS 发表于ICLR20 ...

  8. 制约国产深度学习框架发展的根本原因 —— AI芯片的无法自主生产或量产

    秉着没事就胡言乱语的宗旨,这里在接着胡说八道一下. 国外的深度学习框架如TensorFlow.pytorch.Jax打的如火如荼,按照以往惯例我们是不应该去做自主研发软件系统的,毕竟硬件不在掌握之下, ...

  9. MindSpore 框架的官方预训练模型的加载 —— MindSpore / hub 的安装

    MindSpore计算框架提供了一个官方版本的预训练模型存储库,或者叫做官方版本的预训练模型中心库,那就是 MindSpore / hub . 首先我们需要明确概念: 第一个就是 mindspore_ ...

  10. vscode中使用ssh进行远程项目开发时无法连接远端服务器——如何解决

    找到vscode中的ssh扩展(Visual Studio Code Remote - SSH),然后卸载,再重新安装,即可解决. PS: 重新安装时需要较长时间的等待. ============== ...