Deployment 使用MODX时的最佳部署实践是什么?

Deployment 使用MODX时的最佳部署实践是什么?,deployment,workflow,modx,Deployment,Workflow,Modx,当您在本地计算机上有应用程序的开发版本时,这非常方便,您可以将其部署在STAGE server上进行测试(这是可选的),然后将其部署到生产服务器上。当项目中的代码和数据有很好的自由裁量权时(例如,如果我们将所有代码和设置存储在项目文件中,并将数据存储在数据库中),您可以相对轻松地做到这一点 MODX在数据库中存储模板、代码段等。是的,我们可以将此代码移动到静态文件,然后使用版本控制系统跟踪这些项目的更改。但这些在数据库中也有表示行。这意味着,若我们添加或删除了一些项目,我们必须像以前一样更新数据

当您在本地计算机上有应用程序的开发版本时,这非常方便,您可以将其部署在STAGE server上进行测试(这是可选的),然后将其部署到生产服务器上。当项目中的代码和数据有很好的自由裁量权时(例如,如果我们将所有代码和设置存储在项目文件中,并将数据存储在数据库中),您可以相对轻松地做到这一点

MODX在数据库中存储模板、代码段等。是的,我们可以将此代码移动到静态文件,然后使用版本控制系统跟踪这些项目的更改。但这些在数据库中也有表示行。这意味着,若我们添加或删除了一些项目,我们必须像以前一样更新数据库

如果我们只是复制扩展名文件而不是通过PackageManager进行安装(因为扩展名通常在DB中有自己的表),那么看起来我们也会遇到一些问题

另一个问题是DEV和PROD上的应用程序在文件(configs)和数据库(例如用户帐户)中存储了不同的设置

我仍然看不到组织迭代DEV-STAGE-PROD开发周期的清晰方法。因此,我的问题是:

  • 部署时应(或必须)复制哪些文件和数据库表
  • 我应该以什么模式(替换、忽略)执行此操作
  • 最简单、最快的方法是什么
这里我最担心的是必须处理数据库


另外,我说的是MODX的“革命”版本,如果它重要的话。

数据库不应该存储任何路径信息,以前的版本在MODX_工作空间表中是这样做的,但这已经消失了[我相信从2.2.4开始]

如果您担心url更改[dev.mysite.com/stage.mysite.com/production…]不要担心-这都在.htaccess文件中[以前有一个站点url系统设置,但它似乎也消失了。]

唯一需要担心的文件是core/config/config.inc.php~使用不同的路径创建3个不同的文件,或者在迁移时替换它们

我移动/更新/迁移modx站点的过程是:

清除缓存!! tar cvfz httpdocs.tar.gz httpdocs/ mysqldump-u-p_数据库>export.sql

移动文件,tarxvfz&导入数据库。 检查modx_workspaves表是一个好主意,如果您使用了较旧版本的gallery,也可以检查它,但是大多数插件和开发人员似乎习惯于不在代码和数据库表中存储路径信息


当然,如果你已经加强了你的安装,还有几个步骤,但没有什么大的。[请参阅“rtfm.Modx.com上的加固Modx文章]

我认为您需要的是这个插件(取决于您的Modx版本):


所有数据块、代码段等都位于磁盘上。对文件所做的任何更改都将触发相应的数据库更改,而无需执行完整的SQL导入/重新导入。这将允许任何版本控制系统/分布式开发环境/自动部署。

您似乎已经解释了创建完整副本的方法但如果我在生产服务器上已经有了巨大的独立数据库(如用户生成的内容)和在开发设备上的小型测试数据库,那该怎么办?我也只能有一个管理员帐户和一个简单的开发设备密码,还有许多其他帐户(针对经理、作者等)我想在这种情况下需要部分合并数据库,不是吗?还有,我该如何解决资源ID冲突的问题?如果我在DEV上创建了一个新页面,并将其移动到PROD,我不能保证该ID在那里仍然未被占用。如果您要添加一个或多个资源,请以未发布状态添加它们,如果您需要的话ed首先测试生产数据的备份。除此之外,修改代码片段、模板、块、电视、用户、角色、组或策略。最好的方法是再次测试生产副本,然后实现。与其他方法一样,问题是在开发过程中实时数据会发生变化,如果您必须从开发人员中引入更改,那么您可以我们将不得不深入研究xpdo模式,找出哪些表可以/将被更改,并为自己编写一些导入/导出脚本。我的意思是只部署一些更改的方法,而不是整个项目。在这种情况下,开发人员通常在生产端拥有巨大的数据库,在本地机器上拥有较小的测试数据库。因此,必须复制和修改数据库的哪一部分做这件事的最佳方法是什么?当您在DEV上创建新资源并且它的ID已经在PROD上被占用时,资源ID冲突怎么办?