所以,不确定这是堆栈溢出问题还是服务器故障问题。如果我有一个想要部署到生产环境的 .NET 网站,那么最好的方法是什么。我应该将其打包为 MSI 并安装吗?使用 nant 将所需的文件向上推送。只需使用 Beyond Compare 将文件 FTP 上传?
您如何部署生产代码?这是我在此处查看的 Windows 特定案例。
所以,不确定这是堆栈溢出问题还是服务器故障问题。如果我有一个想要部署到生产环境的 .NET 网站,那么最好的方法是什么。我应该将其打包为 MSI 并安装吗?使用 nant 将所需的文件向上推送。只需使用 Beyond Compare 将文件 FTP 上传?
您如何部署生产代码?这是我在此处查看的 Windows 特定案例。
IIS 支持 xcopy 部署,因此您只需复制文件即可,除非您有特殊要求。
一种方法是使用ROBOCOPY将新文件复制到服务器的简单脚本。
如果站点很大并且花费的时间太长,请使用版本控制系统。为此,我喜欢Mercurial ,尽管您必须小心不要将版本控制系统的配置文件最终提供给公众。部署只需提交更改,然后检查服务器上的最新版本。除了高效之外,这还允许快速回滚(如果您标记了最后一个好的版本),以防您的最新和最伟大的错误出现。
为了最大限度地减少停机时间,您可以让脚本将文件复制到新目录,然后快速重命名目录,或更改 IIS 指向新目录的位置。
考虑使用 Microsoft 的Web 部署工具。它专门设计用于帮助将 Web 应用程序和这些 Web 应用程序的更新部署到生产 IIS 6 和 7 Web 服务器,并且它比 MSI(Windows Installer)、恕我直言做得更好。
通常,您通过在某处设置“金牌大师”站点然后告诉该工具从那里打包更改来使用它。然后它将查看目标服务器以进行部署并进行任何必要的更改以使其看起来像黄金主机(这对于后续更新很有用)。如果您要部署到多个 Web 服务器(即场),它特别有用,并且它不仅支持部署文件(它还可以处理进行注册表更改、部署证书、SQL 数据库等)。
我会通过建议持续集成服务器从源代码控制系统中获取您的更改来进一步回答 Joel 的回答。然后它将构建项目。然后让它 xcopy 构建的输出到一个新文件夹。然后,您可以进行一些快速的配置更改(web.config 和 app.config)。瞧,为 Xcopy 准备好了!
查看CruiseControl.NET
我在以前的雇主那里所做的,基本上是一个拍卖/电子商务网站,我们不允许有太多的停机时间:
作为 Web 开发人员,有很多有趣的事情要做。但这是我工作中最关键的部分。
哦,天哪,在工作中,我们有一个完整的团队来做这件事。他们有一个内部工具,可以将服务器从集群/农场中取出,发布文件,运行 NUnit,然后将其添加回集群/农场。他们为 16 台服务器中的每台服务器执行此操作。这需要几个小时。我们其他人甚至没有“环顾四周”。
对于我的个人项目,我从 VS2005 直接发布到我的网络服务器。Kinda的安全性不那么严格。