CakePHP应用程序部署

时间:2010-01-01 17:29:52

标签: deployment cakephp

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

我的想法在这一点上有点混乱,但我正在考虑以下情况:

  • 在IDE中工作的开发人员会修改一个文件,该文件会自动(在后台)与本地运行的开发Web服务器同步。这种情况是我理想地喜欢进行开发的方式...进行更改并能够在没有任何额外步骤的情况下看到更改操作。

  • 在IDE中工作的开发人员修改一个文件,该文件通过FTP与远程运行的开发Web服务器自动(在后台)同步。当我使用我的上网本(它运行我的IDE足够慢,因为它没有混合中的Web服务器)时,这种情况会很有用。

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

我最熟悉的开发工具是Eclipse,Ant和Subversion。我的偏好是继续使用它们,但我会考虑切换,如果这样做可以很容易地实现这些场景。

问题:

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

对于一篇文章中的这么多问题感到抱歉,但我认为这些问题都是相关的,并认为将讨论集中在一个地方是有用的。

1 个答案:

答案 0 :(得分:12)

  

这些是合理的情况,还是应该以不同的方式考虑开发和部署?

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

考虑使用允许您通过(S)FTP连接到服务器的IDE,或使用以下其中一种...

  

有哪些工具可以帮助简化开发/部署?用Ant,脚本等来推广我自己的解决方案会不会更好?

JenkinsCapistranoPhing,Ant,git push/pullrsync等。

  

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

使用cake schema generatecake schema run update

  

我们如何配置不同部署之间的属性?例如,考虑增加开发期间使用的调试和日志记录级别,防止在开发期间将付款发送到支付网关等。

相应不同的名称文件(例如core.php.prd vs core.php.dev)并在安装时重命名。

  

升级或还原部署如何影响客户?例如,如果他们处于交易中间(例如购买产品),该怎么办?

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

  

我们如何处理不同的CakePHP安装类型?根据安装类型,可能需要将文件安装在不同的位置。我们怎么知道应该在哪里安装文件? CakePHP书籍描述了开发,生产和高级安装。

开发安装与使用.htaccess文件重定向请求的任何PHP应用程序一样安全(除非您卸载/错误配置mod_rewrite和PHP,否则人们将看不到您的代码)。除非您可以编辑虚拟主机的文档根目录,否则生产安装稍微复杂一些。高级安装允许您在文件系统中的任何位置安装Cake,但增加了更多的复杂性(因为您的文件位于两个单独的位置,但可能只有一个仓库)