安装部署 2 更新于 2026-10-13

安装与部署

一、环境要求

项目最低要求推荐
PHP7.48.0+
MySQL5.78.0
Web 服务器Apache / NginxNginx 1.20+
磁盘200 MB1 GB+

必须开启的 PHP 扩展

pdo_mysql   curl   gd   zip   mbstring   openssl   fileinfo

可以用下面的命令自查:

php -m | grep -E "pdo_mysql|curl|gd|zip|mbstring|openssl|fileinfo"

二、上传程序

把程序包解压后,将 public/ 目录设为站点根目录(推荐),或直接指向程序根目录并配置好伪静态。

安全提示:app/、config/、runtime/ 必须禁止直接访问。Apache 用户可直接使用程序自带的 .htaccess;Nginx 用户请参考下方配置。

三、运行安装向导

浏览器访问:

http://你的域名/install/

向导共四步:

  1. 环境检测 —— 检查 PHP 版本、扩展与目录写权限
  1. 数据库配置 —— 填写主机、端口、库名、账号密码与表前缀
  1. 管理员设置 —— 设置后台账号与密码,建议同时填写站点名称
  1. 完成安装 —— 自动建表、导入演示数据并写入 install/install.lock

安装完成后请立即删除 /install/ 目录,或确认 install.lock 已生成(程序会自动锁定重装入口)。

四、Nginx 伪静态

server {
    listen 80;
    server_name example.com;
    root /www/wenshu/public;
    index index.php;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

    # 禁止访问敏感目录
    location ~ ^/(app|config|runtime|install/data)/ {
        deny all;
    }
}

注意 /docs 与源码目录 docs/ 同名。 上面的配置把站点根指向 public/,docs/ 在 Web 根之外,不会有冲突。 但如果你直接以项目根目录作为站点根(不套一层 public/),必须为 /docs 显式加一条路由规则,否则 Nginx 会把 /docs 当成真实目录 → 301 跳到 /docs/ → 目录列表关闭 → 403。此时追加:

# /docs 是应用路由(开发文档板块),优先交给入口脚本,避免被真实目录抢走
location ~ ^/docs(/.*)?$ {
    # docs/ 是源码目录:禁止直下其中的 .md 源文件
    if ($request_filename ~* ^.*?/docs/.+\.(md|markdown)$) { return 403; }
    # ⚠ 不要写 try_files $uri /index.php$is_args$args;
    #   请求 /docs 时 $uri 恰好命中真实目录 站点根/docs/,Nginx 会按目录直出
    #   → 301 补斜杠 → autoindex off → 403(app 的 DocController 根本没被调用)。
    #   必须内部重写,让 /docs、/docs/、/docs/xxx 统一走应用路由。
    rewrite ^/docs(/.*)?$ /index.php last;
}

改完记得重载 Nginx(nginx -s reload 或面板点「重启」),否则规则不生效。 若一时无法重载,项目已在源码目录放了兜底入口 docs/index.php:它会把 /docs/ 交回应用前台,使开发文档在「未配伪静态」的环境下也能打开。 配好并重载后该文件不再被命中,可安全删除。

五、上线前检查清单

  • [ ] 修改默认管理员密码(默认 admin / admin888)
  • [ ] 关闭调试模式:.env 中 APP_DEBUG = false
  • [ ] 开启 HTTPS 并强制跳转
  • [ ] 配置好伪静态规则,并确认 /list/1.html 能正常打开
  • [ ] 检查 runtime/、public/storage/ 目录可写
  • [ ] 设置好计划任务(php think cron:run 或访问配置的定时接口)
  • [ ] 定期备份数据库与上传目录

六、升级

  1. 备份数据库与 public/storage/ 上传目录
  1. 覆盖程序文件(不要覆盖 config/、public/storage/、theme/)
  1. 访问 /install/ 执行「升级」步骤
  1. 清理后台缓存:系统 → 清理缓存