gpt4 book ai didi

svn - Magento 分期和生产

转载 作者:行者123 更新时间:2023-12-03 01:06:12 25 4
gpt4 key购买 nike

我使用 magento 进行开发已经有一段时间了,事情开始变得有意义,并且变得更加深思熟虑和有条理。但一方面看起来仍然相当困惑——将网站从开发转移到生产。

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

这一切看起来有点困惑并且容易出错。经验丰富的 Magento 开发人员是否有一个可以分享的完成此任务的良好流程?

最佳答案

我的流程通常是围绕源代码控制存储库(在我的例子中是 SVN)进行管理,这使事情变得更加容易(或者可能,真的......)。这个想法是在存储库中保留所有可能的内容,并使用 SVN 更新和标签来发布更改。

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

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

主机设置:我的暂存环境和开发环境设置为从存储库的/trunk 运行。开发在这里进行,并且可以通过 svn up 定期(或按需)推送到阶段,以向客户端展示新功能并执行 UAT。不过,生产环境需要对主干的狂野西部进行一些保护,以便环境中的标签消失。每当功能集准备好发布时,我都会从主干创建一个新标签,并执行 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

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

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

新开发:您可能会注意到,不同的环境运行大致相同的代码库(减去任何新的更改),从您注意到的有关数据库更改等内容来看,这对您来说可能看起来很麻烦.

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

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

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

<小时/>

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

谢谢,乔

关于svn - Magento 分期和生产,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4913761/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com