使用Git管理Joomla网站?

7
我在一所大学工作,被指示考虑使用源代码控制系统(如git、svn等)来管理网站。我们使用的是Joomla,它严重依赖于MySQL。
目前,我们有一个几乎不能正常工作的系统,它使用开发服务器,每当我们更改网站时就会推送到实时服务器。这很麻烦,而且并不总是有效。此外,我们可能会覆盖另一个开发人员所做的更改。
我们希望能够通过Joomla前端管理内容,然后将这些更改推送到测试分支,然后再推送到主(实时)分支。
不深入讨论:我的问题基本上是,对于像Joomla这样依赖数据库的CMS,有什么好的网站管理策略?

你是在谈论你的内容还是你的代码? - Elin
我更喜欢从 Joomla 管理内容。我只担心保持代码和数据库同步。 - Kickasstimus
这个问题可能更适合程序员,我不确定。但是根据我的经验,使用源代码控制对数据库进行版本控制很困难。然而,您可以使用一种策略,即将您使用的任何SQL脚本、查询等作为.sql文件在Git中保存,并在需要对数据库进行更改(如更改表格等)时运行这些文件。但这些是数据库结构更改。如果您想管理Joomla 内容,那么最好的方法可能只是频繁备份。 - user456814
1个回答

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

但是,您将希望单独同步Joomla的不同部分。

让我们考虑三个服务器:

  • 编辑服务器:管理内容的位置
  • 开发服务器:测试和配置扩展的位置
  • 测试服务器
  • 生产服务器

让我们考虑三层信息:

  1. 用户和会话数据:根本不应同步此数据,以便人们不会退出登录,如果任何用户在生产服务器上注册,则其登录将被保留。

  2. 内容、用户组和资产(权限):这是文章、新闻、图片,必须从编辑测试生产再到开发(除非您具有针对每个内容项的内容特定权限,即每个用户在每个内容项上具有单独的权限)

  3. 模板、扩展、模块、菜单配置:这将从开发测试生产再到编辑

这些数据组中的每个都需要它们自己的分支和自定义pre-commit挂钩,以在提交/推送时包括相关的数据库表。每个组的表列表取决于您正在使用的扩展。

我写了一篇文章,用意大利语写的,是关于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


如果生成的转储文件将保留在版本控制系统中,我建议使用 --skip-comments--skip-dump-date 命令行选项来使用 mysqldump 转储 MySQL 表。这会增加生成的文件与先前转储结果之间差异较少的可能性。可以使用 Percona Tools 套件(前身为 Maatkit)中的 mk-show-grants 工具转储 MySQL 授权,如下所示:mk-show-grants --noheader --notimestamp --drop --flush - kostix

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接