* * * * *
[TOC]
## 簡介
當你準備好將 Laravel 應用部署到生產環境時,你可以執行一些操作來確保應用程序盡可能高效地運行。在本文檔中介紹一些能確保 Laravel 應用被正確部署。
## 服務器配置
### Nginx
如果你將應用程序部署到運行 Nginx 的服務器,可以使用下面的內容來配置 Web 服務器。這個文件可能需要根據你的服務器配置進行自定義。你可以考慮使用?[Laravel Forge](https://forge.laravel.com/)?等服務協助管理你的服務器:
~~~
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_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
~~~
## 優化
### 優化自動加載
部署項目到生產環境時,請確保你優化了 Composer 類的自動加載映射,以便 Composer 可以快速找到正確文件為給定類加載:
~~~
composer install --optimize-autoloader
~~~
> {tip} 除了優化自動加載之外,還應該確保項目的源代碼管理庫中包含了?`composer.lock`?文件。因為當?`composer.lock`?文件存在時,項目的依賴項可以被更快地安裝。
### 優化配置加載
將應用部署到生產環境時,記得在部署過程中運行 Artisan 命令?`config:cache`?:
~~~
php artisan config:cache
~~~
這個命令可以將所有 Laravel 的配置文件合并到單個文件中緩存,此舉能大大減少框架在加載配置值時必須執行的系統文件的數量。
> {note} 如果你在部署過程中執行了?`config:cache`?命令,那么你應該確保僅在配置文件中調用了?`env`?函數。一旦配置被緩存了,將不會加載?`.env`?文件,(除配置文件外)對?`env`?函數的所有調用都將返回?`null`。
### 優化路由加載
如果你構建的是具有許多路由的大型應用程序,那你應該在部署過程中運行 Artisan 命令?`route:cache`:
~~~
php artisan route:cache
~~~
這個命令可以將所有路由注冊減少為緩存文件中的單個方法調用,以達到當應用程序在注冊數百條路由時,提高路由注冊的性能。
> {note} 由于此功能使用 PHP 序列化,而 PHP 無法序列化閉包,因此只能緩存應用程序中基于控制器的路由。
## Forge 部署
如果你還沒有準備好管理自己的服務器配置,或者你的服務器沒有配置 Laravel 應用程序所需的各種服務,[Laravel Forge](https://forge.laravel.com/)是一個不錯的選擇。
Laravel Forge 可以在各種基礎設施提供商(如 DigitalOcean、Linode、AWS 等)上創建服務器。此外,Forge 還能安裝和管理構建 Laravel 應用程序所需的所有工具,如 Nginx、MySQL、Redis、Memcached、Beanstalk 等。
- 前言
- 翻譯說明
- 發行說明
- 升級指南
- 貢獻導引
- 入門指南
- 安裝
- 配置信息
- 文件夾結構
- Homestead
- Valet
- 部署
- 核心架構
- 請求周期
- 服務容器
- 服務提供者
- Facades
- Contracts
- 基礎功能
- 路由
- 中間件
- CSRF 保護
- 控制器
- 請求
- 響應
- 視圖
- URL
- Session
- 表單驗證
- 錯誤
- 日志
- 前端開發
- Blade 模板
- 本地化
- 前端指南
- 編輯資源 Mix
- 安全相關
- 用戶認證
- Passport OAuth 認證
- 用戶授權
- 加密解密
- 哈希
- 重置密碼
- 綜合話題
- Artisan 命令行
- 廣播系統
- 緩存系統
- 集合
- 事件系統
- 文件存儲
- 輔助函數
- 郵件發送
- 消息通知
- 擴展包開發
- 隊列
- 任務調度
- 數據庫
- 快速入門
- 查詢構造器
- 分頁
- 數據庫遷移
- 數據填充
- Redis
- Eloquent ORM
- 快速入門
- 模型關聯
- Eloquent 集合
- 修改器
- API 資源
- 序列化
- 測試相關
- 快速入門
- HTTP 測試
- 瀏覽器測試 Dusk
- 數據庫測試
- 測試模擬器
- 官方擴展包
- Cashier 交易工具包
- Envoy 部署工具
- Horizon
- Scout 全文搜索
- Socialite 社會化登錄