【问题标题】:Managing a Joomla website with Git?使用 Git 管理 Joomla 网站?
【发布时间】:2013-07-13 11:30:47
【问题描述】:

我在一所大型大学工作,并被指示研究使用源代码控制系统(git、svn 等)来管理网站。我们使用严重依赖 MySQL 的 Joomla。

目前,我们有一个几乎没有功能的系统,它使用开发服务器,每当我们更改网站时,它都会推送到实时服务器。这是一种痛苦,而且并不总是有效。此外,我们可以而且经常会覆盖其他开发人员所做的更改。

我们希望能够通过开发分支上的 Joomla 前端管理内容,然后将这些更改推送到测试分支,然后推送到主(实时)分支。

没有完全摆脱杂草:我的问题是,本质上,使用依赖数据库的 Joomla 等 CMS 管理网站的好策略是什么?

【问题讨论】:

  • 您是在谈论您的内容还是您的代码?
  • 我更喜欢管理来自 Joomla 的内容。我只担心保持代码和数据库同步。
  • 这个问题可能更适合Programmers,不确定。但根据我的经验,数据库很难通过源代码控制进行版本控制。但是,您可以使用的一种策略是将您使用的任何 SQL 脚本、查询等作为 .sql 文件保留在 Git 中,并在您需要对数据库进行更改(例如更改表等)时运行它们。但是那些是数据库结构的变化。如果您想管理 Joomla 内容,那么最好的办法可能就是经常备份。

标签: mysql git joomla


【解决方案1】:

由于您还想同步数据库(内容存储在数据库中,而图像和媒体在文件系统上),您需要提交/推送脚本也将数据库转储到文件中,并且拉取脚本加载数据库。这可以通过 pre 和 post 钩子完成,http://githooks.com/ 或谷歌它。

但是,您需要单独同步 Joomla 的不同部分。

让我们考虑三个服务器:

  • 编辑服务器:管理内容的地方
  • dev 服务器:测试和配置扩展的地方
  • 测试服务器
  • 生产服务器

让我们考虑三层信息:

  1. 用户和会话数据:这根本不应该同步,因此人们不会注销,如果有任何用户在生产服务器上注册,他们的登录信息将被保留。

  2. 内容、用户组和资产(权限):这是必须从编辑测试productiondev(除非您在用户级别拥有特定于内容的权限,即每个用户对每个内容项拥有单独的权限)

  3. 模板、扩展、模块、菜单配置:这将从 devtest 再到 production编辑

这些数据组中的每一个都需要它们自己的分支和它们的自定义预提交钩子来包含在提交/推送相关的数据库表中。每个组的表列表取决于您使用的扩展。

我已经写了一篇文章,它是用意大利语和 svn 编写的,但你可以获取我们使用的一些 bash 脚本:http://www.fasterjoomla.com/joomla-tips/svn-per-joomla 或由谷歌翻译 http://translate.google.com/translate?sl=it&tl=en&js=n&prev=_t&hl=it&ie=UTF-8&u=http%3A%2F%2Fwww.fasterjoomla.com%2Fjoomla-tips%2Fsvn-per-joomla

【讨论】:

  • 如果生成的转储文件要保存在 VCS 中,我建议使用 --skip-comments--skip-dump-date 命令行选项将 MySQL 表转储到 mysqldump - 这会增加生成的文件与先前转储的结果有更少的差异。可以使用 Percona 工具套件(前 Maatkit)中的 mk-show-grants 工具转储 MySQL 授权,如下所示:mk-show-grants --noheader --notimestamp --drop --flush
猜你喜欢
  • 2011-06-24
  • 2013-01-07
  • 2012-03-01
  • 1970-01-01
  • 2016-04-14
  • 2018-12-28
  • 1970-01-01
  • 1970-01-01
  • 2011-03-18
相关资源
最近更新 更多