【问题标题】:Deploying ASP.NET applications: Push vs. Pull?部署 ASP.NET 应用程序:推送与拉取?
【发布时间】:2009-09-17 19:19:57
【问题描述】:

如何部署 ASP.NET 应用程序?您是否使用 UNC 路径/映射驱动器将其推送到生产服务器? FTP? SFTP? SSH/SCP(通过安装的第 3 方应用程序)?还有什么?或者您是否使用源代码控制更新或其他机制从生产服务器中提取它?假设生产服务器在 Internet 上或在 DMZ 中,推送需要打开不安全的防火墙端口(用于 UNC 或 FTP),不是吗?

我正在努力巩固我的 ASP.NET 部署理念。我理想的一键式构建/部署过程将包括:MSBuild、Web 部署项目、CruiseControl.NET。但是,我仍然在纠结如何将这些比特实际传送到生产服务器。

在 Windows 和 *nix 平台上都花了一些时间后,我对 Windows 部署故事感到沮丧,因此很好奇其他人是如何做到这一点的。

【问题讨论】:

    标签: asp.net deployment web-deployment-project


    【解决方案1】:

    我使用 Cruisecontrol.net,对此非常满意。我有一个巡航控制调用的 nant 脚本:

    1. 从我们的 staging SVN 分支获取源代码
    2. 构建它
    3. 将文件复制到每个生产服务器
    4. 在 svn 的生产分支中创建一个标签,这样我们就有了推送内容的快照。

    效果很好!一年前我们以前都是手动完成的,我无法告诉你这有多好。有一个小的学习曲线和一些前期脚本编写。这可能需要几天时间,但最终您会节省更多时间。

    【讨论】:

    • 这是一种很棒的方法,也是我正在研究的一种方法,但我对您在第 3 步中为安全交付文件所做的工作特别感兴趣?
    • 嗯,这一切都发生在我们的防火墙内。如果您是从外部执行此操作,我敢打赌您可以编写 sftp 或 scp 脚本。
    • 没错,我希望有 sftp 或 scp 的实际经验(因为 Windows 服务器不能很好地支持这些)。
    【解决方案2】:

    这就是我们发布的方式:

    • 从 Visual Studio 发布到本地文件夹
    • 删除一些不需要的文件和文件夹(例如它无缘无故创建的空 Web 参考文件夹...)
    • 邮编
    • 使用远程桌面复制到暂存服务器
    • 解压到站点的临时文件夹中(这会赋予文件正确的权限)
    • 将当前文件移至备份文件夹
    • 将新文件移至站点
    • 测试它是否可以在临时服务器上运行
    • 运行将文件复制到两个前端服务器的脚本(由托管公司设置)

    (但是,我们的一个前端服务器出现了一些硬件问题,因此作为短期(?)解决方案,我们不得不借用另一台服务器作为字体端服务器,并且脚本不会将文件复制到该服务器服务器。所以去年左右我不得不使用远程桌面登录实时服务器,手动复制文件,将当前文件移动到备份文件夹并移动新文件。)

    【讨论】:

    • 感谢分享。有趣的是看到远程桌面被用来复制文件。我希望将它自动化一点,但当自动化需要帮助或出现故障时,我肯定会记住这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-23
    • 1970-01-01
    • 2011-05-01
    • 2015-08-31
    相关资源
    最近更新 更多