概述
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
很多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)階干貨歡迎加入我的官方群啊點擊此處