Magento分期和生产

时间:2011-02-06 14:09:33

标签: svn version-control deployment magento

我一直在用magento开发一段时间,事情开始变得有意义,变得更加刻意和有组织。一方面虽然看起来仍然非常混乱 - 将网站从开发转移到生产。

任何人都可以为此提供一些好的流程 ​​- 到目前为止我只是导出/导入开发数据库,​​复制源文件,清除测试订单,客户等,然后更改基本URL,htaccess文件等。

这一切似乎有点混乱,容易出错。任何经验丰富的Magento开发人员都可以为他们可以分享的这项任务制定一个良好的流程。

2 个答案:

答案 0 :(得分:27)

我的流程通常围绕源控制存储库(在我的情况下为SVN)进行管理,这使得事情变得更容易(或者可能,真的......)。我们的想法是在repo中保持一切可能,并使用SVN更新和标记来发布更改。

local.xml :我将此文件在SVN中移至local.xml.dist,并忽略回购中的实际local.xml文件。这使您可以在安装中使用不同的数据库凭据和主机,而不会污染代码库。

其他忽略:查看this question以查找应在数据库中忽略的更多文件。基本上,环境中唯一的任何东西都应该不受版本控制,并在实际主机上处理。您的.htaccess文件将与此处相关。

主机设置:我的暂存环境和开发环境设置为从存储库运行/ trunk。开发发生在这里,可以通过svn up定期(或按需)推送到阶段,以向客户端显示新功能并执行UAT。但是,生产环境需要一些来自树干Wild West的保护,以便环境不受标签的影响。每当功能集准备出去时,我都会从主干创建一个新标签并执行svn switch移动到新的代码集。以这种方式做事也让我轻松撤消生产(切换回最后一个标签)。因此,我已经删除了我生活中的所有手动文件推送,这很好。

更好的系统(我还没有必要)将使用svn export在生产系统上创建代码树的完整副本,并使用ln进行切换它们之间。像这样:

> cd /home/apacheuser
> ls -l
www -> /home/apacheuser/tag_1.0.1
tag_1.0.1

> svn export /url/for/repo/tags/1.0.2 tag_1.0.2
... svn exports here ...

> rm www; ln -s /home/apacheuser/tag_1.0.2 www

这样,版本更改是即时的。

db从生产中同步:为了允许我处理生产数据,我设置了一个cron-job来转储生产数据库并将其导入到暂存中。在发生这种情况时,该脚本将删除敏感的客户数据(并更改客户电子邮件地址,以便所有电子邮件发送给我)。它还会将信用卡网关设置更改为测试网关,并更改base_url参数,以便临时站点URL正常工作。

新开发:您可能会注意到,不同的环境会运行大致相同的代码库(减去任何新的更改),从您对数据库更改等方面的注意事项看起来很麻烦。

管理这种复杂性(以及正确的方式,同时!)的唯一方法是确保代码本身跟踪对环境的必要更改。 Magento支持自动模块版本升级,包括数据库脚本,您应该使用它来进行架构更改等。这意味着,当您将新代码部署到登台/生产时(或者从您的开发环境中的其他开发人员那里获得),所有数据库补丁都会自动应用。

这也意味着您需要编写新功能以尽可能无破坏性。 Magento主题,禁用模块等可用于实现这一目标。例如,在为站点创建新主题时,请确保不要修改任何核心行为,并将所有新资产保留在主题中,这些主题在生产之前是惰性的。

更多开发人员:此设置基于项目中相对较少的开发人员。有一个隐含的假设,当你想标记一个新版本时,你可以让trunk进入工作状态。随着越来越多的开发人员,情况会越来越少,因此需要更复杂的回购设置。如果我遇到这种情况,我的计划是转而使用git而不是SVN,并使用功能分支进行新的开发。


如果有任何不清楚的地方,请告诉我。希望有所帮助!

谢谢, 乔

答案 1 :(得分:0)

1)复制文件。清除var / cache和var / session文件夹。

2)导出数据库,创建临时数据库,然后导入此转储文件。

3)使用新的临时数据库信息更新app / etc / local.xml文件。

4)使用PHPMyAdmin等工具修改数据库,并编辑'core_config_data'表以更新基本URL(/ web / secure和/ web / unsecure)

为此运行查询:

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

并修改结果行的值。

5)如果您具有SSH访问权限,请在暂存存储的文档根目录中运行此命令:

./pear mage-setup .

6)在浏览器中运行网站