What could be good ways to deploy ASP.Net Web Applications?
我们目前通过创建数据库和通过查询分析器运行SQL脚本来部署Web应用程序。然后我们从"发布网站"复制输出,并在IIS中设置该网站。
我们已经在Visual Studio中看到了websetup,但该部分的文档似乎很少。例如,我们不清楚如何向用户询问SQL Server的IP和密码。我们还倾向于将网站部署到http://example.com/project这样的文件夹中,而不仅仅是http://example.com。
然后,Ajax.net没有安装,或者某些补丁或其他补丁没有应用。
到目前为止,我们可以物理访问服务器。虽然我们很快就要装运光盘了。人工干预和自动化之间的实际权衡是什么?
避免Visual Studio部署,并尽可能实现自动化。网络部署项目和南特可以成为您的朋友!
简言之,我们的部署设置:
我们使用RedgateSQL编写开发人员和实时数据库之间的差异脚本。
一个nant构建文件,它调用msbuild来构建Web部署项目(.wdproj),压缩生成的编译Web应用程序(连同SQL更改脚本),然后将zip文件上载到服务器。
在服务器端,还有另一个nant构建文件,它使应用程序离线,备份数据库,备份网站。运行SQL更改脚本,解压缩新版本并使应用程序联机。
步骤3通常是"手动"运行(双击一次),但有时计划在深夜运行。你可以从光盘上做同样的事情,甚至写一个小的Windows窗体应用作为包装。
如果你感兴趣的话,很乐意提供南特剧本的细节。
您尝试过使用Web部署项目吗?现在也支持vs 2008。
我主要将ASP.NET应用程序部署到Linux服务器上。这是我的标准工作流程:
- 我使用源代码存储库(如Subversion)
- 在服务器上,我有一个bash脚本,它执行以下操作:
- 查看最新代码
- 执行生成(创建DLL)
- 将文件过滤到基本内容(例如删除代码文件)
- 备份数据库
- 将文件部署到名为当前日期的目录中的Web服务器
- 如果部署中包含新架构,则更新数据库
- 使新安装成为默认安装,以便下次点击时使用
签出是通过命令行版本的Subversion完成的,而构建是通过Xbuild完成的(msbuild的工作类似于mono项目)。大部分魔法都是在释放中完成的。
在我的dev服务器上,我基本上具有持续集成,但在生产方面,我实际上是通过ssh进入服务器,并通过运行脚本手动启动部署。我的脚本被巧妙地称为"deploy",所以这就是我在bash提示下键入的内容。我很有创造力。不是。
在生产环境中,我必须键入"deploy"两次:一次是签出、生成并部署到一个日期为的目录,另一次是将该目录设置为默认实例。由于目录是有日期的,所以只需在相关目录中键入'deploy',就可以恢复到以前的任何部署。
初始部署需要几分钟时间,恢复到以前的版本需要几秒钟时间。
对于我来说,这是一个很好的解决方案,它只依赖于三个命令行实用程序(SVN、Xbuild和Releaseit)、DB客户机、SSH和bash。
我真的需要在codeplex上更新releaseit的副本:
网址:http://releaseit.codeplex.com/