配置兼容的开发和生产站点

时间:2012-08-04 11:21:42

标签: magento

我正在开发一个Magento网站。 我有权访问本地主机和远程主机 以某种方式配置开发和生产环境。在 远程主机我恢复备份的数据库数据 本地主机,但是当我这样做时,我会覆盖主机的基本名称 这会导致站点重定向到不存在的URL 页面已加载。我怎样才能避免这种冲突:

我希望能够在http:// remotehost / foobardev上开发(a) 并将我的数据备份到http:// remotehost / foobar或以其他方式(b)开发 在http:// localhost / foobar上,在http:// remotehost / foobar上部署。一世 想知道如何在没有来回传输数据库数据 覆盖Magento管理面板中的值 - >系统 - >配置 - >网络 - >不安全的基本URL /安全基本URL 当我运行mysql并使用mysql命令源恢复时 在开发站点上找到的数据库条目 生产现场。

所以,我想要一种更简单的方法来恢复数据库内容 覆盖在magento管理面板中配置的基本URL这样做 会导致重定向到每个页面加载的不存在或错误的位置 从而使系统无法使用。

1 个答案:

答案 0 :(得分:2)

不完全是SO类型的问题。 Magento EE内置了升级版,并且可以合并您的数据。您必须明白,如果没有一些严格的同步框架可以跟踪每个行和列的状态,并且知道哪些数据是新的和旧的并解决同步冲突,那么将数据从dev同步到实时是不可能的。

以下是基于您使用CE并且没有捆绑数据迁移工具的假设的流程。

  • 设置实时数据库,并计算数据将仅从实时移动到开发,从不从开发到实时,因为您没有数据迁移。您需要在数据库级别创建和保留的每个配置在实时数据库上执行(在开发环境中测试它们然后在实时创建)
  • 制作一个shell脚本,结构脚本你喜欢的任何部署脚本,它将导出实时数据库转储,删除dev数据库(如果存在)并创建一个新数据库并导入实时数据库,运行一个pre或post sql脚本,更改/删除与环境相关的配置值(如base_url,secure_base_url等)
  • 要避免双数据输入,请始终创建需要使用magento设置脚本保留的所有属性和配置值。

代码相同,这是一个常见的设置方案,包括实时,阶段和开发环境

  • 一个主版本控件(最好只是为了避免有人会在那里更改文件)基于干净的magento版本树的存储库
  • 每个环境(实时,阶段,dev(n))的单独分支和来自dev(您开发并且可能具有破坏的代码库状态)的验证代码流到阶段(发布候选者驻留并准备好进行测试,并且从阶段到实时(你的实时代码处于稳定状态)
  • 每个开发人员都在从dev分支机构办理结账工作并提交给自己的dev分支机构,然后将更改推送到dev,在那里可以评估它们并确定更改是否足够成熟以进行暂存
  • stage是发布候选者居住的地方,客户可以测试(或自动化测试)并诊断它是否已经准备好发布,没有人在这里更改代码,代码来自dev分支
  • live是直播和运行版本,没有人直接更改任何代码。如果测试通过,代码可以从阶段开始

所以想象它可以更好地想象你的代码库驻留在git中。

myproject_magento_se (your project git repository on bitbucket.org or in github or wherever you can host)
--> master (branch with all clean magento versions from your current to latest)
--> dev (git checkout -b master (or by specific version from master) 
--> stage (while on dev: git checkout -b stage)
--> live (while on stage: git checkout -b live)

并想象您的主机设置如下:

www.mylivesite.com =  git clone yourgitrepo; git checkout live;
stage.mylivesite.com = git clone yourgitrepo; git checkout stage;
dev.mylivesite.com = git clone yourgitrepo; git checkout dev;

对于所有这些,您最好拥有部署脚本,只需按一下按钮即可在环境之间切换,代码和数据库解除。

以下是每个软件项目需要执行的一些常见操作

  • 将数据从实时移动到重置阶段从实时到开发(如果需要进行混淆调用以加扰或更改客户端相关数据)
  • 将代码从开发移至阶段
  • 将代码从阶段移至实时
  • 重置/创建具有实时状态的任何开发人员(数据和代码)

玩得开心:)并完成这个帖子https://superuser.com/questions/90301/sync-two-mysql-databases以及所有其他你可以在类似的事情上找到SO搜索。