2010-01-01 204 views
16

我想知道人们如何部署他们的CakePHP应用程序。最近我接触了一些关于做一些自由的CakePHP开发的问题,这对我来说是一个很好的机会,可以在表示层获得一些经验(在我的FT工作中,我在业务和持久层中进行Java EE开发)。CakePHP应用程序部署

我的想法是有点在这一点上杂乱无章,但我考虑以下情况:

  • 开发者在IDE中工作会修改一个文件,它会自动为(在后台)与同步开发Web服务器在本地运行。这种情况就是我理想的开发方式......做出改变并能够在没有任何额外步骤的情况下看到行动的变化。

  • 在IDE中工作的开发人员修改了一个文件,该文件通过远程运行的开发Web服务器自动(在后台)通过FTP同步。这个场景在我使用我的上网本旅行时非常有用(它足够慢地运行我的IDE,因为它没有Web服务器)。

  • 管理员将最新版本的CakePHP应用程序从源代码存储库部署到本地运行的Web服务器。
  • Administrator通过FTP将最新版本的CakePHP应用程序从源代码存储库部署到Web服务器。
  • 管理员将CakePHP应用程序的旧版本从源代码存储库部署到本地运行的Web服务器。
  • Administrator通过FTP将CakePHP应用程序的旧版本从源代码存储库部署到Web服务器。

我最喜欢的开发工具是Eclipse,Ant和Subversion。我的首选是继续使用这些,但如果这样做会轻松实现这些场景,我会考虑进行切换。

问题:

  • 难道这些合理的情况下,还是应该做我需要考虑以不同的方式开发和部署?
  • 有哪些工具可以帮助简化开发/部署?使用Ant,脚本等来推出我自己的解决方案会更好吗?
  • 我们在部署过程中如何处理数据库问题?如何为特定的部署指定数据库连接属性?如果更新到新版本(或恢复到旧版本)CakePHP应用程序需要更改数据库模式和数据迁移?
  • 我们如何配置不同部署之间的属性?例如,考虑在开发过程中使用增加的调试和日志记录级别,防止在开发过程中向支付网关发送付款等。
  • 升级或还原部署如何影响客户?例如,如果他们处于交易中(例如购买产品)呢?
  • 我们如何处理不同的CakePHP安装类型?取决于安装类型,文件可能需要安装在不同的位置。我们如何知道应该在哪里安装文件? CakePHP书介绍了开发,生产和高级安装。

对不起,在一篇文章中有很多问题,但我认为这些问题都是相关的,并认为将讨论保留在一个地方会很有帮助。

回答

12

这些合理的方案,还是应该我需要以不同的方式考虑开发和部署?

似乎合理,虽然FTP同步使我想到Dreamweaver。 :)

考虑使用IDE,可以让您连接到了(S)FTP服务器,或者使用下面的一个...

什么工具存在,可以帮助简化开发/部署?使用Ant,脚本等来推出我自己的解决方案会更好吗?

JenkinsCapistranoPhing,蚂蚁,git push/pullrsync

我们如何在部署期间处理数据库的问题?如何为特定的部署指定数据库连接属性?如果更新到新版本(或恢复到旧版本)CakePHP应用程序需要更改数据库模式和数据迁移?

使用cake schema generatecake schema run update

我们如何配置不同部署之间的属性?例如,考虑在开发过程中使用了增加的调试和日志记录级别,防止开发过程中被发送到支付网关支付等是否发生相应(即core.php.prd VS core.php.dev)不同

名称的文件并重新命名上安装。

升级或恢复部署如何影响客户?例如,如果他们处于交易中(例如购买产品)呢?

因此,您的应用程序文件不会以不一致的状态出现,您应该首先检出应用程序的新副本到新文件夹。复制任何用户提交的文件,重命名*.prd文件,然后使用新副本(通过重命名或使用符号链接)切换旧副本。会话应存储在升级后的某个位置(即phpdatabase,而不是cake)。

我们如何处理不同的CakePHP安装类型?取决于安装类型,文件可能需要安装在不同的位置。我们如何知道应该在哪里安装文件? CakePHP书介绍了开发,生产和高级安装。

发展安装是一样使用.htaccess文件请求重定向(人们不会看到你的代码,除非你卸载/错误配置mod_rewrite和PHP)任何PHP应用程序安全。除非您可以编辑虚拟主机的文档根目录,否则生产安装稍微复杂一些。先进的安装可以让你在文件系统中的任何地方安装蛋糕,但增加了更多的复杂性(因为你的文件坐在两个不同的位置,但在一个单一的回购可以坐)

+0

备用数据库迁移脚本可以在这里找到:HTTP:/ /stackoverflow.com/questions/2522372/good-db-migrations-for-cakephp – deizel