第 10 章 部署

10.1 部署到 IIS

ASP.NET Core 应用程序支持部署到 IIS 中,之后它将作为应用程序的反向代理服务器和负载均衡器,向应用程序中转传入的 HTTP 请求

默认情况下,ASP.NET Core 项目的 Program 类使用如下方式创建 WebHost

public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});

CreateDefaultBuilder 方法将会调用 UseIIS 方法和 UseIISIntergration 方法,分别用于 IIS 进程内托管方式以及 IIS 进程外托管方式

无论使用哪一种部署方式,都应该先发布应用

发布 ASP.NET Core 应用程序有两种方式,分别是使用 Visual Studio 中的发布向导以及使用 .NET Core CLI 命令

首先通过发布向导发布到指定文件夹,接着配置 IIS,需要确保当前计算机已经安装了 IIS 以及 IIS 管理控制台,完成配置之后访问网站,将会打开 Swagger 文档页面,说明网站已经正常运行

目前,应用程序进能够通过 HTTP 方式访问,要使它在 IIS 中支持 HTTPS,还需要进行一些配置,包含证书设置、HTTPS 绑定和 HTTPS 重定向

当使用 HTTP 协议访问时,IIS 并不会进行 HTTPS 重定向,为了支持这一功能,需要安装“URL 重写”工具

10.2 部署到 Docker

Docker 是一个开源项目,目标是提供轻量级的操作系统虚拟化解决方案

由于容器使用沙箱机制,多个容器实例之间互不影响,因而可以将应用程序同时部署到多个容器中并同时运行

镜像与容器是 Docker 中两个非常重要的概念,简单来说,镜像是用于创建容器的模板,Docker 容器则是通过镜像创建的应用程序实例

Docker 支持多个平台,包含 Windows、Linux 和 macOS 系统,Windows 10 可以通过下载“Docker for Windows”使用

在 Windows 操作系统中安装并使用 Docker,应首先启用 Hyper-V 功能,Hyper-V 能够使 Linux 容器运行在 Windows 系统上,这是 Docker 安装与运行所必需的

对于 Windwos 系统,Docker 会安装 Linux 虚拟机,以便在 Windows 操作系统中能够运行并创建基于 Linux 的容器

Dokcer 提供了一系列用于操作镜像和容器的命令

操作 Docker 镜像的命令:

  • docker build 创建
  • docker images 列出镜像
  • docker pull 下载镜像
  • docker push 发布镜像
  • docker tag 指定标签
  • docker rmi 删除镜像

操作 Docker 容器的命令:

  • docker create 创建容器
  • docker start 启动容器
  • docker run 创建并启动
  • docker stop 停止
  • docker rm 删除
  • docker ps 列出正在运行的容器
  • docker logs 查看日志
  • docker exec 在运行的容器中执行命令或启动交互式会话

docker create 命令和 docker run 命令支持的参数

  • --name 指定容器名称
  • -p,--publish 将主机的端口映射到容器的端口
  • --rm 当容器停止运行后,使 Docker 自动删除该容器
  • -v,--volume 为容器中的指定目录提供数据卷
  • -e,-env 为容器提供环境变量
  • -i 以交互模式运行容器,通常与-t同时使用

Docker Compose 简介

当应用程序依赖多个服务时,如数据库和缓存等,要将其部署到容器中,也可以使用 Docker 命令以及 Docker 网络实现,但是会比较烦琐且极容易出错

为此,Docker 提供了 Docker Compose,也称为 Docker 容器编排,它是一个用来描述复杂的应用程序的工具,这些复杂应用通常需要创建多个容器,并使用 Docker 数据卷与 Docker 网络等;此外,它还可以编排并管理多个容器,能够简化部署复杂应用程序到容器的操作,且不易出错

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

