:clap: 本系列持續更新中,歡迎關注:https://github.com/wi1dcard/laravel-deploy...。
由於課程上下文關聯比較緊密,在開始前請先閱讀 本文。
你的支援是我寫作的動力;關注我的客官們,請在右上角點個贊,將會讓文章在首頁展示,幫助更多人。
感謝 :clap: !
Git 和 Composer 是部署 PHP 專案時必不可少的兩款工具。用它們代替原有 SCP 方案有許多好處:
- 安全
- 快速
- 可回滾
- 易管理
- ...
好處非常非常多。實際上,正如之前提到的「在生產環境中這樣做很危險」,直接使用 SCP 或壓縮包傳輸程式碼是萬萬不可取的,具體原因請見文末。
安裝 Git
依然使用 APT 安裝:
$ apt install -y git
安裝 Composer
Composer 比較特殊,不能通過 APT 安裝。雖然網路上流傳著一大堆從第三方伺服器直接下載 composer.phar
檔案的安裝方式,但根據 Composer 的官方文件,正確的安裝姿勢應當為:
$ wget https://raw.githubusercontent.com/composer/getcomposer.org/master/web/installer -O - -q | php -- --filename=composer --install-dir=/usr/local/bin
以上修改自 https://getcomposer.org/doc/faqs/how-to-in...,另一種比較複雜的安裝方式可參考 https://getcomposer.org/download/。你可以不必關心該指令碼的具體意義,通常它只需執行一次。
注意:通過第三方伺服器、直接下載
composer.phar
不進行任何檢查,均無法保證 Composer 正常執行,且存在安全風險!請務必遵循官方文件內的說明。
稍等片刻,將會出現以下輸出:
All settings correct for using Composer
Downloading...
提示當前環境檢查通過,可正常使用 Composer;隨後開始下載。
鑑於眾所周知的原因,大陸訪問國際網路速度奇慢無比,請耐心等待。當出現以下提示時,表示已經安裝成功:
Composer (version 1.8.4) successfully installed to: /usr/local/bin/composer
Use it: php /usr/local/bin/composer
按照提示,我們可以使用 /usr/local/bin/composer
執行 Composer,當然,還有個更簡單的方法:
$ composer
你可能會收到這樣一條警告:
Do not run Composer as root/super user! See https://getcomposer.org/root for details
意為請勿使用根使用者執行 Composer;暫時不必關心它,我將在後續課程中詳細說明。
配置 Packagist 中國映象
這一步是可選的。如果你的伺服器位於大陸,強烈建議使用可信賴的代理,或是國內 Packagist 映象。
推薦使用 Laravel-China 提供的 Packagist 中國映象,執行以下命令即可切換伺服器內 Composer 的預設 Packagist 源:
$ composer config -g repo.packagist composer https://packagist.laravel-china.org
擴充:為什麼生產環境中萬萬不可使用 SCP 傳輸程式碼?
更準確地說,這個問題應該是:為什麼不可使用 SCP 將整個 Laravel 應用傳輸到伺服器的 Nginx 站點目錄?。
SCP 傳輸檔案 這一操作本身不存在任何問題;不過,本地開發時 APP_DEBUG
(除錯模式)通常為開啟狀態,並且 APP_KEY
(應用金鑰)已經生成為一個固定值,若是利用 SCP 將整個目錄傳輸到伺服器並直接公開,那麼 .env
檔案內的值也會照搬到伺服器內。
除錯模式時展示的詳細錯誤資訊雖然有利於排查問題,但在生產環境開啟極易引發安全漏洞;至於應用金鑰,Laravel 將使用它加密 Cookie 等資訊,在本地和線上絕對不應當使用相同值,更嚴格地說,線上的 APP_KEY
必須完全隨機並確保不被任何人獲得。
雖然你可以上傳後再修改它們的值,或是使用類似 Rsync 等支援忽略特定檔案的方式。但其一,不方便、易受人為失誤影響;其二,無法享受 Git + Composer 的大量優勢。
綜上所述,在實際部署過程中,絕對不推薦使用 SCP 傳輸程式碼。