PHP 教程:使用 Composer 时,这些最佳实践你必须知道

概述

Composer 是 PHP 应用程序的依赖管理器,最初发布于大约 8 年前,2012 年 3 月。

在 php 中使用 Composer 可以提高代码的可重用性,并使你的项目能够轻松地集成来自Packagist(主要的 PHPComposer 库)的 PHP 库。今天,我们将重点介绍几个部署最佳实践。

Composer 可能会变慢

这篇文章将关注如何让 Composer 速度更快,并在每次部署应用程序时不再需要使用全新的 Composer 安装来安装软件包。

Magento 是一个需要大量内存的 composer 项目的例子。如果你需要为每个部署安装 Composer,你能想象需要多少内存吗?Composer 可能会因为内存不足而失败,如Stack Overflow 帖子所述。

尽管将包添加到你的项目中很容易,但在 Amezmo 这里,我们采用保守的方法添加新的项目依赖项,原因如下。

  • 减慢初始 Composer 安装速度
  • 每个 Composer 包都会增加新安全问题的可能性

最佳做法

--no-ansi

此标志禁用 ANSI 输出,这意味着彩色输出将被禁用。彩色输出,如绿色和红色字体颜色以及人眼喜欢的背景颜色。这对于我们手动运行 Composer 时非常有用,但是对于自动部署,我们不想用奇怪的字符扰乱我们的日志文件。

--no-interaction

同样,在自动化部署的环境中,我们不希望部署在等待输入时停滞不前。此标志阻止 Composer 要求用户输入。

--optimize-autoloader

此标志告诉 Composer 将生成的代码自动加载。autoloader 是当你的入口点确实需要 'vendor/autoload.php' 时调用的;

--no-progress

由于进度报告使用特殊的终端 ANSI 代码,因此我们不希望报告进度,因为它会使我们的日志文件混乱。在进行非交互式

部署和 composer 安装时,这是完全没有必要的。

--no-dev

这一点至关重要。我们从不希望将开发包安装到生产服务器上。像 phpunit 和其他不应让其投入生产的软件包被视为 “dev”软件包。它们在 composer.json 文件中的 “require-dev” 属性下具有特殊条目。

--profile

这个是可选的,但是我总是喜欢包含它,因为它显示了 Composer 用于安装单个依赖项的内存量。

如何在部署时缓存 Composer 程序包

现在,我们已经定义了生产级 composer 安装命令,让我们简单地介绍一下在部署时使 Composer 更快的方法。

步骤 1。

在你的 Webroot 之外的某个地方创建一个全局 Composer vendor 目录,当然该目录不能公开访问。

注意:Amezmo 使用如下所示的根目录布局,因此我们将在下面的 bash 命令中使用它。当然,你可以用自己的目录替换

这些目录,并且可以实现所需的结果。

/webroot
|----logs
|----vendor
|----storage
|----current -> /webroot/release/${TIMESTAMP}.${COMMIT_ID}
|----release
|-------${TIMESTAMP}.${COMMIT_ID}
|-------${TIMESTAMP}.${COMMIT_ID

/webroot/vendor 是我们的全局软件包目录,将从中为每个版本创建链接。

运行以下命令从 release 目录创建的 vendor 目录链接到全局 vendor 目录。每次部署时都必须执行此操作,并且在从发行目录运行 composer 安装之前。

ln -sT /webroot/vendor webroot/release/${TIMESTAMP}.${COMMIT_ID}/vendor

请注意,从 release 目录运行 composer install 之前,运行上述命令至关重要。以下是步骤:

  • 应该创建 release 目录
  • 运行 Git 获取源代码
  • 执行以上命令
  • 最后运行 composer install

按照上述顺序完成所有操作后,你的软件包将被 “缓存” 到 /webroot/vendor 目录中,并且每次部署应用程序时都不需要重新安装软件包。

结论

  • 定义了一个 Composer 命令,该命令消除了所有不必要的功能。
  • 重点介绍了在部署时缓存 Composer 软件包的最佳实践部署模式。

第 1 步。

在 Webroot 完全不在的地方创建一个全局 Composer 供应商目录,并(此段落重复,应删除)

原文地址:https://dev.to/ryan1/php-deployment-best...

译文地址:https://learnku.com/php/t/50887

image

很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了迷茫没方向,不知道该从哪儿入手去提升自己。→→管理整理了一些资料,有 腾讯 等一线大厂进阶知识体系 可供参考(相关学习资料以及笔面试题)

覆盖各个技术栈:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货欢迎加入我的官方群点击此处

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容