因此,不确定这是堆栈溢出还是服务器故障问题。如果我有一个要部署到生产环境中的.NET网站,那么这样做的最佳方法是什么。我应该将其打包为MSI并安装吗?使用nant向上推送所需的文件。只是使用Beyond Compare通过FTP上传文件?
您如何部署生产代码?这是我在这里查看的Windows特定情况。
因此,不确定这是堆栈溢出还是服务器故障问题。如果我有一个要部署到生产环境中的.NET网站,那么这样做的最佳方法是什么。我应该将其打包为MSI并安装吗?使用nant向上推送所需的文件。只是使用Beyond Compare通过FTP上传文件?
您如何部署生产代码?这是我在这里查看的Windows特定情况。
Answers:
IIS支持xcopy部署,因此除非您有特殊要求,否则只需要复制文件即可。
一种方法是使用ROBOCOPY将新文件复制到服务器的简单脚本。
如果站点很大并且花费的时间太长,请使用版本控制系统。我喜欢Mercurial来达到这个目的,尽管您必须注意版本控制系统的配置文件不要最终公开。然后,部署只需提交更改,然后在服务器上签出最新版本即可。除了提高效率外,这还可以进行快速回滚(如果您标记了最新的良好版本),以防您的最新和最高级出现showstopper错误。
为了最大程度地减少停机时间,您可以让脚本将文件复制到新目录,然后快速重命名目录,或者更改IIS指向新目录的位置。
考虑使用Microsoft 的Web部署工具。它专门设计用于帮助将Web应用程序和对这些Web应用程序的更新部署到生产IIS 6和7 Web服务器,并且比MSI(Windows Installer)IMHO做得更好。
通常,您可以通过在某个地方设置“黄金主”站点来使用它,然后告诉该工具从那里打包更改。然后,它将查看要部署的目标服务器,并进行必要的更改以使其看起来像金牌主服务器(这对于后续更新很有用)。如果要部署到多个Web服务器(即服务器场),并且它不仅支持文件部署,还支持部署(它还可以处理更改注册表,部署证书,SQL数据库等),该功能特别有用。
我通过建议持续集成服务器从您的源代码控制系统中提取更改来进一步满足Joel的答案。然后它将构建项目。然后将其输出复制到新文件夹。然后,您可以进行一些快速的配置更改(web.config和app.config)。瞧,准备进行Xcopy!
我在以前的雇主那里所做的工作,基本上是一个拍卖/电子商务网站,在该网站上我们不能允许大量的停机时间:
作为Web开发人员,要做很多有趣的事情。但这是我工作中最关键的部分。