Skip to Content
扩展与运维部署指南

生产环境支持 nginx / Apache / 宝塔面板任一,按需求选择三种模式之一。

生产环境要求

  • PHP 8.5+(扩展:sqlite3 或 pdo_mysql、gd、fileinfo、mbstring)
  • MySQL 5.7+/8.0(可选,默认 SQLite)
  • nginx 或 Apache

模式一:纯静态托管(推荐)

后台「设置 → 静态化设置」开启静态优先,fy:build 生成 build/ 目录后,直接将该目录托管到任意静态服务器(nginx/CDN),后台部署在内网或子域名。

server { root /www/fengyuncms/build; index index.html; location / { try_files $uri $uri/index.html $uri.html =404; } }

内容更新后执行 php artisan fy:build 重新生成。

模式二:同域混合(静态优先 + 动态兜底)

nginx 伪静态(静态文件命中直出,未命中转发 Laravel):

location / { try_files $uri $uri/index.html $uri.html /index.php?$query_string; } # 媒体目录只作静态直出,脚本后缀一律 403(必须位于 location ~ \.php$ 之前) location ~* ^/storage/.*\.(php\d*|phtml|phar)(/|$) { return 403; }

PHP 走 php-fpm 或 php-cgi,入口为 public/index.php。此模式下新发布内容即时可见,无需手动构建。

模式三:宝塔面板

新建站点

PHP 版本选 8.5+。

指定网站目录

指向项目根目录或 public/(推荐 public/)。

配置伪静态

粘贴上述 nginx 规则。

设置运行目录与权限

storage/bootstrap/cache/ 可写。

上线检查清单

  • .envAPP_ENV=productionAPP_DEBUG=false
  • storage/bootstrap/cache/ 可写
  • 已执行 php artisan fy:compile(编译主题)与 php artisan fy:build(生成静态页)
  • 已配置定时任务:php artisan schedule:run(每分钟,驱动定时发布)
  • HTTPS 已启用(后台「站点设置」可配置强制跳转)

安全加固建议

防篡改 / 只读锁定storage/ 以外的全部文件运行期均不变,可整体锁定;storage/ 必须保持可写(框架缓存、编译视图、会话、日志、上传文件)。

分类路径
可锁定app/ config/ routes/ resources/ lang/ plugins/ vendor/database/ 下的 *.php、根目录 .htaccess artisan composer.json composer.lock .env.examplepublic/ 其余文件
必须可写storage/ 全部、bootstrap/cache/.env(仅安装阶段;安装完成后转入锁定)
按需build/(启用静态化时)、database/database.sqlite(SQLite 模式,建议按扩展名只放行 *.sqlite)、public/themes/(仅当允许后台在线编辑主题模板)
  • public/themes/storage/ 之外唯一会被后台写入的目录(「主题管理 → 保存并编译」直接写模板源文件)。锁定它可阻断管理员账号被盗后的模板注入,代价是在线编辑模板不可用,改模板需走部署流程
  • 若防篡改工具支持按扩展名放行,storage/ 下只放行 jpg/png/webp/gif/pdf/zip,让放行目录也写不进可执行文件
  • 上传文件由服务端内容检测决定存储扩展名并随机重命名(不可能落出 .php);Web 层再禁 /storage 下脚本执行作双保险:Apache 规则已随包内置(根目录与 public/ 的 .htaccess),nginx 需将伪静态中的 location ~* ^/storage/... 一并加入

常见问题

访问白名单页面 404 确认 rewrite 规则已生效(Apache 需开启 mod_rewrite 并允许 .htaccess 覆盖)。

后台登录后立即退出 检查 SESSION_DOMAINAPP_URL 是否一致(均不带路径后缀或均为完整域名)。

上传图片 403 确认 storage/app/public 已链接至 public/storagephp artisan storage:link 或手动创建目录联接)。

关于 SEO/GEO 能力(sitemap、JSON-LD、llms.txt、.md 镜像)的配置与验证,见SEO 与 GEO