我通常在生產環境中使用簡單的composer install
部署供應商。部署沒有Composer的供應商
我不希望在生產中使用作曲家,所以我需要從我的機器構建供應商並將它們部署到生產環境中。
我可以複製vendor
目錄,但我肯定有安裝其他文件一樣app/bootstrap.cache.php
或其他autoloader.php
2的問題,以便:
- 這些是什麼文件,我可以安裝/更新?
- 無論如何,是否有已知的實踐部署預構建供應商?
我通常在生產環境中使用簡單的composer install
部署供應商。部署沒有Composer的供應商
我不希望在生產中使用作曲家,所以我需要從我的機器構建供應商並將它們部署到生產環境中。
我可以複製vendor
目錄,但我肯定有安裝其他文件一樣app/bootstrap.cache.php
或其他autoloader.php
2的問題,以便:
我會說這個過程很直接(至少它適用於我):爲了部署你的應用程序,你需要創建一個新的目錄,將代碼從一個標籤導入它(即你不要不導出所有存儲庫管理數據,如.git
目錄)。然後運行composer install --no-dev
,這將執行一些工作,並且還應該運行composer.json
文件中的腳本中提到的任何內容。
這個以前爲空的目錄中的結果會以您喜歡的任何方式進入生產服務器,無論是SCP,SFTP,rsync ......這裏沒有真正的「魔術」,實際上它是複製文件。
您可能希望確保快速回滾,因此我建議將每個版本部署到指定的目錄中,然後將當前版本與符號鏈接關聯。例如:您已在/srv/www/htdocs/app-1.0
中部署舊版本,並將目錄/srv/www/htdocs/app
指向此目錄。虛擬主機使用通用app
目錄來爲應用程序提供服務。
部署將創建一個新目錄/srv/www/htdocs/app-1.1
,並將其置於活動狀態將簡單地刪除舊的符號鏈接併爲新目錄創建一個新鏈接。這應該讓你的新版本即時生效。回滾意味着刪除符號鏈接並重新創建指向舊版本的鏈接。
YMMV,因爲像緩存這樣的東西會影響結果,但這並不在如何以及在哪裏使用Composer來部署軟件。
這是非常有趣的,謝謝你這個偉大的anwser。這就是我要找的。我會嘗試。現在你說這讓我想起Capifony部署的方式(也許我應該從這裏獲取靈感)。 –
我不確定我是否理解。已經在'vendor'中覆蓋'autoloader.php'。 也複製'app/bootstrap.cache.php'應該沒問題。 你到底想要解決什麼問題?在生產中不使用'composer install'可以獲得什麼好處? –
正如你發現的,作曲家不僅僅是建立供應商目錄。在本地運行Composer更新後,您需要將整個項目目錄上傳到共享主機。然後穿過你的手指,希望沒有絕對的文件路徑潛伏。 – Cerad
@TomášVotruba我想在我的作品中儘可能少運行命令,也有一些沒有外出訪問任何外部網絡。 @Cerad說的是絕對路徑,反正'bootstrap.cache.php'中不會有一些? –