【问题标题】:localhost + staging + production environments?本地主机+登台+生产环境?
【发布时间】:2023-03-25 16:08:01
【问题描述】:

我有一个网站说 www.livesite.com 目前正在运行。我一直在使用http://localhost 在我的本地计算机上开发该网站的新版本,然后使用 svn 将我的更改提交到 www.testsite.com,在那里我将在 livesite.com 服务器上但在另一个域下测试该站点(它的与实时站点相同的环境,但在不同的域下)。

现在我准备将新版本发布到 livesite.com。第一次做很容易,我可以从 testsite.com 复制并粘贴所有内容到 livesite.com(不确定这是最好的方法)。

我想将 testsite.com 保留为测试站点,我将在其中推送更新、测试它们并在满意后移至 livesite.com,但我不确定在新站点启动后如何执行此操作.. 我不知道不要认为复制粘贴整个目录是正确的做法,它会破坏 livesite.com 上当前用户的操作。

我还想在 testsite.com 上保留我的 svn 历史记录。使用 SVN 执行此操作的正确方法是什么?非常感谢!

【问题讨论】:

标签: php svn development-environment production-environment


【解决方案1】:

提到 Hudson 或 Weploy 的其他答案都很好。它们涵盖的问题比后面的要多。也就是说,以下内容可能就足够了。

如果你觉得这太过分了,这里是穷人用 SVN 做这件事的方式和一点创造性的系统管理。

将您的文档根目录设为符号链接,而不是实际目录。意思是你有这样的东西:

/var/www/myproject-1-0-0
/var/www/myproject-1-1-0
/var/www/myproject-1-1-1
/var/www/html -> myproject-1-1-1

这意味着您可以将代码签出到生产环境(例如 myproject-1-1-2),而不会覆盖所提供的内容。然后,您可以通过执行以下操作几乎立即切换代码库:

$ rm html && ln -s myproject-1-1-2 html

我进一步建议不要在生产箱上对您的后备箱进行 svn checkout/svn 导出。相反,请提前创建一个分支(将其命名为 myproject-X-Y-Z)。这样,如果您需要对生产代码进行一些非常紧张的调整,您可以将其提交回分支,并在火熄灭后将其合并回主干)

我经常这样做,而且效果很好。但是,它有一些主要缺点:

主要是,您必须自己处理数据库迁移或其他升级脚本。如果您有脚本(普通的旧 SQL 或其他更复杂的东西),您需要考虑如何最好地执行它们。希望只是一分钟的停机时间可能不是一个坏主意。您可以在 (/var/www/mainenance) 周围保留一个“维护站点”,并在需要时将符号链接指向那里片刻。

例如,这种方法不如 Weploy 酷,但对于相对较小的项目(在单个服务器上运行,具有不大的数据库),它通常足够好,而且非常简单。

【讨论】:

  • 我认为这将是目前最快和最简单的解决方案。谢谢
  • 你实际上想要为软链接做 unlink html 而不是 rm html
【解决方案2】:

我的回答会让事情变得有点复杂,但这里是:

对于这种类型的场景,我会使用 Hudson

Hudson 将允许您进行 自动部署 / 清除当前目录 / 从 svn 添加新 进程。然后,您可以担心开发,而不必担心从一个地方到另一个地方的杂耍和部署。

需要注意的是,您需要了解一点如何设置 Hudson 以及如何让 为您工作。

如何开始使用PHP for Hudson

我认为这应该会让你走上正轨,就像我说的那样做一些工作,但稍后会有回报。

【讨论】:

  • 我们在 Java 中使用 Hudson,我不知道它可以用于 PHP。一旦我有更多的时间,我会更详细地看一下它。谢谢
  • Hudson 是 Java 底层,但它不仅可以用于 Java 和 PHP 部署...
【解决方案3】:

如果只有服务器端代码更改,您可以简单地复制代码,一切都会好起来的。但即使在那里,你也必须考虑到人在交互过程中的可能性。如果客户端代码发生变化,尤其是当您大量使用 ajax 时,您将不得不让当前用户重新加载他们的页面。如果数据库也发生了变化,那么您必须确保在应用数据库更改脚本期间不会发生任何数据库事务。

在所有情况下,无论您是否使用任何持续集成工具,我相信在停机时间应用这些更改是最安全的。人们在他们的网站上贴上“测试版”标签的原因之一是,他们可以注销所有人并将他们全部关闭以应用更改,恕不另行通知。只要他们不经常这样做,他们也可以侥幸逃脱。完成测试版后,应用更改就变成了一种仪式,您需要提前几周开始宣布停机时间,然后有 30 分钟到几个小时的时间来应用所有更改。

对于诸如修补操作系统或系统软件中的安全漏洞、添加硬件等底层事情,如果有负载平衡,可以避免停机,并且补丁会被一一应用。

【讨论】:

  • 我见过很多网站都这样做,我想在我的网站的情况下,有几分钟的停机时间并不是那么糟糕。谢谢
猜你喜欢
  • 2013-08-20
  • 1970-01-01
  • 2011-06-12
  • 2012-03-12
  • 2015-05-10
  • 1970-01-01
  • 1970-01-01
  • 2019-03-12
  • 1970-01-01
相关资源
最近更新 更多