.NET Core实战项目之CMS 第十七章 CMS网站系统的部署

news/2024/5/8 11:58:01/文章来源:https://blog.csdn.net/weixin_30505485/article/details/98675101
.NET Core实战项目之CMS 第十七章 CMS网站系统的部署
原文:.NET Core实战项目之CMS 第十七章 CMS网站系统的部署

目前我们的.NET Core实战项目之CMS系列教程基本走到尾声了,通过这一系列的学习你应该能够轻松应对.NET Core的日常开发了!当然这个CMS系统的一些逻辑处理还需要优化,如没有引入日志组件以及缓存功能,权限目前只支持控制到菜单,却没有控制到具体的功能(其实这块只是苦于样式不会处理,不然的话也会把功能加上),不过话又说回来,这些都是次要的,后期有时间慢慢补上吧,因为我开这个系列的初衷也是对大家入门.NET Core学习有所帮助!这一章我们将一起部署我们的一路开发过来的网站。如果你觉得文中有任何不妥的地方还请留言或者加入DotNetCore实战千人交流群637326624跟大伙进行交流讨论吧!

本文已收录至《.NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划》
作者:依乐祝
原文地址:https://www.cnblogs.com/yilezhu/p/10366679.html

写在前面

既然系统开发好了,那么肯定是要进行部署了,作为一名.NET Core研发人员如果你不会部署自己的应用的话,明显不是一个合格的程序员。我们知道如果要进行.NET Core的开发的话就需要安装.Net Core SDK的,如果你仅仅是在服务器上进行.NET Core的部署的话,只需要安装Net Core Runtime即可。
对于SDK以及Runtime的下载你可以点击这里进行下载。

Asp.Net Core 的部署方式

下面我带着大家一起总结下Asp.Net Core的几种部署方式,平时我们使用windows服务器比较多,所以都是iis直接部署的,但是Asp.Net Core开发的程序不仅仅能部署在windows系统的iis上,它还可以有很多其他的部署方式,下面我就为你一一梳理下,当然这里参考了园子里面“幻天芒”的一篇文章,文章末尾我会给出文章链接。

控制台直接运行

Asp.Net Core 程序在发布后,会产生一个入口 dll 文件,要运行该程序,只需要通过 dotnet 命令执行该 dll 文件即可。所以,第一种方式就是直接找到 dll 文件,并使用 dotnet 命令来运行。(你说 dotnet 命令哪来的?安装了 Runtime 就有了。)当然这里你还可以在运行的时候指定端口号

# 进行控制台执行dotnet Czar.Cms.Admin.dll --urls=http://localhost:8099

运行结果如下图所示:

1549967609348

IIS部署

用 .Net Framework 开发的应用,大家都比较熟悉用 IIS 来部署。那 .Net Core 呢?虽然两者的运行模式并不相同,但微软为了减少迁移难度,自然也提供了用 IIS 的部署方法。

与 Asp.Net 不同,ASP.NET Core 不再是由 IIS 工作进程(w3wp.exe)托管,而是使用自托管 Web 服务器(Kestrel)运行,IIS 则是作为反向代理的角色转发请求到 Kestrel 不同端口的 ASP.NET Core 程序中,随后就将接收到的请求推送至中间件管道中去,处理完你的请求和相关业务逻辑之后再将 HTTP 响应数据重新回写到 IIS 中,最终转达到不同的客户端(浏览器,APP,客户端等)。

