【问题标题】:Sandboxing website best practices?沙盒网站最佳实践?
【发布时间】:2010-11-10 09:00:57
【问题描述】:

我目前在一家几乎没有正式流程和一百万个 PHP 网站的网上商店工作,其中包括自定义 CMS 和购物车代码等棘手的东西。

我们正在努力改进。我正在推动 CVS/SVN。

我的问题是,沙盒网站工作的最佳实践是什么?我们在 LAMP 堆栈上。我们的一些网站已硬编码(或用户输入的链接)到当前域,因此设置不同的域(如 preview.mysite.com)会破坏指向 www.mysite.com 的链接。如果我们开始应用回归测试,也许域应该是统一的测试?这始终可以通过本地主机条目来完成。

因此,考虑到我们有很多网站,最好有一个进程始终在适当的沙盒中进行预览。想知道这将如何与 SVN/CVS 循环集成。

我只是在寻找行业最佳实践,因为我们正在努力实现这一目标。如果这意味着将站点克隆到额外的服务器上,那就这样吧。

【问题讨论】:

    标签: php svn sandbox


    【解决方案1】:

    关于硬编码(或用户输入)域名:您可以将域名添加到您的hosts file。这应该可以解决您在开发和预览期间的问题。您的浏览器将检索 www.mysite.com 的 IP,并在 hosts 文件中找到 127.0.0.1 或预览站点的 IP。棘手的部分是,仅通过查看浏览器中的 URL,您无法确定您是否正在查看生产站点。 (Firefox 的ShowIP addon 可以在这里为您提供帮助。)

    关于 CVS/SVN:我真的建议你选择 SVN。它并不比 CSV 更难使用,但有一些优点(例如可以重命名)。有关更多信息,请参见例如this question.

    至于在沙盒中进行预览,这就是我们所做的:我们在trunk(或分支上,但其余过程几乎相同)上进行大部分开发。一旦我们准备好向客户展示它,我们就会创建一个tag。此标签用于更新预览服务器。如果客户不满意,我们会在主干(或分支)上开发更多内容,创建新标签,使用标签更新预览等。一旦客户满意,我们就会使用在预览上运行的完全相同的标签来更新生产服务器。这样我们可以确保预览版和生产服务器具有相同的代码库。

    【讨论】:

      【解决方案2】:

      所以是的,您应该有第二台 STAGE 服务器。我所做的是将我的代码放入我的开发箱上的 CVS 中,并在我进行的过程中进行定期提交。当我准备将版本推送到“STAGE”服务器时,我会浏览我想要 STAGE 的文件并标记它们 STAGE:

      cvs标签-F STAGE

      然后我去 STAGE 服务器并使用 STAGE 标志进行更新以获取文件的 STAGE 版本:

      cvs up -r 阶段

      这也将这些文件上的粘性标签设置为“STAGE”,因此将来,当我在舞台服务器上进行更新时,我可以关闭 STAGE 标签:

      转正

      最后,当我在 STAGE 服务器上测试了我的代码后,我使用 rsync 将其滚动到生产服务器...

      我们有多个开发人员一起工作,因此保持稳定的 STAGE 版本可能会很棘手。在这种情况下,如果我只是对一两个文件进行了小改动,我只会将它们单独 scp 到生产服务器。..

      最后,为了确保我知道生产服务器上的内容,在我将一个或多个文件发送到生产服务器后,我将舞台服务器上的所有文件标记为 RELEASE,也标记为 RELEASE20090713 或任何当前日期是.. 这样我就可以移动快照,但如果需要的话,我可以得到时间。但请注意,这不会更新粘性标签,所以我的常规旧

      转正

      在舞台服务器上仍然可以获取最新的 STAGE 文件。

      现在在你的情况下,就硬编码的 URL 而言......你已经知道......糟糕糟糕......所以边走边修复它们......但你也许可以使用 apache URL 重写来重写用于与自定义 TCP 端口通信的 STAGE 上的 URL。

      如果您有像思科路由器这样的智能网络设备,您可以将其设置为对您的 IP 进行 PAT(端口地址转换)。端口 80 可以转发到您的常规生产网络服务器,端口 8080 可以转发到您的 STAGE 服务器(其端口 80)。然后您所做的就是让 apache 在您的 STAGE 服务器上进行 URL 重写并将 8080 附加到它看到的所有主机名。现在您的所有帖子和链接都将转到正确的 STAGE 服务器,并且您的 apache 配置也可以完全相同。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-10-17
        • 2011-06-09
        • 1970-01-01
        • 2011-01-30
        • 2011-07-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多