Mysql 用Git管理Joomla网站?

Mysql 用Git管理Joomla网站?,mysql,git,joomla,Mysql,Git,Joomla,我在一所大型大学工作,被指示使用源代码控制系统(git、svn等)来管理网站。我们使用Joomla,它严重依赖MySQL 目前,我们有一个几乎不起作用的系统,它使用一个开发服务器,每当我们更改一个网站时,它就会推送到一个实时服务器。这是一种痛苦,而且并不总是有效。此外,我们可以而且经常覆盖其他开发人员所做的更改 我们希望能够通过开发分支上的Joomla前端管理内容,然后将这些更改推送到测试分支,然后推送到主(实时)分支 我的问题是,从本质上讲,使用依赖数据库的Joomla这样的CMS管理网站的好

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

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

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


我的问题是,从本质上讲,使用依赖数据库的Joomla这样的CMS管理网站的好策略是什么?

因为您还想同步数据库(内容存储在数据库中,而图像和媒体存储在文件系统中),您还需要commit/push脚本将数据库转储到文件中,并需要pull脚本加载数据库。这可以通过pre和post钩子来实现,也可以通过谷歌来实现

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

让我们考虑三个服务器:

  • 编辑服务器:管理内容的地方
  • dev服务器:测试和配置扩展的地方
  • 测试服务器
  • 生产服务器
我们考虑三层信息:

  • 用户和会话数据:这根本不应该同步,这样人们就不会注销,如果任何用户在生产服务器上注册,他们的登录将被保留

  • 内容、用户组和资产(特权):这是文章、新闻、图像,它们必须从编辑测试制作开发(除非您在用户级别具有特定于内容的特权,即每个用户对每个内容项都有单独的特权)

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

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


    我已经用意大利语为svn写了一篇文章,但是你可以获取一些我们使用的bash脚本:或者由google翻译的

    你是在谈论你的内容还是你的代码?我更喜欢管理Joomla的内容。我只担心保持代码和数据库的同步。这个问题可能更适合,但不确定。但根据我的经验,数据库很难通过源代码控制进行版本转换。但是,您可以使用的一种策略是将用作
    .SQL
    文件的任何SQL脚本、查询等保存在Git中,并在需要更改数据库(如更改表等)时运行它们。但这些都是数据库结构更改。如果您想管理Joomla内容,然后,最好的办法可能就是频繁备份。如果生成的转储文件要保存在VCS中,我会使用
    --跳过注释
    --跳过转储日期
    命令行选项重新编译转储MySQL表,这会增加生成的文件具有较少备份的可能性与上一次转储结果的差异。MySQL授权可以使用Percona工具套件(以前的Maatkit)中的
    mk show grants
    工具转储,如下所示:
    mk show grants--noheader--notimestamp--drop--flush