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