目前,我们通过创建数据库并通过查询分析器运行 SQL 脚本来部署 Web 应用程序。然后我们复制“发布网站”的输出并在 IIS 中设置该网站。

我们已经在 Visual Studio 中看到了 WebSetup,但这部分似乎记录很少。例如,我们不清楚如何向用户询问SQL Server的IP和密码。我们也倾向于以这种方式部署网站,并将其放置在类似的文件夹下 http://example.com/project, ,而不仅仅是 http://example.com.

然后存在未安装 AJAX.Net 或未应用某些或其他补丁的问题。

到目前为止,我们可以物理访问服务器。很快我们就会推出 CDROM。手动干预和自动化之间的实际权衡是什么?

有帮助吗?

解决方案

避免 Visual Studio 部署,并尽可能实现自动化。Web 部署项目和 NAnt 可以成为您的朋友!

简而言之,我们的部署设置:

  1. 我们使用 RedGate SQL 来编写开发数据库和实时数据库之间的差异脚本。

  2. NAnt 构建文件调用 MSBUILD 来构建 Web 部署项目 (.wdproj),压缩生成的已编译 Web 应用程序(以及 SQL 更改脚本),然后将 zip 文件上传到服务器。

  3. 在服务器端,还有另一个 NAnt 构建文件,它使应用程序脱机、备份数据库、备份网站。运行 SQL 更改脚本,解压缩新版本并使应用程序联机。

步骤 3 通常“手动”运行(双击一次),但有时会安排在深夜。您可以从 CDROM 执行完全相同的操作,甚至可以编写一个相当小的 Windows 窗体应用程序作为包装器。

如果您有兴趣,我很乐意提供 NAnt 脚本的详细信息。

其他提示

你有没有尝试过使用 网络部署 项目?有支持 对比2008年 现在也..

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

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

签出是使用 Subversion 的命令行版本完成的,构建是使用 xbuild 完成的(msbuild 的工作方式与 Mono 项目类似)。大部分魔法都是在 ReleaseIt 中完成的。

在我的开发服务器上,我基本上进行了持续集成,但在生产方面,我实际上通过 SSH 连接到服务器并通过运行脚本手动启动部署。我的脚本被巧妙地称为“部署”,因此这就是我在 bash 提示符下键入的内容。我很有创意。不是。

在生产中,我必须输入“部署”两次:一次用于检出、构建和部署到指定的目录,一次用于使该目录成为默认实例。由于这些目录已过时,我只需在相关目录中键入“deploy”即可恢复到任何以前的部署。

初始部署需要几分钟,恢复到先前版本需要几秒钟。

这对我来说是一个很好的解决方案,仅依赖于三个命令行实用程序(svn、xbuild 和 releaseit)、数据库客户端、SSH 和 Bash。

我确实需要在某个时间更新 CodePlex 上的 ReleaseIt 副本:

http://releaseit.codeplex.com/

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top