部署
部署
部署
簡介
當(dāng)你準(zhǔn)備部署你的 Laravel
應(yīng)用到生產(chǎn)環(huán)境時(shí),請確保幾個(gè)重要的注意點(diǎn)以保證你的應(yīng)用能盡可能高效的運(yùn)行。本文中我們將會覆蓋幾個(gè)重點(diǎn)來確保你的 Laravel
應(yīng)用部署得當(dāng)。
服務(wù)器配置
Nginx
如果你想要部署你的應(yīng)用到 Nginx
服務(wù)器上,你可能會用到下面這個(gè)配置文件作為一個(gè)開始來配置你的 Web
服務(wù)器。很有可能,這個(gè)文件需要根據(jù)你的服務(wù)器配置來做一些自定義的修改。如果你需要協(xié)助來管理你的服務(wù)器,可以考慮使用 Laravel Forge:
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; } }
改進(jìn)
自動(dòng)加載器改進(jìn)
當(dāng)你準(zhǔn)備往生產(chǎn)環(huán)境部署應(yīng)用時(shí),確保你優(yōu)化了你的 Composer 類的自動(dòng)加載映射,這樣可以使 Composer 可以很快的找到正確的加載文件去加載給定的類:
composer install --optimize-autoloader --no-dev
小提示:除了優(yōu)化自動(dòng)加載器,你還應(yīng)該確保在你的項(xiàng)目代碼倉庫中包含了
composer.lock
這個(gè)文件。當(dāng)你的項(xiàng)目代碼中有composer.lock
這個(gè)文件時(shí),便可以更快的安裝項(xiàng)目中需要的依賴項(xiàng)。
優(yōu)化配置加載
當(dāng)你將應(yīng)用程序部署到生產(chǎn)環(huán)境時(shí),你應(yīng)當(dāng)確保在你部署過程中運(yùn)行 config:cache
Artisan 命令:
php artisan config:cache
此命令將所有 Laravel 的配置文件合并到一個(gè)緩存文件,這次極大地減少了框架在加載配置值時(shí)必須對文件系統(tǒng)進(jìn)行訪問的次數(shù)。
{note} 如果在你部署過程中執(zhí)行
config:cache
命令,你應(yīng)當(dāng)確保你僅從你的配置文件中調(diào)用env
函數(shù)。一旦配置被緩存,.env
文件將不被加載并且對env
函數(shù)的所有調(diào)用將返回null
。
優(yōu)化路由加載
如果你想構(gòu)建具有許多路由的大型應(yīng)用程序,你應(yīng)當(dāng)確保在你部署的過程中運(yùn)行 route:cache
Artisan 命令:
php artisan route:cache
此命令將為所有路由注冊縮減到一個(gè)緩存文件中的單個(gè)方法調(diào)用,從而在注冊數(shù)百個(gè)路由時(shí)提高了路由注冊的性能。
{note} 由于此功能使用 PHP 序列化,你僅能緩存專門使用基于控制器路由的應(yīng)用程序路由。PHP 不能序列化閉包路由。
使用 Forge 部署
如果你還沒有準(zhǔn)備好管理自己的服務(wù)器配置,或者不熟悉配置對運(yùn)行強(qiáng)大的 Laravel 應(yīng)用程序所需的各種服務(wù),Laravel Forge 是一個(gè)好的選擇。
Laravel Forge 能在各種基礎(chǔ)設(shè)施提供商(如:DigitalOcean,Linode,AWS 等等)上創(chuàng)建服務(wù)器。另外,F(xiàn)orge 安裝和管理構(gòu)建強(qiáng)大 Laravel 應(yīng)用程序所需的所有工具,比如:Nginx,MySQL,Redis,Memcached,Beanstalk 等等。