3

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

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

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

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

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

4

2 回答 2

1

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

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

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

于 2009-07-14T08:17:15.097 回答
1

所以是的,你应该有第二台 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 重写来重写 STAGE 上的 URL与自定义 TCP 端口通信。

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

于 2009-07-13T17:49:10.867 回答