部署
當你準備部署你的
Laravel 應用到生產環境時,請確保幾個重要的注意點以保證你的應用能盡可能高效的運作。本文中我們將會涵蓋幾個重點來確保你的 Laravel
應用程式部署得當。
server { listen 80; server_name example.com; root /example.com/public; add_header X-Frame-Options "SAMEORIGIN"; add_header X-XSS-Protection "1; mode=block"; add_header X-Content-Type-Options "nosniff"; index index.html index.htm index.php; charset utf-8; location / { try_files $uri $uri/ /index.php?$query_string; } location = /favicon.ico { access_log off; log_not_found off; } location = /robots.txt { access_log off; log_not_found off; } error_page 404 /index.php; location ~ \.php$ { fastcgi_pass unix:/var/run/php/php7.2-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; include fastcgi_params; } location ~ /\.(?!well-known).* { deny all; } }##################
改進
自動載入器改進
當你準備好到生產環境部署應用程式時,確保你優化了你的Composer 類別的自動載入映射,這樣可以讓Composer 可以很快的找到正確的載入檔去載入給定的類別:
composer install --optimize-autoloader --no-dev
小提示:除了最佳化自動載入器,你也應該確保在你的專案程式碼倉庫中包含了
composer.lock
這個檔案。當你的專案程式碼中有composer.lock
這個檔案時,便可以更快的安裝專案中所需的依賴項。
優化設定載入
當你將應用程式部署到生產環境時,你應該確保在你部署過程中執行config:cache
Artisan 指令:
php artisan config:cache
此指令將所有Laravel 的設定檔合併到一個快取文件,這次大大減少了框架在載入設定值時必須對檔案系統進行存取的次數。
{note} 如果在你部署過程中執行
config:cache
命令,你應該確保你只從你的設定檔中呼叫env
函數。一旦配置被緩存,.env
檔案將不被載入並且對env
函數的所有呼叫將傳回null
。
優化路由載入
如果你想建立具有許多路由的大型應用程序,你應該確保在你部署的過程中運行route:cache
Artisan 命令:
php artisan route:cache
此命令將為所有路由註冊縮減到一個快取檔案中的單一方法調用,從而在註冊數百個路由時提高了路由註冊的效能。
{note} 由於此功能使用 PHP 序列化,你只能快取專門使用基於控制器路由的應用程式路由。 PHP 不能序列化閉包路由。
使用Forge 部署
如果你還沒準備好管理自己的伺服器配置,或者不熟悉配置對運行強大的Laravel 應用程式所需的各種服務,Laravel Forge 是一個不錯的選擇。
Laravel Forge 能在各種基礎設施供應商(如:DigitalOcean,Linode,AWS 等等)上建立伺服器。另外,Forge 安裝和管理建立強大 Laravel 應用程式所需的所有工具,例如:Nginx,MySQL,Redis,Memcached,Beanstalk 等等。