我有兴趣了解人们如何部署CakePHP应用程序。我最近接触过一些自由开发的CakePHP开发,这对我来说是一个很好的机会,可以在表示层获得一些经验(在我的FT工作中,我在业务和持久层中进行Java EE开发)。
我的想法在这一点上有点混乱,但我正在考虑以下情况:
在IDE中工作的开发人员会修改一个文件,该文件会自动(在后台)与本地运行的开发Web服务器同步。这种情况是我理想地喜欢进行开发的方式...进行更改并能够在没有任何额外步骤的情况下看到更改操作。
在IDE中工作的开发人员修改一个文件,该文件通过FTP与远程运行的开发Web服务器自动(在后台)同步。当我使用我的上网本(它运行我的IDE足够慢,因为它没有混合中的Web服务器)时,这种情况会很有用。
我最熟悉的开发工具是Eclipse,Ant和Subversion。我的偏好是继续使用它们,但我会考虑切换,如果这样做可以很容易地实现这些场景。
问题:
对于一篇文章中的这么多问题感到抱歉,但我认为这些问题都是相关的,并认为将讨论集中在一个地方是有用的。
答案 0 :(得分:12)
这些是合理的情况,还是应该以不同的方式考虑开发和部署?
似乎合理,虽然FTP同步让我想到了Dreamweaver。 :)
考虑使用允许您通过(S)FTP连接到服务器的IDE,或使用以下其中一种...
有哪些工具可以帮助简化开发/部署?用Ant,脚本等来推广我自己的解决方案会不会更好?
Jenkins,Capistrano,Phing,Ant,git push/pull
,rsync
等。
我们如何在部署期间处理数据库问题?如何为特定部署指定数据库连接属性?如果更新到CakePHP应用程序的较新版本(或恢复旧版本)需要更改数据库架构和数据迁移,该怎么办?
使用cake schema generate
和cake schema run update
。
我们如何配置不同部署之间的属性?例如,考虑增加开发期间使用的调试和日志记录级别,防止在开发期间将付款发送到支付网关等。
相应不同的名称文件(例如core.php.prd
vs core.php.dev
)并在安装时重命名。
升级或还原部署如何影响客户?例如,如果他们处于交易中间(例如购买产品),该怎么办?
因此,您的应用程序文件不会以不一致的状态结束,您应该首先将应用程序的新副本签出到新文件夹。复制任何用户提交的文件,重命名*.prd
个文件,然后使用新副本切换旧副本(通过重命名或使用符号链接)。会话应该存储在升级后的某个地方(即php
或database
,而不是cake
)。
我们如何处理不同的CakePHP安装类型?根据安装类型,可能需要将文件安装在不同的位置。我们怎么知道应该在哪里安装文件? CakePHP书籍描述了开发,生产和高级安装。
开发安装与使用.htaccess
文件重定向请求的任何PHP应用程序一样安全(除非您卸载/错误配置mod_rewrite
和PHP,否则人们将看不到您的代码)。除非您可以编辑虚拟主机的文档根目录,否则生产安装稍微复杂一些。高级安装允许您在文件系统中的任何位置安装Cake,但增加了更多的复杂性(因为您的文件位于两个单独的位置,但可能只有一个仓库)