【问题标题】:ASP.NET Core Deployment & MigrationASP.NET Core 部署和迁移
【发布时间】:2019-03-06 05:45:21
【问题描述】:

在过去三个月中,我使用 ASP.NET Core 2.1EF Core 2.1IdentityServer4 2 开发了一个复杂的 Web 应用程序。

我的应用程序由三个单独的 Web 应用程序组成:sts 项目、数据 api 和 mvc 前端。为了存储数据,有两个数据库:identity-db(用于存储用户、关系、配置等)和 data-db。他们都使用 ef 迁移的代码优先方法。

现在的问题是:
我如何(手动或自动)将此项目部署到 安装了 IIS 的 Windows Server? iis 网站必须是 配置为在没有子域的单个域下运行。

附加信息:我正在使用 Visual Studio 2017,这是一个自托管 GitLab(免费),使用 Windows Server 2016 作为构建机器。我并没有真正使用 GitLab 的 CI/CD 功能,因为我根本没有时间真正进入这个领域。据我所知,docker 也是一种选择。

提前感谢您的帮助。

【问题讨论】:

标签: iis asp.net-core identityserver4 ef-core-2.1


【解决方案1】:

由于这是一个非常笼统的问题,我将给出一个非常笼统的答案。

在您选择的 Windows 服务器中安装 IIS,或者如果您已经安装了 IIS,请继续下一步。

通过角色和功能安装所需的模块(确保您还安装了依赖项,例如 .Net 4.7 或其他)。

创建一个网站并为内容指定一个文件夹(最好在与系统驱动器不同的驱动器上)。 (这可以通过在 IIS > Sites 文件夹中右键单击来完成)

在内容文件夹中部署您的应用程序或站点。基本上将文件和文件夹复制到指定的文件夹。

继续配置 AppPool、运行 appPool 的用户、绑定(主要是主机名和端口,如果需要,还包括 https 绑定和证书)。

配置身份验证和授权。如果您网络中的人将使用他们通常的 AD 帐户登录应用程序,则基本上选择 Windows 身份验证。否则,例如,您可以匿名。如果您想限制对某些 AD 组或用户的访问,请使用授权规则。

确保运行应用程序池的用户对内容文件夹具有权限,如果使用 Windows 身份验证,机器用户也需要那里的权限(至少读取)。还要检查您是否需要文件夹的 IIS_IUSRS 权限(如果使用 AppPoolIdentity 运行池)

尝试该站点,看看它是否抛出任何 HTTP 状态代码并从那里继续。

对其他 2 个站点执行相同操作。

如果任何应用程序具有连接字符串,您将需要服务器上相应的数据库驱动程序。在设置驱动程序和连接字符串后,对 DB 连接进行故障排除基本上是 telnet 和 FW 规则。

您可能希望在 IIS 中“转换为应用程序”,但这是您的选择,AFAIK 取决于代码。

基本上就是这样,我知道它不是很精确,但至少你有一些提示。

【讨论】:

  • 缺少几件事:如果您需要访问数据库,则需要将 AppPool 作为用户添加到数据库。使用 IIS APPPOOL\<name> 的确切用户名搜索 AD 对象将不起作用,并且您不会在对象浏览器中找到它。其次,如果您希望能够使用 WebDeploy '发布到 IIS',则必须从 WMI Installer 下载 WebDeploy(您还可能需要添加 windows 功能 WMI Installer)
  • 这将使您轻松进行手动发布。如果你想要自动发布,你会遇到更多的开销,你最好在 Azure 中创建一个 CI/CD 管道。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-05-11
  • 2018-11-21
  • 2021-11-22
  • 2021-06-04
  • 1970-01-01
  • 2018-08-18
  • 2016-07-16
相关资源
最近更新 更多