Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.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
Git `composer安装`用于生产部署_Git_Deployment_Composer Php - Fatal编程技术网

Git `composer安装`用于生产部署

Git `composer安装`用于生产部署,git,deployment,composer-php,Git,Deployment,Composer Php,我们有一个任务关键型应用程序,使用Chef部署到约200个EC2实例 我们的供应商目录目前被GIT忽略,但我们已经将重要的依赖项提交到其他地方的GIT中,并且正在自动加载它们。我们的计划是迁移到更传统的方法,即通过Composer在/vendor中安装所有内容,并使用Composer自动加载程序 我的问题是:当我们发布/bulk deploy(同时部署200多台服务器)时,代码会从GIT拉入服务器上的新发布目录,因此我们需要执行composer安装。是否有任何技术可以“提高”composer安装

我们有一个任务关键型应用程序,使用Chef部署到约200个EC2实例

我们的供应商目录目前被GIT忽略,但我们已经将重要的依赖项提交到其他地方的GIT中,并且正在自动加载它们。我们的计划是迁移到更传统的方法,即通过Composer在/vendor中安装所有内容,并使用Composer自动加载程序

我的问题是:当我们发布/bulk deploy(同时部署200多台服务器)时,代码会从GIT拉入服务器上的新发布目录,因此我们需要执行composer安装。是否有任何技术可以“提高”composer安装的可靠性?还是真的没什么好担心的。考虑到我们的服务器数量,即使是1%的故障率也意味着客户机出现停机

我们有另一个应用程序在每次部署时触发composer安装,但至少有24小时我们无法部署,因为其中一个依赖项已“关闭”或移动。在避免将依赖关系提交到主GIT的同时,有哪些方法可以避免这个问题

谢谢

是否有任何技术可以“提高”composer安装的可靠性

在避免将依赖关系提交到主GIT的同时,有哪些方法可以避免这个问题

我的建议是:

  • 不要在产品上运行Composer
  • 构建并打包应用程序以进行部署
  • 运行
    composer安装
    并获取依赖项是构建步骤
  • 构建工具链的最终产品是一个打包的应用程序,包括供应商依赖关系和自动加载-准备部署
  • 然后将软件v1.2.3部署到x个实例

(旁注:Composer Autoloader生成可重新定位的文件。路径是动态的,不绑定到特定目录。这允许解压带有供应商依赖项的打包应用程序,并自动加载到任何文件夹中。)

我们实现了Jenkins来克隆GIT,运行Composer install进行生产,执行一些shell脚本来帮助打包,然后生成一个.tar.gz并将文件发布到AWS S3上的builds bucket中(文件名基于正在构建的分支)。我们调整了部署系统以从S3 bucket获取(该bucket具有非常有限的权限来保护对代码的访问)

最佳实践非常简单。创建一个构建脚本,以推送到带有版本标签的发布分支

我知道我们这里不是在用C编译代码,但是理解创建产品就绪的代码的步骤很重要

无论您使用的是什么包管理器、NPM、composer、bower等等。。。检查资源/资产清单并创建“编译”(缩小/合并/etc)版本非常重要


相比之下,NPM通过一次又一次的吞咽任务来解决这个问题。而composer作为运行脚本。。。我还在搜索WordPress插件部署的流程,因为我们无法访问正在部署的生产服务器。

您好,谢谢您的回复!考虑到我们的部署实际上是一个使用Chef的美化GIT克隆,您建议在哪里使用“打包生产构建”live?在GIT中注册代码库的“release”分支表示“打包生产构建”状态,这会是一个错误吗?或者应该构建代码并将其存储在其他地方,以供我们的实例远程使用?我倾向于说,这个构建应该位于我们主要的GIT回购协议之外,以避免混乱/事故。有什么建议/工具来促进这一点吗?嘿!它不适用于
git克隆
。git签出包含
composer.json
(或者理想情况下是
composer.lock
)。基于此,相关性被拉入。-当然,可以将它们存储回Git并基于“dependencies included”分支创建一个发布标签,但我不建议这样做。
是否应该将代码构建并存储在其他地方供实例远程使用?
是的,构建应该位于外部。例如,您可以使用一个简单的makefile(或PHP构建脚本或基于Ant/Phing的build.xml文件)来完成一些构建任务:
composer安装
+
zip
+
上传到下载文件夹进行发布
。或者,如果您使用CI服务,像Travis或Jenkins:当您将开发分支的最新功能合并到master中时。。并将其标记为新的发布版本,CI服务器运行测试,然后构建任务和(如果有新标记)将所有内容打包并发布到,例如Github版本或内部FTP。