2011-02-06 31 views
19

我一直在用magento开发一段时间,现在事情开始变得有意义,变得更有意识和更有组织。尽管如此,一个方面仍然显得相当混乱 - 将一个网站从开发转移到生产。Magento分期和生产

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

这一切似乎有点混乱和容易出错。是否有经验丰富的Magento开发人员可以为他们分享此任务提供一个良好的流程。

+0

我很感兴趣,这也经营的网站。我的主要工作是维护一个基于.NET的电子商务商店,我们使用Windows Installer以受控的方式部署更新,而Magento的侧边项目有点新 - 在部署时感觉有点鲁莽!我认为这些日子里,我只需要建立一个大的bash脚本来管理更新过程。 – 2011-02-06 16:00:05

回答

27

我的过程通常是围绕一个源代码控制库(在我的情况下为SVN)进行管理,这使得事情变得更容易(或者可能,真的......)。这个想法是在回购中保留所有可能的东西,并使用SVN更新和标签发布更改。

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

其他忽略:查看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主题,禁用的模块等可以用来使其成为现实。例如,在为网站创建新主题时,请确保不要修改任何核心行为,并将所有新资产保留在主题中,这些主题在部署之前对生产是惰性的。

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


让我知道如果有任何不清楚。希望有所帮助!

谢谢, 乔

+0

@Joe - 真棒回答。不过,如果你不介意分享,我想知道DB Sync Cron Job的详细信息。了解这个测试网关和删除敏感数据是如何发生的,以及主电子邮件ID的更改以及其他一些内容,这非常有趣。 – 2011-02-06 22:01:07

0

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

2)导出数据库,创建临时数据库,并导入该转储文件。

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

4)使用工具如PHPMyAdmin的修改数据库,并编辑“core_config_data”表更新基本URL(/网络/安全/网络/不安全)

此运行查询:

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

并修改结果行的值。

5)如果您有SSH访问,请在筹划存储的文档根目录下面的命令:

./pear mage-setup . 

6)在浏览器中