部署到生产环境
介绍
将一个使用 Filament 的 Laravel 应用部署到生产环境与部署其他 Laravel 应用相似。不过,对于 Filament 面板,还有一些额外的步骤来确保性能及安全上的优化
确保用户有权限访问面板
当用户监测到你应用的 APP_ENV
不是 local
时,它会要求你为用户设置权限。这是为了确保生产环境中只有授权用户才能访问 Filament 面板,同时也保留了本地环境易于使用的特点。
要授予用户访问面板的权限,请遵循用户章节的相关指南.
NOTE
如果你没有遵循这些步骤,且用户模型没有实现 FilamentUser
接口,生产环境中的用户将无法登录到面板中。
提升 Filament 面板性能
生产环境中优化 Filament
要在生产环境中优化优化 Filament,你应该在部署脚本中运行如下命令:
php artisan filament:optimize
该命令将缓存 Filament 组件以及 Blade 图标,这样可以显著提升 Filament 面板的性能,该命令是 php artisan filament:cache-components
和 php artisan icons:cache
的快捷方式。
清理缓存请运行:
php artisan filament:optimize-clear
缓存 Filament 组件
如果你没有使用 filament:optimize
命令,你也可以考虑在部署脚本中运行 php artisan filament:cache-components
,特别是当你有大量组件(资源、页面、Widget、关联管理器、自定义 Livewire 组件等)时。这将在应用的 bootstrap/cache/filament
目录中生成缓存文件,其中包含每个组件类型的索引。这在某些应用中可以显著提升 Filament 的性能,因为它减少了需要扫描的文件数量并且自动发现组件。
不过,如果你在本地开发应用,应该避免使用该命令,因为它在清除或者重新缓存之前,将会阻止你发现新组件。
你可以运行 php artisan filament:clear-cached-components
在任何时候清理缓存而不重新生成缓存。
缓存 Blade 图标
如果你未使用 filament:optimize
命令,你可能希望在本地环境中和部署脚本中运行 php artisan icons:cache
。这是因为 Filament 使用了 Blade Icons 包,缓存可以大大提升性能。
服务器启用 OPcache
参考 Laravel Forge 文档:
TIP
在生产环境中优化 PHP OPcache 将会配置 OPcache 以在内存中保存编译过的 PHP 代码,来提升性能。
请使用搜索引擎去查询相关 OPcache 设置教程。
优化 Laravel 应用
你也可以考虑在部署脚本中运行 php artisan:optimize
以优化生产环境中的应用。该命令将会缓存配置和路由。
确保资源及时更新
在 Filament 安装过程中,Filament 将 php artisan filament:upgrade
命令添加到了 composer.json
文件的 post-autoload-dump
脚本中。该命令将确保你下载该包时及时更新资源。
我们强烈建议你将此脚本保留在 composer.json
文件中,否则你在生产环境中可能会碰到资源缺失或者过期等问题。不过,如果你一定要移除该命令,请确保部署过程中手动运行该命令。
Still need help? Join our Discord community or open a GitHub discussion