Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何有效地修补运行在多台主机上的代码?_Php_Codeigniter_Deployment_Release Management - Fatal编程技术网

Php 如何有效地修补运行在多台主机上的代码?

Php 如何有效地修补运行在多台主机上的代码?,php,codeigniter,deployment,release-management,Php,Codeigniter,Deployment,Release Management,一个产品是一个不断开发的CMS,新功能补丁总是在推出。该产品托管在多台服务器上,对于其中一些服务器,我只有FTP凭据和对db的访问权限,而对于其他服务器,我有完全的根访问权限。现在,一旦测试后发布了新功能,我就必须手动ftp文件并在所有服务器上运行SQL查询。这非常耗时、容易出错且效率低下。我怎样才能使它更健壮、更简单,或者使它的某些部分实现自动化?CMS基于PHP、MySQL、JS、HTML和CSS。管理部分对所有人来说都是通用的。皮肤和一些自定义模块是为不同的客户端开发的,我们唯一更新的部分

一个产品是一个不断开发的CMS,新功能补丁总是在推出。该产品托管在多台服务器上,对于其中一些服务器,我只有FTP凭据和对db的访问权限,而对于其他服务器,我有完全的根访问权限。现在,一旦测试后发布了新功能,我就必须手动ftp文件并在所有服务器上运行SQL查询。这非常耗时、容易出错且效率低下。我怎样才能使它更健壮、更简单,或者使它的某些部分实现自动化?CMS基于PHP、MySQL、JS、HTML和CSS。管理部分对所有人来说都是通用的。皮肤和一些自定义模块是为不同的客户端开发的,我们唯一更新的部分是管理

更新


为了管理我们使用GIT的代码,SQL不是这个GIT结构的一部分,我将与产品经理/所有者讨论如何对其进行版本控制。

这是未打包代码的一个大问题


就我个人而言,我有一个PHAR,它在执行时将代码提取到特定文件夹并执行所需的查询。

我已经在数十台服务器上运行了web部署,每月处理数亿访问者

SQL变更管理永远是一个怪兽。你唯一的希望是要么在家里滚自己的球(就像我做的那样),要么使用类似的东西

要处理文件同步,您需要许多工具,这些工具都经过精心设计,可以协同工作,包括:

  • 正确分支的源代码版本控制(bzr、svn等)(需要稳定分支、开发分支、测试分支)
  • 持续集成服务器
  • 每台服务器上的SFTP支持
  • 希望通过单元测试和集成测试来确定构建质量
  • 在每台服务器上进行Rsync
  • 构建脚本(我在Phing中执行这些操作)
  • 部署脚本(在Phing中也是如此)
  • 知道怎么做
  • 一般过程大约需要20小时进行彻底研究,大约需要40小时进行设置。当我起草文档时,涉及到40多个不同的步骤。创建SQL更改管理实用程序又花了20-30个小时。再加上10个小时的测试,您将看到一个100-120小时的项目,但这将大大节省您在未来糟糕的部署中的时间,并将部署时间减少到单击按钮所需的时间


    这就是为什么我会就设置整个过程进行咨询,而在客户端网络上设置通常需要约5个小时。

    您是否使用任何类型的版本控制系统?(CVS、SVN、git)?我最近一直在处理一个类似的主题,并偶然发现了这篇文章:。它为deploymen和file trasnfer之间的差异提供了一些有趣的想法。还要确保查看Git Hooks(),这在您的案例中可能是一种非常有趣的方法。对于我工作的一个产品,我们曾经推出RPM软件包。每周五发行一次小型电影。只需安装软件包,它就会更新所有内容。但在当前情况下,有些主机是rackspace cloudsites,有些不属于我们,有些是简单的共享主机解决方案。现在是2012年。我看不出有SFTP作为需求的问题是什么。我敢打赌,您当前通过FTP登录的每台主机都希望您使用SFTP isntead。从商业角度来看,这一切看起来都非常昂贵。我们并不是每台服务器都有SFTP,如果我们有SFTP,我会编写一个脚本,将代码推送到所有服务器,运行部署后步骤等@Kumar实际上,除了SQL变更管理应用程序(您可以在内部制作)之外,该列表中的每一件事都是开源和免费的。这些工具不需要花钱,需要的是知识、失误和把每件事都做得恰到好处。该产品来自一家非常小的企业,是非常本地化的产品。我实际上在看WordPress更新是如何工作的。不管目前的产品如何,我都会探索你提到的任何东西,只是为了科学:-)