asp.net core 项目从本地部署到远程云服务器

asp.net core 项目从本地部署到远程云服务器,第1张

asp.net core 项目从本地部署到远程云服务器

今天向大家详细介绍一下,如何将一个.net core项目部署到远程云服务器,我的服务器镜像为

window server 2019.

1.安装IIS

首先在服务器上安装IIS(我的是最新的iis10),我已经安装完毕,这个安装 *** 作比较简单,自行谷歌。

安装完成后会看到下面的界面:

2.安装web deploy程序

该程序的功能:

它可以让我们从Visual Studio中一键部署网站到IIS服务器,并且智能判断哪些文件是新增的,哪些是需要修改或删除的

有关介绍,请看这篇文章:Web Deploy这个IIS的迁移工具【图文】_一行学习_51CTO博客

Web Deploy 服务器安装设置与使用_Codec007的专栏-CSDN博客

Download Address:Download Web Deploy v3.6 from Official Microsoft Download Center

根据你的 *** 作系统,选择对应的版本安装即可。

安装完成后,在服务中会添加这个服务:

3.服务器端配置好IIS10,允许使用VS2019通过Web部署方式发布程序 

双击管理服务:先把服务停止,才能编辑.指定IP地址(内网IP)

默认情况下,Default web site所使用的端口为80,改掉给我们的新建网站使用。

新建一个web 站点:

这里主机名就是域名,需要进行注册申请。

简单做个介绍:

有时候我们会发现当我们访问一个IIS网站时,使用网址可以正常访问,但是使用IP却不行,这是什么原因呢?

     原来IIS可以使用一个IP地址和端口绑定多个网站,这些网站的IP地址与端口都一样,因此在客户端或浏览器中使用IP访问IIS会失败,因为单单根据IP地址IIS无法确定你要访问的具体是哪一个网站,此时必须使用主机名也就是网址(例如:www.blog.sina.com.cn)才能访问到相应的网站。其工作原理如下文所述。

    客户端或浏览器使用网址发起请求后,会首先到DNS中查找网址对应的IP地址,然后构建HTTP请求,并把网址赋值给HTTP Header的Host属性,最后把HTTP请求发送给目标IP。

    IIS收到HTTP请求后,首先根据IP地址,找打所有绑定到该IP和端口的站点,然后根据HTTP Header的Host属性从这些网站中查找对应的Host Header设置,找到后,把HTTP请求交给该站点处理。如果没找到相应的网站,则寻找这些站点中没有设置Host Header的站点,把HTTP请求交给它处理。最后IIS把处理完的信息再发送给客户端。

总结来说:我们申请到的域名,绑定到了当前服务器下的此站点(指定IP下的指定站点)

有关客户端请求,服务器的响应的具体工作原理,可以看看计算机网络相关知识:

这部分会涉及到DNS域名解析服务器.

添加网站部署所使用的User:计算机管理--->本地用户和组

将此User添加到Remote Desktop User组中:

将之前添加的webdeploy_user这个用户,授权可以管理 *** 作新建的网站.

为了有足够的 *** 作权限,我直接放开此用户可以 *** 作管理此网站对应的目录文件:

4.安装ASP.NET CORE run time以及sdk:

我的项目为3.1版本,选择你项目对应的版本就ok了,通常来说高版本兼容低版本吧.

Download .NET Core 3.1 (Linux, macOS, and Windows)

 安装完成之后查看IIS:

 

应用程序池,改为无托管代码:

 

这样的话,才能保证asp.net core项目的成功运行。

有关IIS的详细管理细节,会在以后做一个专题的介绍。

5.使用VS2019部署发布web api项目: 

项目右键--->发布:

 验证连接:出现下面的错误

 实际上我已经成功安装,我第一感觉就是防火墙或者某个指定端口没开放,果不其然.

Soluton Address:​​​​​​Web Deploy部署错误:未能连接到远程计算机,请确保在远程计算机上安装了 Web Deploy 并启动了所需的进程("Web Management Service") - 范斯 - 博客园

管理服务默认是用8172端口,要保证端口能够正常通过防火墙

腾讯云防火墙管理界面:开放此端口:

 然后再尝试:检验通过,保存,发布即可

 然后去服务器查看:

 由于只有一个网站,并且开放了80端口,直接通过ip地址/swagger,就可以直接访问到web api站点了。

 如果是实际项目中,肯定是将每个站点绑定到指定的域名上,通过域名去访问。

至此,整个iis站点的搭建和web 项目的完整部署就介绍到这了,

这种发布实际还是比较简单,但如果遇到多项目多分支项目的话,还是比较不太试用。现在比较推荐使用Jenkins做自动化部署项目,后期会把整个搭建过程和部署 *** 作分享出来

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5619121.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存