如果要使用 IIS 部署 Asp.Net Core 程序,步骤如下:

  1. 在托管系统上,创建一个文件夹以包含应用已发布的文件夹和文件。 目录结构主题中介绍了应用的部署布局。

  2. 在“IIS 管理器”中,打开“连接”面板中的服务器节点。 右键单击“站点”文件夹。 选择上下文菜单中的“添加网站”。

  3. 提供网站名称,并将物理路径设置为应用的部署文件夹。 提供“绑定”配置,并通过选择“确定”创建网站:

    在“添加网站”步骤中提供网站名称、物理路径和主机名。

    警告

    不应使用顶级通配符绑定(http://*:80/http://+:80)。 顶级通配符绑定可能会为应用带来安全漏洞。 此行为同时适用于强通配符和弱通配符。 使用显式主机名而不是通配符。 如果可控制整个父域(区别于易受攻击的 *.com),则子域通配符绑定(例如,*.mysub.com)不具有此安全风险。 有关详细信息,请参阅 rfc7230 第 5.4 条。

  4. 在服务器节点下,选择“应用程序池”。

  5. 右键单击站点的应用池,然后从上下文菜单中选择“基本设置”。

  6. 在“编辑应用程序池”窗口中,将“.NET CLR 版本”设置为“无托管代码”:

    将“.NET CLR 版本”设置为“无托管代码”。

    ASP.NET Core 在单独的进程中运行,并管理运行时。 ASP.NET Core 不依赖加载桌面 CLR。 将“.NET CLR 版本”设置为“无托管代码”为可选步骤。

  7. ASP.NET Core 2.2 或更高版本:对于使用进程内托管模型的 64 位 (x64) 独立部署,为 32 位 (x86) 进程禁用应用池。

    在 IIS 管理员的“应用程序池”的“操作”侧栏中,选择“设置应用程序池默认设置”或“高级设置”。 找到“启用 32 位应用程序”并将值设置为 False。 此设置不会影响针对进程外托管部署的应用。

  8. 确认进程模型标识拥有适当的权限。

    如果将应用池的默认标识(“进程模型” > “标识”)从 ApplicationPoolIdentity 更改为另一标识,请验证新标识拥有所需的权限,可访问应用的文件夹、数据库和其他所需资源。 例如,应用池需要对文件夹的读取和写入权限,以便应用在其中读取和写入文件。

了解更多,请参考:IIS 部署.Net Core 应用

目前我们采用的方式就是iis进行部署。

部署为 Windows Service

通过 Windows Service的部署方式,我们能够解决上面控制台直接运行部署的开机启动和持久运行问题,也能避开 iis部署 中的性能损失问题。具体如何做呢?如下提供一种方式(当然,也可以用其他方式来部署 Windows Service):

  1. 借助 nssm 来管理 Windows Service,Nssm,用法,请参考:https://nssm.cc/usage

  2. 配置 Service 开机启动。

  3. 安装nssm,然后切换到nssm的安装路径,打开控制台

  4. 运行如下的命令:nssm install <servicename> 从而打开nssm的安装界面如下图所示:

    img

  5. 就几个选项,很简单,大家安装英文意思进行配置即可。

优势:

  1. 高性能部署,稳定性好。
  2. 支持开机启动。

劣势:

  1. 仅能用于 Windows 服务器。
  2. 引入了一个外包依赖 NSSM。

Linux 部署

由于 .Net Core 天生支持跨平台,如果在廉价又稳定的 Linux 上部署 .Net Core 程序逐渐成为主流。对于 Linux 上的部署,和 Windows 上并没有什么区别。首先是安装 Runtime 环境,然后拷贝程序,并通过命令行运行。

再进一步,可以使用后台模式,让程序在后台运行。

更进一步,也可以效仿 Windows,把程序启动管理作为一个服务,来达到开机启动和灵活管理的目的。

Docker 部署

作为当前个人认为的最棒的 .Net Core 应用部署方式,建议大家都了解下。目前我们正在尝试进行Docker化,然后用K8S来进行管理。

首先,是 Docker 的基本使用:

  1. 编写 Dockerfile
  2. 使用 docker build 构建镜像
  3. 使用 docker run 创建容器并运行

好,我们来依次说明,对于 Docker 来说,需要先安装 Docker 环境。

接着,我们假设发布包路径如下:

root-folder/app/ # 发布包目录xxx.dll # 程序入口点 Dockerfile # Dockerfile文件

然后针对该程序,编写如下 Dockerfile:

# 根镜像
FROM microsoft/dotnet:2.2-runtime# 拷贝程序发布包
COPY app /app# 设置工作目录
WORKDIR /app# 导出的端口
EXPOST 80# 程序运行命令
CMD ["dotnet", "xxx.dll"]

接下来,通过在 root-folder 中执行 docker build -t xxx:0.0.1 . 来构建一个镜像。

接着,再通过 docker run -it -p 8000:80 --name xxx-demo xxx:0.0.1 来创建并运行容器。

这样,就可以通过 http://localhost:8000 来访问到你的应用程序了。

此处只是大概写下 Docker 部署的步骤,抛砖引玉。真正需要将其用于产线,还需要去学习下足够的 Docker 知识。

额外提一下,如何选择基础镜像

对于 .Net Core 来说,一般有如下几类基础镜像:

  • sdk -- 相信这个都比较容易理解,就是包含了 .Net Core SDK。
  • runtime -- 这个也相对容易理解,包含了.Net Core Runtime。
  • runtime-deps --这个就不是很好理解, runtime? deps? 什么意思呢?就是说,这个连 Runtime都不是全的,需要你在打包的时候,选择自寄宿模式,把Runtime也打进去。
    综上,我个人推荐大家选择 runtime 这类作为基础镜像。

总结

今天给大家介绍了asp.net core的几种部署方式希望对大家有所帮助,当然部分内容我没有写的很详细,是想留给大家以思考,动手尝试下!感谢大家的阅读!

posted on 2019-02-13 08:23 NET未来之路 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lonelyxmas/p/10367982.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_801680.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pageadmin网站制作 如何修改和管理网站模板

在使用pageadmin CMS 的同时&#xff0c;遇到问题可以参考官网帮助中心。1、网站模板目录地址/templates目录&#xff0c; 2、点击展开后&#xff0c;每个目录就是一个网站模板&#xff0c; 前端设计师制作的新版本都可以放到这个目录下&#xff0c;模板的开发请参考模板制作教…

IE打开https网站时,取消证书问题提示

上面介绍了&#xff0c;调用IE来打开对应的网页问题&#xff0c;但是在实际测试中&#xff0c;有些网站是采用https协议的&#xff0c;这时候IE浏览器会弹出如下窗口&#xff0c;一般手动选择后&#xff0c;才可进入登录界面&#xff0c;那么该如何解决呢&#xff1f; 1、点击【…

爬取彩票网站数据界面版

完整代码 import requests from lxml import etree import xlwt from pymongo import MongoClient from tkinter import *#设置浏览器的请求头&#xff0c;告诉服务器我们是从浏览器来的&#xff0c;作用是阻止被网站反爬 headers {User-Agent: Mozilla/5.0 (Windows NT 6.1; …

SEO关键词优化:如何理解被百度快速索引?

2019独角兽企业重金招聘Python工程师标准>>> 经常会有SEO人员讨论&#xff0c;为什么我的SEO关键词总是不被快速索引&#xff0c;而实际上这里主要指的是&#xff0c;针对特定关键词的核心内容&#xff0c;那么&#xff0c;它主要涉及如下两个指标&#xff1a; ①索…

阿里云快速搭建 WordPress 个人网站

创建服务器 登录轻量应用服务器控制台&#xff0c;点击页面右上方的 创建服务器。在弹出的页面上&#xff0c;为列出的各选项做出选择&#xff0c;可同时领取阿里云优惠劵 点击 立即购买。浏览订单详情&#xff0c;确认无误后&#xff0c;点击 去支付。点击 确认支付。点击 进入…

大型网站技术架构(七)网站的可扩展性架构

2019独角兽企业重金招聘Python工程师标准>>> 扩展性是指对现有系统影响最小的情况下&#xff0c;系统功能可持续扩展或提升的能力。 设计网站可扩展架构的核心思想是模块化&#xff0c;并在此基础上&#xff0c;降低模块间的耦合性&#xff0c;提供模块的复用性。模…

网站加入代码让网页以电脑端打开_网页上的文本不让你复制下载?老司机教你几招,轻松免费复制...

无论是在工作中还是在学习中&#xff0c;大家都会遇到网页上的文本无法复制粘贴的情况&#xff0c;然后只能硬着头皮将里面的内容一个个的用键盘敲出来&#xff0c;其实这些被限制的网页时可以复制的&#xff0c;今天就教你几招&#xff0c;让你轻松免费复制。一、手机端如果是…

如何在地图上显示图片和经纬度_如何在企业网站上调用百度地图?让用户清楚知道你的位置...

如何在企业网站上调用百度地图&#xff1f;基本上每个企业网站都会有联系方式展示给用户&#xff0c;但平常的联系方式就是留下地址、电话等联系方式&#xff0c;不够直观&#xff0c;我们这里讨论一种方法&#xff0c;让用户可以直接看到我们的企业在百度地图上的位置&#xf…

js 直接打开选择文件窗口_从建站到拿站 -- JS基础

喝酒喝到吐的是我&#xff0c;在家大门不出二门不迈的也是我&#xff0c;仗义疏财的是我&#xff0c;扣到几块钱也舍不得花的也是我&#xff0c;放肆到骚话满篇的是我&#xff0c;谨慎到沉默寡言的也是我&#xff0c;我自己都不知道自己是什么人。。。---- 网易云热评提示&…

python爬取新闻网站内容findall函数爬取_Python爬取新闻网标题、日期、点击量

最近接触Python爬虫&#xff0c;以爬取学校新闻网新闻标题、日期、点击量为例&#xff0c;记录一下工作进度目前&#xff0c;感觉Python爬虫的过程无非两步&#xff1a;Step1.获取网页url(利用Python库函数import urllib2)Step2.利用正则表达式对html中的字符串进行匹配、查找等…

网站设计php和python,源码:基于Python网站的设计与实现

无论您需要任何题目请直接联系客服索取系统演示资料&#xff01;咨询可赠送设计资料教程一份&#xff01;经多年积累&#xff0c;本店有java、jsp、php、、安卓、IOS、vb、net,vc、c#等设计上万套&#xff0c;本店保证所有设计可正常运行&#xff01;也可定做&#xff01;收藏管…

从哪些方面提升服务器性能优秀强大,网站服务器升级应该从哪些方面提升性能!...

网站服务器在使用运行一段时间之后&#xff0c;就需要考虑对服务器进行升级&#xff0c;一方面服务器升级能够更好满足企业对网站的使用需求&#xff0c;另一方面服务器在进行升级之后&#xff0c;用户在浏览网站时能够更加迅速&#xff0c;体验速度会更好。因此服务器升级也是…

企业网站 源码 服务邮箱:_口碑营销:惠州企业网站推广定制服务

口碑营销&#xff1a;惠州企业网站推广定制服务 qnmsptdb口碑营销&#xff1a;惠州企业网站推广定制服务 软文则是从软文推广衍生出来的&#xff0c;它的分类具体有推广类型的软文、那么软文的主要形式有哪些呢。的策略。一家的站方案&#xff0c;网页排名、关键词、整站都是重…

备案网站未正规绑定服务器,网站备案对收录到底有没有影响

不论是之前备案条件宽松的时候还是现在备案严格&#xff0c;总有很多新手站长有疑惑&#xff0c;网站备案这玩意对网站收录究竟有没有直接影响?近日一位圈内资深站长给出了自己的答案&#xff1a;做了几百个网站&#xff0c;直白讲网站备案跟网站收录是没有任何影响的!我知道&…

python登录app爬取数据_Python爬取网站上面的数据很简单,但是如何爬取APP上面的数据呢...

​ 前言 在我们在爬取手机APP上面的数据的时候&#xff0c;都会借助Fidder来爬取。今天就教大家如何爬取手机APP上面的数据。 很多人学习python&#xff0c;不知道从何学起。 很多人学习python&#xff0c;掌握了基本语法过后&#xff0c;不知道在哪里寻找案例上手。 很多已经…

url获取网站信息不包含网页源文件内的标签_大型门户网站常用的SEO优化思路!...

一般的网站SEO优化企业需要进行考虑的就是排名、流量、转化率&#xff0c;可是我们对于一个大型门户站的SEO优化则需要充分考虑到了很多事情&#xff0c;比如&#xff1a;网站系统架构、分类、路径、程序设计等等这些方面&#xff0c;所以小编觉得门户网站的SEO优化一定要提前做…

在网站底部放置备案号_艾孜尔江撰

直接将下方的备案号改为你自己的备案号即可。 <p style"background:none;height: 5%;position: fixed;bottom: 0px;width: 100%;text-align: center; "><img style"padding-top:2px;" src"/images/index/相应静态资源目录下的国徽图标.png&q…

Selenium手撕打字网站

在进行爬虫的时候&#xff0c;突发奇想&#xff0c;能不能用selenium进行打字网站的测试&#xff0c;说干就干 from selenium.webdriver import Firefox from selenium.webdriver.common.keys import Keys import time首先导入需要的库 web Firefox()实例化浏览器 web.get(…

服务器系统蓝屏进不去怎么办,蓝屏无法进入任何模式怎么办_网站服务器运行维护,蓝屏...

如何在mac上配置apache和php_网站服务器运行维护在mac上配置apache和php的方法是&#xff1a;1、查看系统预装的apache和php版本&#xff1b;2、修改apache配置文件&#xff1b;3、生成php配置文件&#xff1b;4、重启apache服务&#xff1b;5、测试运行php文件。蓝屏无法进入任…

cn域名注册十元_网站使用短域名会有哪些好处?

域名注册对于网站建设来说是必不可少的&#xff0c;许多公司会根据域名的长度来运营网站。然而经过长时间的研究&#xff0c;人们发现短的域名更有利于运营。下面简单说说网站使用短域名会有哪些好处?1、更容易记忆大脑的处理系统都避长就短&#xff0c;越简单的东西越容易记忆…