輕鬆部署 Laravel 應用 | 《10. 手動部署 - 生產環境的必要優化》

Wi1dcard發表於2019-03-18

:clap: 本系列持續更新中,歡迎關注:https://github.com/wi1dcard/laravel-deployment

由於課程上下文關聯比較緊密,在開始前請先閱讀 本文

你的支援是我寫作的動力;關注我的客官們,請在右上角點個贊,將會讓文章在首頁展示,幫助更多人。

感謝 :clap: !

在上一節中,我們成功地以手動的方式完成了部署。不過,在生產環境下,我們還需要針對 Laravel 進行一些必要的優化。

本篇內容部分摘選自 Laravel 5.8 部署文件,你可以閱讀該文件獲取更多資訊。

Nginx 配置

對於 Laravel 應用來說,優化 Nginx 配置所帶來的效能提升可謂微不足道。因此不建議在中小型專案中花費較多精力調優 Nginx。

不過,有一點值得注意:

server {
    # ...
    location ~* \.(js|css)$ {
        expires 24h;
    }
    #...
}

通過以上配置,可使 Nginx 匹配請求 URI,若以 jscss 結尾,則將響應頭 Expires 的值設定為 24h 返回。客戶端瀏覽器將根據該值建立資源快取,並在指定時間後過期,因此可節省部分伺服器靜態資源流量。24h 可根據需要調整,若使用 CDN 服務分發靜態資源,則不必配置此項。

Laravel 的配置快取與路由快取

開啟 配置快取路由快取 能夠在一定程度上提升 Laravel 的效能。

$ php artisan config:cache # 生成配置快取

注意:當開啟配置快取後,env() 函式將會失效;它將會永遠返回 null;因此務必確保在非配置檔案內,未直接呼叫該函式。

$ php artisan route:cache # 生成路由快取

注意:路由快取僅支援控制器風格;若路由註冊時存在閉包(Closures),則無法使用該功能。

注意:生成快取後,對配置和路由的修改將不會生效,需再次執行快取命令,或使用 php artisan cache:clear 命令清除它們。

Composer

在安裝依賴時,建議使用以下命令:

$ composer install --optimize-autoloader --no-dev

其中,--optimize-autoloader 表示生成優化後的自動載入器,雖然生成過程可能較慢,但換來的是提高執行時的效率。--no-dev 表示不安裝 composer.json 中 require-dev 宣告的擴充套件包,在生產環境中我們不需要這些開發依賴。

再談檔案許可權

檔案許可權直接關係到伺服器安全與否。通常情況下,我們應當遵循「最小許可權原則」,即許可權越小越好。對於 Laravel 來說,我個人比較傾向的許可權配置為 750

$ chmod -R 750 /var/www/deployment

你可以通過線上工具 Chmod Calculator 來解析八進位制許可權數字:

以上是 750 所代表的許可權,即檔案所有者可 讀、寫、執行,檔案所有組可 讀、執行,其餘使用者 均不可

也就是說,執行 Nginx 和 PHP-FPM 的 www-data 使用者,可讀、寫、執行;www-data 使用者組內的使用者可讀、執行。

更加嚴格安全的另一個許可權推薦是 640,不過務必確保 www-data 使用者具備 bootstrap/cachestorage 目錄的 讀、寫 許可權,在 Laravel 應用執行過程中是需要讀寫它們的。

雜項

根據應用本身的邏輯不同,涉及的 Laravel 功能也不一樣。針對部分專案,你有可能還需要執行以下 Artisan 命令:

$ php artisan storage:link # 軟連結 app/storage 到 public 目錄,以便公開訪問
$ php artisan migrate # 執行遷移
$ php artisan db:seed # 執行資料填充

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

相關文章