Liao9144 / Blog

我的博客
1 stars 0 forks source link

Windows 服务器部署 ABP Core #5

Open Liao9144 opened 6 years ago

Liao9144 commented 6 years ago

环境

本地:Windows 10、SQL Server 2017 服务器:Windows Server 2008 R2、SQL Server 2008 R2 在这种环境下,本地运行一般是没有任何问题的,一旦发布到服务器上运行往往会出现一些问题,这篇文章的主要目的就是记录解决这些问题的方法和思路。

准备

模板下载:https://aspnetboilerplate.com/Templates

image

ASP.NET Core 项目:

image image

Vue 项目:

image image

ASP.NET Core 部署

  1. 打包发布,并上传到服务器

image image

  1. 下载安装 .NET Core SDK & .NET Core Runtime,安装完之后 IIS 的模块里会出现 AspNetCoreModule,最后重启系统

    与 ASP.NET 时代不同,ASP.NET Core 不再是由 IIS 工作进程(w3wp.exe)托管,而是使用自托管 Web服务器(Kestrel)运行,IIS 则是作为反向代理的角色转发请求到 Kestrel 不同端口的 ASP.NET Core 程序中,随后就将接收到的请求推送至中间件管道中去,处理完你的请求和相关业务逻辑之后再将 HTTP 响应数据重新回写到 IIS 中,最终转达到不同的客户端(浏览器,APP,客户端等)。而配置文件和过程都会由些许调整,中间最重要的角色便是 AspNetCoreModule,它是其中一个的 IIS 模块,请求进入到 IIS 之后便立即由它转发,并迅速重定向到 ASP.NET Core 项目中,所以这时候我们无需设置应用程序池来托管我们的代码,它只负责转发请求而已。部署之前要确保你的 IIS 上已经安装了 AspNetCoreModule 托管模块,如果没有的话,点击下载地址(https://www.microsoft.com/net/download)进行下载并安装。

image image image

  1. 数据库迁移,将” xxx.Migrator “(它的用处是在服务器端运行数据库迁移)设为启动项,以文件形式发布,将生成的” xxx.Migrator.xxx “文件上传到服务器上。在服务器端运行 cmd 命令,cd 到站点根目录,运行 dotnet xxx.Migrator.dll ,输入 y 确认迁移,成功后回车退出。

image image

  1. IIS 添加站点,修改应用程序池,选择“无托管代码”

image image

  1. 浏览网站,测试检查是否存在问题并修复(用 Chrome 浏览器查看错误信息,或者到站点的 logs 目录下查看错误信息)
    • 错误1:System.Data.SqlClient.SqlException (0x80131904): 用户 'IIS APPPOOL\WindowsPublishDemo_API' 登录失败。 这是一个应用程序权限问题,需要修改应用程序池标识 ApplicationPoolIdentity 改为对数据库有访问权限和网站文件有读写权限的 Windows 用户(这里需要确定这个 Windows 用户可以登录数据库,不行可以在数据库安全设置添加,当然你也可以将数据库连接字符改为数据库用户和密码访问,比如:sa),然后重启应用池,重新浏览网站。

image image

image image

image image

Vue 部署

  1. 修改 appconst.ts & url.ts 文件

image image

  1. 执行命令 npm run build,把生成的 dist 目录的文件上传到服务器,并添加 Vue 站点

image image image

  1. 浏览网站,测试检查是否存在问题并修复(用 Chrome 浏览器查看错误信息) ERR_ABORTED 404 (Not Found) 这个错误是这个路径找不到对应文件,对应的文件都在站点根目录里面了,修复这个问题首先创建 dist 目录,并把丢失的文件移至该目录下就可以了。

    image image image

wudi3121113 commented 5 years ago

总结的很棒 👍