Magento部署的最佳实践

时间:2009-09-04 05:12:45

标签: deployment magento

我正在为高度自定义的Magento网站设置部署流程,并且想知道其他人如何做到这一点。

我将设置dev,UAT和prod环境。所有Magento文件都将在源代码管理(SVN)中。在这个阶段,我看不到更改数据库的任何要求,因此将手动维护3个数据库。

具体地,

  • 您如何应用Magento升级? (单独在每个环境中,或者在dev上然后推出,或者只是放弃升级?)
  • 每个环境中单独保留哪些文件/文件夹(例如magento / app / etc / local.xml)
  • 您是否限制开发人员编辑特定文件/文件夹?
  • 您是否限制主题设计人员编辑特定文件/文件夹?
  • 如何管理数据库更改?

主题设计器文件/文件夹

设计师可以限制编辑以下文件夹 -

app/design/frontend/your_interface/your_theme/layout/
app/design/frontend/your_interface/your_theme/template/
app/design/frontend/your_interface/your_theme/locale/
skin/frontend/your_interface/your_theme/

扩展程序开发者文件/文件夹

扩展程序开发人员可以编辑以下文件夹/文件 -

/app/code/local
/app/etc/modules/<Namespace>_<Module>.xml

数据库环境管理

由于商店的基本URL存储在数据库中,因此您不能只在环境之间复制数据库。选项包括 -

5 个答案:

答案 0 :(得分:14)

我建议在SVN上使用git。更容易的分支和合并意味着所有这些要点将更加顺利。

应用升级:在开发中执行此操作。创建一个分支(这是git真正闪耀的地方),应用补丁文件甚至更好,解压缩新的Magento版本并将其指向旧数据库。还没有扩展。在新的Magento安装中打开管理员,希望最好。次要版本之间的升级可能不会成为问题。安装完所有新东西后,你可能需要重新索引。一旦这是稳定的,做一个提交,然后逐步将你的扩展和主题带入分支,进行任何代码调整,然后在每个步骤证明稳定后进行提交。

依赖于环境的文件: .htaccess和app / etc / local.xml。我为每个人做了一个单独的版本: local.dev.xml,htaccess-dev local.staging.xml,htaccess-staging local.production.xml,htaccess-production

...然后为每个环境制作软链接:

ln -s htaccess-dev .htaccess
cd app/etc/
ln -s local.dev.xml local.xml

等等。

限制对某些开发者的访问权限:我不这样做。但是,您可以在git中开发一个部署策略,让发布经理决定进入什么和不进行什么。

管理数据库更改:这是最棘手的部分。我们只是从生产中使用mysqldump,并为每个环境提供一些现成的“env-setup.sql”文件。这样的事情(你的ID可能会有所不同):

UPDATE core_config_data SET value='http://magento.dev/' WHERE config_id IN (3,4);

我通常会添加一些说明,这些说明会将支付网关更改为测试环境,更改外发电子邮件等。其中大部分都可以在core_config_data中找到。

请记住,模块通常会对数据库进行自己的更改,因此应用精心设计的模块通常会自行处理。在任何情况下,永远不要对prod进行未经测试的更改,始终在本地和临时环境中进行“排练”。

您可以通过从任何环境开发中转储和加载cms_ *表来从数据库中获取CMS(页面和静态块)数据。

祝你好运!

答案 1 :(得分:9)

在开发magento时,我使用与任何Web应用程序相同的最佳实践。我还虔诚地避免对核心文件进行任何更改(magento wiki上的许多文档都要求您修改核心文件)。

答案 2 :(得分:7)

我使用git来管理我的所有Magento项目和部署。合并新版本要容易得多,特别是如果你使用我在github上维护的Magento镜像。 (GitHub Magento Mirror

关于基本网址在数据库中存储位置的具体问题,请尝试以下方法:

SELECT * FROM core_config_data WHERE path = "web/secure/base_url" OR path = "web/unsecure/base_url";

答案 3 :(得分:3)

答案 4 :(得分:3)

经过大量的反复试验,我们提出了一个适合我们的工作流程:

http://www.dhmedia.com.au/blog/perfect-magento-workflow-using-git

包括数据库管理,源代码管理下的所有代码(使用Git),部署,登台和开发站点,多个开发人员,多个环境等......

希望这有助于某人!