:clap: 本系列持續更新中,歡迎關注:https://github.com/wi1dcard/laravel-deployment。
由於課程上下文關聯比較緊密,在開始前請先閱讀 本文。
你的支援是我寫作的動力;關注我的客官們,請在右上角點個贊,將會讓文章在首頁展示,幫助更多人。
感謝 :clap: !
在上一節中,我們成功地以手動的方式完成了部署。不過,在生產環境下,我們還需要針對 Laravel 進行一些必要的優化。
本篇內容部分摘選自 Laravel 5.8 部署文件,你可以閱讀該文件獲取更多資訊。
Nginx 配置
對於 Laravel 應用來說,優化 Nginx 配置所帶來的效能提升可謂微不足道。因此不建議在中小型專案中花費較多精力調優 Nginx。
不過,有一點值得注意:
server {
# ...
location ~* \.(js|css)$ {
expires 24h;
}
#...
}
通過以上配置,可使 Nginx 匹配請求 URI,若以 js
或 css
結尾,則將響應頭 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/cache
和 storage
目錄的 讀、寫 許可權,在 Laravel 應用執行過程中是需要讀寫它們的。
雜項
根據應用本身的邏輯不同,涉及的 Laravel 功能也不一樣。針對部分專案,你有可能還需要執行以下 Artisan 命令:
$ php artisan storage:link # 軟連結 app/storage 到 public 目錄,以便公開訪問
$ php artisan migrate # 執行遷移
$ php artisan db:seed # 執行資料填充