你如何做生产IIS网站depoys?

所以,不知道这是堆栈溢出还是服务器故障问题。 如果我有一个.NET网站,我想部署到生产环境,那么最好的方法是什么。 我应该把它打包成MSI和安装吗? 使用nant将所需的文件向上推。 只是使用超越比较FTP文件?

你如何部署生产代码? 这是我在这里看到的Windows特定情况。

IIS支持xcopy部署,只需要复制文件就可以了,除非你有特殊要求。

一种方法是使用ROBOCOPY将新文件复制到服务器的简单脚本。

如果网站很大,而且这个时间太长,请使用版本控制系统。 我喜欢Mercurial ,虽然你必须小心,版本控制系统的configuration文件不会最终被提供给公众。 然后部署就是提交更改,然后检查服务器上的最新版本。 除了高效率之外,这可以快速回滚(如果您标记了最新版本),以防万一您的最新和最大的问题出现showstopper错误。

为了最大限度地减less停机时间,可以让脚本将文件复制到新目录,然后快速重命名目录,或更改IIS指向新目录的位置。

考虑使用Microsoft的Web部署工具 。 它是专门devise来帮助部署Web应用程序和更新到这些Web应用程序生产IIS 6和7 Web服务器,它比MSI(Windows Installer),恕我直言,更好的工作任务。

通常情况下,你可以通过在某个地方build立一个“黄金大师”网站来使用它,然后告诉工具从那里收拾变化。 然后,它将查看目标服务器进行部署,并进行必要的更改,使其看起来像黄金主(这对后续更新有用)。 如果您要部署到多个Web服务器(即服务器场),并且它支持部署不仅仅是文件(它还可以处理registry更改,部署证书,SQL数据库等),这是特别有用的。

通过build议持续集成服务器从您的源代码pipe理系统获取您的更改,我会进一步解释Joel的回答。 然后它将build立这个项目。 然后让它xcopy构build的输出到一个新的文件夹。 然后你可以做一些快速的configuration更改(web.config和app.config)。 瞧,准备好Xcopy!

检查CruiseControl.NET

我曾经在我的前雇主那里做过,那里基本上是一个拍卖/电子商务网站,我们不能允许很多停机时间:

  • 以生成版本的压缩版本来部署生成服务器
  • 在具有生产数据库副本的登台服务器上进行testing,并且与生产软件具有相同版本的软件。 testing一切顺利。 如果不重新启动登台服务器的部署(但首先要恢复备份)。
  • 如果一切顺利:将生成服务器和数据库升级脚本复制到本地文件夹。 对数据库和ASP.NET文件进行特定的备份(以防出现问题)。 准备好所有东西,只需要点击回车来启动升级脚本和复制数据库文件(注意,我可以为此创build一个脚本)。 然后启动一切。 这通常是几秒钟的事情,用户不会注意到已经停机。

作为一个Web开发人员,有很多有趣的事情要做。 但这是我工作中最关键的部分。

哦,jeeez,在工作中,我们有一个完整的团队。 他们有一个内部工具,将服务器从集群/服务器场中取出,发布这些文件,运行NUnits,并将其添加回集群/服务器场。 他们为16个服务器中的每一个都这样做。 这需要几个小时。 我们其他人甚至没有“环顾四周”。

对于我个人的项目,我从VS2005直接发布到我的networking服务器。 有点不太严格的安全。