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。此模式下新发布内容即时可见,无需手动构建。

模式三:宝塔面板

宝塔面板下按 Web 服务分为 Apache / nginx 两条安装路线(Apache 使用 .htaccess 包解压即用;nginx 需在面板粘贴一份伪静态规则),完整步骤见 宝塔面板安装。

要点速览:

  • 新建站点:PHP 8.5+,网站目录指向项目根;
  • Apache 包伪静态零配置;nginx 包需粘贴宝塔版伪静态规则(文档中可直接复制);
  • 安装向导自动完成建表、演示数据、storage 软链与主题编译;
  • 装完配置每分钟 php artisan schedule:run 计划任务。

上线检查清单

  • .env 中 APP_ENV=production、APP_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.example、public/ 其余文件
必须可写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_DOMAIN 与 APP_URL 是否一致(均不带路径后缀或均为完整域名)。

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

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