2012-12-05 107 views
4

我读过关于这个问题的几个教程,但仍然没有完全得到什么从开发商想使ZF2应用环境感知预期'S:在ZF2中生产,开发,配置配置?

http://blog.evan.pro/environment-specific-configuration-in-zend-framework-2
http://www.spiffyjr.me/2012/06/17/how-does-configuration-work-in-zf2/comment-page-1/

ZF2不是意识到环境概念设计 - 由开发人员来执行。我不完全清楚它应该怎么做...

通过埃文的帖子阅读,似乎有2机制 - 首选一个是不使用APPLICATION_ENV常量,只是.local,.global文件?

这应该如何工作?有人能描述一个他们想要让ZF2环境感知的过程吗?当代码被推送到不同的环境时你做了什么?


好像这个想法是正确的,现在有防爆:module1.local.php.dist-测试module1.local.php.dist生产module1.local.php .dist-development当代码移动到不同的环境时,想法是这些应该被复制重命名为该环境并且手动填写密码?我对么?

+0

还有另一篇文章埃文也是如此,在那里,他介绍了如何使ZF1样ENV特定的配置工作> http://blog.evan.pro/environment-specific-configuration-in-zend-framework-2 两者都可以接受,新东西只是一些人的偏好。在公司世界里,大多数情况下配置将由开发人员处理,因为服务器人员不想接触我们的配置,所以env特定的方法仍然是最好的方式 – Sam

回答

7

的想法是,你提供你的应用程序的一些合理的默认配置,但是你不存储任何与你的代码的具体环境,也不在你的版本控制系统。

如果您有例如两台服务器,一个用于生产,一个用于开发,你提供这样的。本地文件一个单一的环境只配置细节。这样,你的开发服务器就无法知道例如生产数据库的主密码。所以不会意外发生,你得到一个新的开发服务器,有人忘记设置APPLICATION_ENV,并开始开发和搞乱生产数据库,因为应用程序知道密码。

或者相反,新的生产服务器不会意外地访问开发数据库。

所以,你的应用程序知道环境是读取存在于文件自动 - 并没有因环境而目前拥有的所有细节只有一个文件。

这会增加确保向管理员提供正确文件的负担 - 或者配置所有内容的puppet脚本。但特定于环境的配置不会在应用程序内部署。

+0

如何部署到具有不同环境的另一台服务器看起来像?检查代码,重命名dist文件并手动填写密码? –

+0

“这会增加确保向管理员提供正确文件的负担 - 或配置所有内容的傀儡脚本” - 您的答案完全属于ZF2文档。谢谢。现在更清楚了。 –

+0

我相信部署方法可以从版本控制中获取所有应用程序文件,从不同的源添加适当的local.php文件,并将所有内容都推送到服务器。或者避免删除当前版本中仍然存在的local.php文件。 – Sven