IIS 多站点使用相同的代码库

IIS Multi-Site using same code base

我设置了一个 Kentico CMS 来托管多个站点,我想知道在 IIS 中使用相同的代码库设置多个网站是否是一个好的做法?我在 Windows 2012 R2

上使用 IIS 8

切尔,

我不认为让多个 IIS 应用程序指向一个代码库是个好主意。作为正常处理的一部分,Kentico 将 add/update/delete 您的应用程序文件夹中的多个文件。由于文件权限和访问权限,让多个 IIS 应用程序对文件系统上的同一文件夹执行此操作会带来复杂性和错误。

您可以通过几种方式设置您的解决方案,具体取决于您希望如何管理您的应用程序。

  1. 单个 IIS 应用程序/主机 Headers

在这种情况下,您将拥有一个 IIS 应用程序/文件夹。所有站点都将从相同的代码库交付。所有流量都将重定向到同一个 IP。在您的 IIS 配置中,您将为每个要发送到站点的 URL 使用主机 headers。在 Kentico 中,您将拥有要服务器的每个站点的许可证/域别名。

优点

此设置将为您提供一个代码库来管理您的应用程序。这可以大大简化您的维护和热修复。

缺点

如果您出于任何原因必须重新启动任何网站,您的所有网站都将立即关闭。

  1. 每个站点的单独代码库/IIS 应用程序

在此设置中,您将为要交付的每个站点复制代码库。您将为每个代码库创建一个 IIS 应用程序,并针对适当的 URL 配置。每个域都将定向到适当的 IIS 应用程序。

优点

可以隔离您的应用程序。可以为每个应用提供使用不同 .NET 框架/配置的能力。

缺点

要维护的几个代码库。对所有站点的更新需要跨所有代码库复制代码。

就个人而言,如果您的所有站点都在同一个 .NET 框架上,我会推荐选项 1,并且如果必须重新启动它们并不重要。如果其中任何一个是关键 LOB 应用程序,您可以考虑将该应用程序分支到它自己的 IIS 应用程序池/代码库。