2013-04-10 64 views
7

当您在本地计算机上安装了DEVELOPMENT版本的应用程序时,您可以将其部署到STAGE服务器上进行测试(这是可选的),然后将其部署到PRODUCTION服务器上。如果项目中存在代码和数据的精细判断(例如,如果我们将所有代码和设置存储在项目文件和数据库中),则可以相对容易地做到这一点。使用MODX时的最佳部署实践是什么?

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

看起来我们也可以得到一些麻烦,如果我们只是复制扩展文件而不是通过包管理器进行安装(因为扩展在DB中有自己的表)。

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

我还没有看到明确的方法来组织迭代DEV-STAGE-PROD开发周期。所以,我的问题是:

  • 我部署时应复制哪些文件和数据库表(或必须)?
  • 什么是模式(替换,忽略)我应该这样做?
  • 什么是最简单最快速的方法?

我最关心的是不得不处理数据库。

P.S.如果它很重要,我正在谈论MODX的“革命”版本。

+1

我的意思是只部署一些更改的方式不是全部项目。在这种情况下,开发人员通常在生产端拥有巨大的数据库,在本地机器上拥有小型测试数据库。那么,数据库的哪个部分必须被复制,以及最好的方法是什么?当您在DEV上创建新资源时,资源ID冲突怎么办?它的ID已经在PROD上占用了吗? – 2013-04-11 04:05:56

回答

3

数据库根本不应该存储任何路径信息,以前的版本在modx_workspaces表中已经存在,但是自从[我相信2.2.4以来]已经消失了。

如果您担心网址更改[dev.mysite.com/stage.mysite.com/production ...]不要 - 这是所有在.htaccess文件[曾经是一个site_url系统设置,但它似乎也消失了。]

您需要考虑的唯一文件是core/config/config.inc.php〜创建3个不同路径的文件,或者只是替换它们迁移。

我的移动过程/更新/迁移镆铘网站是:

清除缓存! 焦油cvfz httpdocs.tar.gz的httpdocs/ 的mysqldump -u -p the_database> export.sql

移动的文件,焦油xvfz &导入数据库。 检查modx_workspaves表是一个不错的主意,如果您使用的是旧版本的库,请检查一下,但大多数插件&开发人员似乎用于不在代码& DB表中存储路径信息。

当然,如果你已经加强了安装,还有几个步骤,但没有什么重要的。 [请参阅“关于rtfm.modx的强化Modx文章。COM]

+0

看来你已经解释了制作应用程序完整副本的方法。 但是如果我已经在生产服务器上有巨大的独立数据库(例如用户生成的内容)和DEV上的小测试数据库呢? 另外,我可以只有一个管理员帐户,使用DEV的简单密码和PROD上的许多其他帐户(对于经理,作者等) 我想在这种情况下需要部分合并数据库,不是吗? 另外我该如何解决资源ID冲突的问题?如果我在DEV上创建了一个新页面,并且我将它移动到PROD,我不能保证这样的ID在那里仍然没有被占用。 – 2013-04-11 03:49:57

+1

如果要添加资源或资源,请将其添加为未发布状态,如果需要首先对其进行测试,则需要对生产数据进行备份。除此之外,修改片段,模板,块,电视,用户,角色,组或策略。最好的办法就是在生产副本上进行测试,然后执行。和其他任何东西一样,问题在于开发过程中实时数据的变化,如果您必须从开发中进行更改,那么您将不得不深入挖掘xpdo模式,找出哪些表可以/将要更改并编写自己的代码一些导入/导出脚本。 – 2013-04-11 16:28:01