我在一所大型大学工作,并被指示使用源控制系统(git,svn等)来管理网站.我们使用的Joomla严重依赖于MySQL.
目前,我们有一个功能勉强的系统,它使用开发服务器,每当我们更改网站时,它都会推送到实时服务器.这是一种痛苦,并不总是奏效.此外,我们可以并且经常覆盖另一个开发者所做的更改.
我们希望能够通过dev分支上的Joomla前端管理内容,然后将这些更改推送到测试分支,然后推送到主(实时)分支.
没有下来他的杂草:我的问题是,基本上,使用像Joomla这样依赖数据库的CMS管理网站的好策略是什么?
由于您还想同步数据库(内容存储在数据库中,而图像和媒体位于文件系统上),因此您需要提交/推送脚本将数据库转储到文件,并需要拉取脚本来加载数据库。这可以通过 pre 和 post hooks、 http://githooks.com/或 google 来完成。
但是,您可能需要单独同步 Joomla 的不同部分。
让我们考虑三台服务器:
让我们考虑三层信息:
用户和会话数据:这根本不应该同步,因此人们不会注销,并且如果任何用户在生产服务器上注册,他们的登录名将被保留。
内容、用户组和资产(权限):这是必须从编辑到测试到生产和开发的文章、新闻、图像(除非您在用户级别拥有特定于内容的权限,即每个用户都有单独的权限在每个内容项上)
模板、扩展、模块、菜单配置:这将从开发到测试再到生产和编辑。
每组数据都需要自己的分支和自定义预提交挂钩,以包含在提交/推送相关数据库表中。每个组的表列表取决于您正在使用的扩展。
我写了一篇意大利语和 svn 的文章,但你可以获取我们使用的一些 bash 脚本:http: //www.fasterjoomla.com/joomla-tips/svn-per-joomla或由 google 翻译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