如何部署ASP.Net Web应用程序?有哪些好的方式?

6
我们目前通过创建数据库并通过查询分析器运行SQL脚本来部署Web应用程序。然后,我们复制“发布网站”的输出,并在IIS中设置该网站。
我们看到了Visual Studio中的WebSetup,但是该部分似乎文档不够详细。例如,我们不清楚如何要求用户提供SQL服务器的IP和密码。我们也倾向于以http://example.com/project这样的文件夹形式而不是http://example.com这样的形式部署网站。
然后,出现了AJAX.Net未安装或其他某些补丁未应用的问题。
到目前为止,我们可以物理访问服务器。很快我们将会发货CDROM。手动干预和自动化之间的实际权衡是什么?
3个回答

7
避免使用Visual Studio部署,尽可能自动化。Web Deployment Projects和NAnt可以成为您的好帮手!
简要地说,我们的部署设置如下:
1. 我们使用RedGate SQL脚本差异来处理开发和生产数据库之间的差异。
2. 一个NAnt构建文件调用MSBUILD来构建Web Deployment项目(.wdproj),将生成的编译Web应用程序(以及SQL更改脚本)压缩成zip文件,然后上传到服务器。
3. 在服务器端,有另一个NAnt构建文件,它将应用程序脱机,备份数据库、备份网站,运行SQL更改脚本,解压新版本并上线应用程序。
第三步通常是手动运行(双击一次),但有时会安排在深夜。您甚至可以从CDROM中完全相同,或者编写一个漂亮的Windows Forms应用程序作为包装器。
如果您有兴趣,我们很乐意提供NAnt脚本的详细信息。

你能让我看看你的NAnt文件吗? - Davide Vosti
如果可能的话,请让我们查看NAnt文件。谢谢。 - codegasm

2
您尝试使用Web部署项目了吗?现在还支持VS 2008。请参见:Web Deployment 项目和VS 2008支持。

1
Web部署项目并不能帮助我同步数据库。不过,Web部署项目的好处是在构建过程中可以发现更多错误。 - Kinjal Dixit
感谢反馈。不管怎样,我会将这篇文章保留在这里。也许对其他人有用。 - Gulzar Nazim

0

我主要将ASP.NET应用程序部署到Linux服务器上。以下是我的标准工作流程:

  • 我使用源代码存储库(如Subversion)
  • 在服务器上,我有一个bash脚本,执行以下操作:
    • 检查最新的代码
    • 进行构建(创建DLL)
    • 将文件过滤为必需的内容(例如删除代码文件)
    • 备份数据库
    • 将文件部署到以当前日期命名的Web服务器目录中
    • 如果部署中包含新模式,则更新数据库
    • 使新安装成为默认安装,以便在下一次访问时提供服务

使用Subversion的命令行版本进行检出,使用xbuild(来自Mono项目的msbuild替代品)进行构建。大部分魔法都在ReleaseIt中完成。

在我的开发服务器上,我基本上实现了持续集成,但在生产方面,我实际上会通过SSH登录服务器,并手动运行脚本来启动部署。我的脚本被巧妙地称为“deploy”,这就是我在bash提示符下键入的内容。我非常有创意。不是吗?

在生产环境中,我必须输入“deploy”两次:一次用于检出、构建和部署到带日期的目录,另一次将该目录设置为默认实例。由于目录有日期,只需在相关目录中键入“deploy”,即可恢复到任何以前的部署。
初始部署需要几分钟时间,还原到以前版本只需要几秒钟。
对我来说这是一个很好的解决方案,仅依赖于三个命令行实用程序(svn、xbuild 和 releaseit)、数据库客户端、SSH 和 Bash。
我真的需要更新 CodePlex 上 ReleaseIt 的副本。

http://releaseit.codeplex.com/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接