您如何生产IIS网站仓库?


15

因此,不确定这是堆栈溢出还是服务器故障问题。如果我有一个要部署到生产环境中的.NET网站,那么这样做的最佳方法是什么。我应该将其打包为MSI并安装吗?使用nant向上推送所需的文件。只是使用Beyond Compare通过FTP上传文件?

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

Answers:


15

IIS支持xcopy部署,因此除非您有特殊要求,否则只需要复制文件即可。

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

如果站点很大并且花费的时间太长,请使用版本控制系统。我喜欢Mercurial来达到这个目的,尽管您必须注意版本控制系统的配置文件不要最终公开。然后,部署只需提交更改,然后在服务器上签出最新版本即可。除了提高效率外,这还可以进行快速回滚(如果您标记了最新的良好版本),以防您的最新和最高级出现showstopper错误。

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


1
版本控制系统很吸引人,但是对于需要编译的网站来说,它可能效果不佳。当然,除非将编译版本保留在版本控制下。
乔纳森·沃特尼

1
我从没想过将源代码控制系统投入生产。有趣的肯定是必须保留大量额外的zip文件。
2009年

我一直在用Subversion来做。在Apache上,您将使用mod_rewrite来确保用户无法访问.svn目录。使用版本控制进行部署绝对是必经之路。
路加福音

13

考虑使用Microsoft 的Web部署工具。它专门设计用于帮助将Web应用程序和对这些Web应用程序的更新部署到生产IIS 6和7 Web服务器,并且比MSI(Windows Installer)IMHO做得更好。

通常,您可以通过在某个地方设置“黄金主”站点来使用它,然后告诉该工具从那里打包更改。然后,它将查看要部署的目标服务器,并进行必要的更改以使其看起来像金牌主服务器(这对于后续更新很有用)。如果要部署到多个Web服务器(即服务器场),并且它不仅支持文件部署,还支持部署(它还可以处理更改注册表,部署证书,SQL数据库等),该功能特别有用。


+无穷大 该工具是一个救命稻草,可以使整个部门(总督)腾出时间来处理更有趣的问题。
波特曼

4

我通过建议持续集成服务器从您的源代码控制系统中提取更改来进一步满足Joel的答案。然后它将构建项目。然后将其输出复制到新文件夹。然后,您可以进行一些快速的配置更改(web.config和app.config)。瞧,准备进行Xcopy!

看看CruiseControl.NET


3

我在以前的雇主那里所做的工作,基本上是一个拍卖/电子商务网站,在该网站上我们不能允许大量的停机时间:

  • 取得发行版/版本的压缩构建版本以部署在构建服务器上
  • 在具有生产数据库副本并且具有与生产软件相同版本的软件的登台服务器上对其进行测试。测试一切是否顺利。如果没有,请重新启动登台服务器的部署(但首先还原备份)。
  • 如果一切顺利:将构建和数据库升级脚本复制到生产服务器的本地文件夹中。对数据库和ASP.NET文件进行特定的备份(以防万一仍然出问题)。然后准备一切,以便我仅需单击Enter即可启动升级脚本并复制数据库文件(请注意,我可以为此创建脚本)。然后启动所有内容。通常只需几秒钟的时间,用户不会注意到停机时间。

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


1

哦,jeeez,在工作中,我们有整个团队。他们有一个内部工具,可以将服务器从群集/服务器场中取出,发布文件,运行NUnit,然后将其重新添加到群集/服务器场中。他们为16台服务器中的每台服务器执行此操作。需要几个小时。我们其余的人甚至没有“环顾四周”的权限。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.