如何在 Joomla 中使用源代码控制,同时允许用户继续在生产服务器上进行内容更改?

Posted

技术标签:

【中文标题】如何在 Joomla 中使用源代码控制,同时允许用户继续在生产服务器上进行内容更改?【英文标题】:How to use source control with Joomla while allowing users the ability to continue making content changes on the production server? 【发布时间】:2014-11-09 04:04:45 【问题描述】:

场景:

我的团队为我们的客户管理多个 Joomla 网站。在我们管理网站的开发/托管的同时,客户负责所有内容更新(创建文章、内容、上传图片等...)

我们在以下标准配置中运行这些网站

开发服务器 登台服务器 生产服务器

客户端将所有内容更新到生产服务器(每天)。另外两台服务器主要用于新的开发和测试。

我们目前正在使用 BitBucket 作为这些网站的 SVN(我们刚刚开始使用它)。目前与网站有关的所有文件都存储在 repo 中。

问题

根据我们当前的设置,如果开发人员对开发环境进行了更改,然后将该更改集推送到生产环境,我们最终会覆盖客户在生产环境中进行的所有内容更新。

我的问题

我们如何成功地利用源代码控制系统,并保持灵活性以允许我们的客户继续直接在生产服务器上进行更新,而无需强迫他们在开发、登台和生产上进行内容更改?

【问题讨论】:

你的数据库有内容变化,为什么要替换数据库? 【参考方案1】:

有些东西不应该在版本控制中。

一般来说,源代码应该是版本化的,而data不应该。我不熟悉 Joomla,但任何类型的“上传内容”目录都应该在您的版本控制系统的忽略文件中。这样您就可以将更改部署到软件,而不必担心会覆盖数据。

当然,您的数据应该定期备份,但这不是修订控制的目的。

【讨论】:

【参考方案2】:

虽然您简要描述了您的工作流程,但仍有一些事项需要考虑。没有一般规则,但请查看以下建议:

将您开发的扩展(模板、组件、插件等)放入版本控制。无论如何,自定义是您添加到 Joomla 的唯一内容。希望没有核心黑客。或者,如果您真的想对整个安装进行版本控制,您至少应该忽略客户端/您更改的媒体文件夹。我认为没有必要将整个 Joomla 站点置于版本控制之下。

我想您的客户实际上并没有更改 php 脚本,只是更改了媒体文件和数据库条目。您应该只推送生产代码和/或数据库架构更改。

1234563经理。可以使用 Phing 之类的工具一键构建包。例如,如果您对模板进行了一些更改,创建一个新的模板版本,创建包并首先更新暂存服务器/测试服务器,如果一切顺利,则进行生产。

【讨论】:

谢谢!我认为这是正确的做法。我们将配置我们的流程,以便只有实际的“源代码”文件包含在源代码控制流程中【参考方案3】:

如果你有

用于测试网站更改(布局、新功能、新 CSS)的临时服务器 用户发布新内容的生产服务器

您需要部分数据库更新以及文件同步。

数据库非常困难,因为资产表可能会受到临时服务器上的配置更改和生产服务器上的新内容的影响;对于此共享表和任何其他共享表,我们通过确保 id 在更新后不会立即发生冲突来解决此问题,从而留下足够的间隙。

虽然 - 引用大多数其他答案 - 修订控制既不是针对数据也不是针对数据库,它确实非常好,尤其是使用提交前和提交后挂钩来执行所需的数据库操作;但是,从 rsync-rdiff 到 phing 再到 ant - maven 的任何脚本/发布工具都可以

【讨论】:

以上是关于如何在 Joomla 中使用源代码控制,同时允许用户继续在生产服务器上进行内容更改?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Joomla 组件调用到模块中?

如何在 Joomla 控制器中指定视图列表?

Joomla 2.5 组件控制器加载

Joomla v1.6 - 如何在控制器中设置自定义成功消息?

如何在joomla中建立链接

在 Joomla 1.5 之外包含 Joomla 组件(Joomla FB Chat)