所以,不知道这是堆栈溢出还是服务器故障问题。 如果我有一个.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
我曾经在我的前雇主那里做过,那里基本上是一个拍卖/电子商务网站,我们不能允许很多停机时间:
作为一个Web开发人员,有很多有趣的事情要做。 但这是我工作中最关键的部分。
哦,jeeez,在工作中,我们有一个完整的团队。 他们有一个内部工具,将服务器从集群/服务器场中取出,发布这些文件,运行NUnits,并将其添加回集群/服务器场。 他们为16个服务器中的每一个都这样做。 这需要几个小时。 我们其他人甚至没有“环顾四周”。
对于我个人的项目,我从VS2005直接发布到我的networking服务器。 有点不太严格的安全。