欢迎转载、使用、重新发布,但务必保留文章署名 郑子铭 (包含链接: http://www.cnblogs.com/MingsonZheng/ ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。

如有任何疑问,请与我联系 (MingsonZheng@outlook.com) 。

《ASP.NET Core 与 RESTful API 开发实战》-- (第10章)-- 读书笔记的更多相关文章

  1. 使用ASP.NET Core构建RESTful API的技术指南

    译者荐语:利用周末的时间,本人拜读了长沙.NET技术社区翻译的技术标准<微软RESTFul API指南>,打算按照步骤写一个完整的教程,后来无意中看到了这篇文章,与我要写的主题有不少相似之 ...

  2. 4类Storage方案(AS开发实战第四章学习笔记)

    4.1 共享参数SharedPreferences SharedPreferences按照key-value对的方式把数据保存在配置文件中,该配置文件符合XML规范,文件路径是/data/data/应 ...

  3. 菜单Menu(AS开发实战第四章学习笔记)

    4.5 菜单Menu Android的菜单主要分两种,一种是选项菜单OptionMenu,通过按菜单键或点击事件触发,另一种是上下文菜单ContextMenu,通过长按事件触发.页面的布局文件放在re ...

  4. [Android]《Android艺术开发探索》第一章读书笔记

    1. 典型情况下生命周期分析 (1)一般情况下,当当前Activity从不可见重新变为可见状态时,onRestart方法就会被调用. (2)当用户打开新的Activity或者切换到桌面的时候,回调如下 ...

  5. 温故知新,使用ASP.NET Core创建Web API,永远第一次

    ASP.NET Core简介 ASP.NET Core是一个跨平台的高性能开源框架,用于生成启用云且连接Internet的新式应用. 使用ASP.NET Core,您可以: 生成Web应用和服务.物联 ...

  6. 快读《ASP.NET Core技术内幕与项目实战》WebApi3.1:WebApi最佳实践

    本节内容,涉及到6.1-6.6(P155-182),以WebApi说明为主.主要NuGet包:无 一.创建WebApi的最佳实践,综合了RPC和Restful两种风格的特点 1 //定义Person类 ...

  7. 零基础ASP.NET Core WebAPI团队协作开发

    零基础ASP.NET Core WebAPI团队协作开发 相信大家对“前后端分离”和“微服务”这两个词应该是耳熟能详了.网上也有很多介绍这方面的文章,写的都很好.我这里提这个是因为接下来我要分享的内容 ...

  8. ASP.NET Core WebApi构建API接口服务实战演练

    一.ASP.NET Core WebApi课程介绍 人生苦短,我用.NET Core!提到Api接口,一般会想到以前用到的WebService和WCF服务,这三个技术都是用来创建服务接口,只不过Web ...

  9. 从 0 使用 SpringBoot MyBatis MySQL Redis Elasticsearch打造企业级 RESTful API 项目实战

    大家好!这是一门付费视频课程.新课优惠价 699 元,折合每小时 9 元左右,需要朋友的联系爱学啊客服 QQ:3469271680:我们每课程是明码标价的,因为如果售价为现在的 2 倍,然后打 5 折 ...

  10. Asp.Net Core 5 REST API - Step by Step

    翻译自 Mohamad Lawand 2021年1月19日的文章 <Asp.Net Core 5 Rest API Step by Step> [1] 在本文中,我们将创建一个简单的 As ...

随机推荐

  1. 大数据(4)---HDFS工作机制简述

    一.name node管理元数据 元数据:hdfs的目录结构以及文件文件的块信息(块副本数量,存放位置等). Namenode把元数据存在内存中,以方便改动,同时也会在某个时间点上面将其写到磁盘上(f ...

  2. 报错:for..in loops iterate over the entire prototype chain, which is virtually never what you want.

    for..in loops iterate over the entire prototype chain, which is virtually never what you want. 意思是使用 ...

  3. Servlet系列:(HttpServletRequest、HttpServletResponse、ServletContext、ServletConfig)详解

    HttpServletRequest HttpServletRequest 对象:主要作用是用来接收客户端发送过来的请求信息,例如:请求的参数,发送的头信息等都属于客户端发来的信息,service() ...

  4. @Async异步操作及异步线程池

    本文为博主原创,转载请注明出处: @Async 用来实现异步请求操作,使用@Async 注解时,需要同时使用 @EnableAsync 注解,使用 @EnableAsync 注解用于开启异步请求. 如 ...

  5. SV 数据类型-3

    联合数组 在内存中分配的空间可以是不连续的 联合数组方法 数组的方法 数组使用推荐 结构体 枚举类型 字符串变量类型String 操作符

  6. C:\Keil_v5\ARM\ARMCC\include\stdint.h contains an incorrect path.

    1.问题 在使用Keil uvison5打开例程代码进行学习时,发现部分.h文件无法读取 2.解决方法 1.找到如图的设置按钮(小锤子) 2.根据自己所用的是C/C++还是ARM选择(我这里是C/C+ ...

  7. 你和时间管理大师,就差一个开源工具「GitHub 热点速览」

    在这个快节奏的生活中,我们努力地在平衡工作.生活和个人发展,但常常感到时间不够用.如何在繁忙的日程中找到一丝丝"喘息"的机会,这个名叫 cal.com 开源项目能让你更轻松地管理日 ...

  8. Laravel : Eloquent 新增

             public function ormCreate()     {         #  1. 使用模型新增 ->save()         /*               ...

  9. 基本操作Linux

    基本操作Linux 关机,重启# 关机 shutdown -h now # 重启 shutdown -r now 查看系统,CPU信息# 查看系统内核信息 uname -a # 查看系统内核版本 ca ...

  10. [转帖]tidb-lightning 逻辑模式导入

    https://docs.pingcap.com/zh/tidb/stable/tidb-lightning-configuration 本文档介绍如何编写逻辑导入模式的配置文件,如何进行性能调优等内 ...