无需停机即可将应用程序的新版本部署到 IIS 应用程序

无需停机即可将应用程序的新版本部署到 IIS 应用程序

我有一个小型的 AngularJS Web 应用程序,它在内部网中的自助服务终端中运行。我的任务是进行不停机的部署,并以自动化的方式进行部署,可以通过 Web 界面进行远程控制。由于它是一个小型应用程序,我们没有负载平衡器或类似的设置。我考虑了两个选项,

选项1: 下载文件夹中的应用程序版本,并将虚拟目录的物理路径更改为新版本的文件夹路径,这可以使用 Microsoft.Web.Administration 库通过以下代码实现,

            ServerManager sm = new ServerManager();
            Site site = sm.Sites["Default Web Site"];            
            site.Applications[virtualDirectory].VirtualDirectories["/"].PhysicalPath = newPath;
            sm.CommitChanges();

在这种方法中,

  1. 这种转变多久会反映出来?
  2. 一些信息亭仍在使用旧版本的应用程序的可能性有多大?
  3. 在切换的短暂时间内是否可能出现停机?
  4. 在此期间对 IIS 发出的任何请求是否会返回错误?

选项 2:使用 IIS 的 URL 重写功能。基本上,我将以编程方式向应用程序的 web.config 添加新的重写规则,以重定向到不同的子文件夹,该子文件夹将是应用程序的较新版本。

在这种方法中,

  1. URL 重写规则多久会反映出来并且重写开始?
  2. 一些自助服务终端仍在使用旧版本的应用程序的可能性有多大
  3. 将重写规则添加到 web.config 的这段时间内,是否有可能出现停机?
  4. 在此期间对 IIS 发出的任何请求是否会返回错误?
  5. URL 重写会产生性能成本吗?

请帮帮我。这两种方法都不适合我的任务吗?还有其他替代方案可以满足这一要求吗?

答案1

MSDeploy 应该能够处理自动化和远程部署部分。如果您没有其他服务器或其他方式以自动化方式将应用程序流量发送到不同的虚拟目录,那么不停机就不是一个实际的要求。这就像说我有一辆汽车,但我希望能够在它在店里时继续驾驶它。如果您想让汽车在您的汽车在店里时继续行驶,您将需要另一辆汽车,无论是临时的还是其他的。

相关内容