概述
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
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/197166.html
標籤:PHP
