部署到生产环境
简介
将使用 Filament 的 Laravel 应用部署到生产环境,与部署其他 Laravel 应用类似。不过还有几项额外步骤,以确保面板在性能与安全性上得到优化。
关于本地开发性能的提示,请参阅 优化本地开发。
确保用户有权访问面板
当 Filament 检测到应用的 APP_ENV 不是 local 时,会要求你为用户配置授权。这样可确保生产环境中只有授权用户能访问面板,同时本地环境仍易于上手。
要授权用户访问面板,请遵循 用户章节中的指南。
WARNING
若不按这些步骤操作,且用户模型未实现 FilamentUser 接口,则生产环境中将无人能登录面板。
提升 Filament 面板性能
为生产环境优化 Filament
要为生产环境优化 Filament,应在部署脚本中运行以下命令:
php artisan filament:optimize该命令会缓存 Filament 组件,并额外缓存 Blade Icons,可显著提升面板性能。它是 php artisan filament:cache-components 与 php artisan icons:cache 的简写。
要一次性清除这些缓存,可运行:
php artisan filament:optimize-clear缓存 Filament 组件
若未使用 filament:optimize 命令,可考虑在部署脚本中运行 php artisan filament:cache-components,尤其是在组件数量很多时(资源、页面、小部件、relation manager、自定义 Livewire 组件等)。这会在应用的 bootstrap/cache/filament 目录创建缓存文件,其中包含各类组件的索引。在部分应用中可显著提升 Filament 性能,因为减少了需扫描并自动发现组件的文件数量。
不过,若在本地积极开发应用,应避免使用该命令,因为它会阻止发现任何新组件,直到清除或重建缓存。
可随时运行 php artisan filament:clear-cached-components 清除缓存(不必重建)。
缓存 Blade Icons
若未使用 filament:optimize 命令,可考虑在本地以及部署脚本中运行 php artisan icons:cache。因为 Filament 使用 Blade Icons 包,缓存后性能会好得多。
在服务器上启用 OPcache
要检查 OPcache 是否已启用,运行:
php -r "echo 'opcache.enable => ' . ini_get('opcache.enable') . PHP_EOL;"应看到 opcache.enable => 1。若没有,在 php.ini 中加入以下行以启用:
opcache.enable=1 # Enable OPcache摘自 Laravel Forge 文档:
TIP
为生产环境优化 PHP OPcache,会将已编译的 PHP 代码存入内存,从而大幅提升性能。
请用搜索引擎查找适用于你环境的 OPcache 配置说明。
优化 Laravel 应用
还应考虑在部署脚本中运行 php artisan optimize,为生产环境优化 Laravel 应用。这会缓存配置文件与路由。
确保资源文件是最新的
Filament 安装过程中,会把 php artisan filament:upgrade 命令加入 composer.json 的 post-autoload-dump 脚本。该命令会在你下载包时确保资源文件保持最新。
强烈建议将该脚本保留在 composer.json 中,否则生产环境可能出现资源缺失或过时。若必须移除,请确保在部署流程中手动运行该命令。