PHP 教程:使用 Composer 時莹规,這些最佳實踐你必須知道

概述

Composer 是 PHP 應(yīng)用程序的依賴管理器,最初發(fā)布于大約 8 年前忧额,2012 年 3 月厘肮。

在 php 中使用 Composer 可以提高代碼的可重用性,并使你的項目能夠輕松地集成來自Packagist(主要的 PHPComposer 庫)的 PHP 庫睦番。今天类茂,我們將重點介紹幾個部署最佳實踐耍属。

Composer 可能會變慢

這篇文章將關(guān)注如何讓 Composer 速度更快,并在每次部署應(yīng)用程序時不再需要使用全新的 Composer 安裝來安裝軟件包巩检。

Magento 是一個需要大量內(nèi)存的 composer 項目的例子厚骗。如果你需要為每個部署安裝 Composer,你能想象需要多少內(nèi)存嗎兢哭?Composer 可能會因為內(nèi)存不足而失敗领舰,如Stack Overflow 帖子所述。

盡管將包添加到你的項目中很容易迟螺,但在 Amezmo 這里冲秽,我們采用保守的方法添加新的項目依賴項,原因如下矩父。

  • 減慢初始 Composer 安裝速度
  • 每個 Composer 包都會增加新安全問題的可能性

最佳做法

--no-ansi

此標(biāo)志禁用 ANSI 輸出劳跃,這意味著彩色輸出將被禁用。彩色輸出浙垫,如綠色和紅色字體顏色以及人眼喜歡的背景顏色。這對于我們手動運行 Composer 時非常有用郑诺,但是對于自動部署夹姥,我們不想用奇怪的字符擾亂我們的日志文件。

--no-interaction

同樣辙诞,在自動化部署的環(huán)境中辙售,我們不希望部署在等待輸入時停滯不前。此標(biāo)志阻止 Composer 要求用戶輸入飞涂。

--optimize-autoloader

此標(biāo)志告訴 Composer 將生成的代碼自動加載旦部。autoloader 是當(dāng)你的入口點確實需要 'vendor/autoload.php' 時調(diào)用的;

--no-progress

由于進(jìn)度報告使用特殊的終端 ANSI 代碼较店,因此我們不希望報告進(jìn)度士八,因為它會使我們的日志文件混亂。在進(jìn)行非交互式

部署和 composer 安裝時梁呈,這是完全沒有必要的婚度。

--no-dev

這一點至關(guān)重要。我們從不希望將開發(fā)包安裝到生產(chǎn)服務(wù)器上官卡。像 phpunit 和其他不應(yīng)讓其投入生產(chǎn)的軟件包被視為 “dev”軟件包蝗茁。它們在 composer.json 文件中的 “require-dev” 屬性下具有特殊條目。

--profile

這個是可選的寻咒,但是我總是喜歡包含它哮翘,因為它顯示了 Composer 用于安裝單個依賴項的內(nèi)存量。

如何在部署時緩存 Composer 程序包

現(xiàn)在毛秘,我們已經(jīng)定義了生產(chǎn)級 composer 安裝命令饭寺,讓我們簡單地介紹一下在部署時使 Composer 更快的方法。

步驟 1。

在你的 Webroot 之外的某個地方創(chuàng)建一個全局 Composer vendor 目錄佩研,當(dāng)然該目錄不能公開訪問柑肴。

注意:Amezmo 使用如下所示的根目錄布局,因此我們將在下面的 bash 命令中使用它旬薯。當(dāng)然晰骑,你可以用自己的目錄替換

這些目錄,并且可以實現(xiàn)所需的結(jié)果绊序。

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

/webroot/vendor 是我們的全局軟件包目錄硕舆,將從中為每個版本創(chuàng)建鏈接。

運行以下命令從 release 目錄創(chuàng)建的 vendor 目錄鏈接到全局 vendor 目錄骤公。每次部署時都必須執(zhí)行此操作抚官,并且在從發(fā)行目錄運行 composer 安裝之前。

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

請注意阶捆,從 release 目錄運行 composer install 之前凌节,運行上述命令至關(guān)重要。以下是步驟:

  • 應(yīng)該創(chuàng)建 release 目錄
  • 運行 Git 獲取源代碼
  • 執(zhí)行以上命令
  • 最后運行 composer install

按照上述順序完成所有操作后洒试,你的軟件包將被 “緩存” 到 /webroot/vendor 目錄中倍奢,并且每次部署應(yīng)用程序時都不需要重新安裝軟件包。

結(jié)論

  • 定義了一個 Composer 命令垒棋,該命令消除了所有不必要的功能卒煞。
  • 重點介紹了在部署時緩存 Composer 軟件包的最佳實踐部署模式。

第 1 步叼架。

在 Webroot 完全不在的地方創(chuàng)建一個全局 Composer 供應(yīng)商目錄畔裕,并(此段落重復(fù),應(yīng)刪除)

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

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

image

很多PHPer在進(jìn)階的時候總會遇到一些問題和瓶頸乖订,業(yè)務(wù)代碼寫多了迷茫沒方向扮饶,不知道該從哪兒入手去提升自己≌Ч梗→→管理整理了一些資料贴届,有 騰訊 等一線大廠進(jìn)階知識體系 可供參考(相關(guān)學(xué)習(xí)資料以及筆面試題)

覆蓋各個技術(shù)棧:分布式架構(gòu)、高可擴展蜡吧、高性能毫蚓、高并發(fā)、服務(wù)器性能調(diào)優(yōu)昔善、TP6元潘,laravel,YII2君仆,Redis翩概,Swoole牲距、Swoft、Kafka钥庇、Mysql優(yōu)化牍鞠、shell腳本、Docker评姨、微服務(wù)难述、Nginx等多個知識點高級進(jìn)階干貨歡迎加入我的官方群點擊此處

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市吐句,隨后出現(xiàn)的幾起案子胁后,更是在濱河造成了極大的恐慌,老刑警劉巖嗦枢,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件攀芯,死亡現(xiàn)場離奇詭異,居然都是意外死亡文虏,警方通過查閱死者的電腦和手機侣诺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來氧秘,“玉大人年鸳,你說我怎么就攤上這事∶舸ⅲ” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵朋鞍,是天一觀的道長已添。 經(jīng)常有香客問我,道長滥酥,這世上最難降的妖魔是什么更舞? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮坎吻,結(jié)果婚禮上缆蝉,老公的妹妹穿的比我還像新娘。我一直安慰自己瘦真,他們只是感情好刊头,可當(dāng)我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著诸尽,像睡著了一般原杂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上您机,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天穿肄,我揣著相機與錄音年局,去河邊找鬼。 笑死咸产,一個胖子當(dāng)著我的面吹牛矢否,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播脑溢,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼僵朗,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了焚志?” 一聲冷哼從身側(cè)響起衣迷,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎酱酬,沒想到半個月后壶谒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡膳沽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年汗菜,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片挑社。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡陨界,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出痛阻,到底是詐尸還是另有隱情菌瘪,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布阱当,位于F島的核電站俏扩,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏弊添。R本人自食惡果不足惜录淡,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望油坝。 院中可真熱鬧嫉戚,春花似錦、人聲如沸澈圈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瞬女。三九已至凤覆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間拆魏,已是汗流浹背盯桦。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工慈俯, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人拥峦。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓贴膘,卻偏偏與公主長得像,于是被迫代替她去往敵國和親略号。 傳聞我的和親對象是個殘疾皇子刑峡,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容