輕鬆部署 Laravel 應用 | 《07. 手動部署 - 安裝 Git 和 Composer》

Wi1dcard發表於2019-03-07

: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 傳輸程式碼

我感謝自己平凡,敢愛敢恨沒負擔。
我感謝自己不凡,可愛可恨都包攬。

相關文章