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 ...
随机推荐
- [oeasy]python0133_[趣味拓展]颜文字_流石兄弟_表情文字_2ch_kaomoji
颜文字 回忆上次内容 上次我们了解unicode 里面有各种字体 甚至还有emoji emoji 本质上也是文字 按照unicode的方式编码 存储时按照utf-8的方式编码 显示时按照系统定义的 ...
- Spring Boot快速入门(二)搭建javaWeb项目
1.配置pom.xml 教程一创建的项目为maven项目,所以搭建一个Spring Boot的Web项目,先导入一下jar包:即在pom.xml以下依赖: 1 <dependencies> ...
- 关于android的图像视图的基本了解
最好直接复制进去而不是拖进去 图片直接导入最好用小写字母命名,数字与字母之间要用_,而且数字好像不可以连用 centerInside,fitCenter,center的区别: centerInside ...
- docker 6.1测试
https://www.cnblogs.com/xiugeng/p/10193333.html#_label1 1.设置重启策略 [root@docker ~]# cat /etc/docker/da ...
- SptingBoot同时接收文件和对象数据(接收表单数据)
emmm...虽然很简单,而且网上全是教程,但是自己做个笔记映像才会更深刻,还请各位前辈多多指教: @RequestMapping(value = "/eventPush", me ...
- 【Java】逗号拼接的取巧处理
需求如图: 这是表的关键处理数据,页面上的输入框要做分开展示,也就是要写业务逻辑来处理 逗号拼接的取巧处理,使用了List集合toString方法来实现,然后移除括号 final String emp ...
- 普通用户权限运行docker
docker安装后默认权限是管理员,在Ubuntu系统中需要使用sudo命令,但是很多时候docker的拉取操作都是写在脚步里面的,因此执行的时候十分的难搞,如果给脚本sudo权限后那么整个的环境路径 ...
- python的logging 模块的propagate设置
代码: import logging import sys LOG_FORMAT = '[%(asctime)s PID:%(process)d %(levelname)s %(filename)s ...
- BossPlayersCTF靶机笔记
BossPlayersCTF靶机 靶机概述 这是vulnhub上的一个简单的linux靶机,适合初级渗透测试人员,同时也告诉我们在渗透测试过程中要有耐心,要允许有兔子洞. 靶机整体思路: 主机端口探测 ...
- springboot认证方案一
这里给出集成oauth2后的简单认证方案架构图