Linux部署ThinkPHP多站点需共用PHP+Nginx环境但隔离配置:各站独立域名、项目路径、/public运行目录、伪静态规则及数据库;PHP严格锁定8.0并启用fileinfo等扩展;宝塔中每站设/public为运行目录、配置TP6标准伪静态;上传前清runtime、配好.env,确保权限正确。

Linux部署ThinkPHP多站点,核心是“一环境、多配置、隔离运行”:共用一套PHP+Nginx基础环境,但每个站点独立域名、独立项目路径、独立运行目录(/public)、独立伪静态规则和数据库配置。不需重复安装PHP或Nginx,关键在配置分离与权限管控。
环境准备:统一安装,按需启用扩展
所有站点共享同一套底层环境,推荐使用宝塔或小皮面板简化管理:
- Nginx选最新稳定版,无需自定义;MySQL统一用5.7或8.0(建议与本地开发一致);PHP严格锁定为8.0版本(TP6官方兼容,禁用8.3+)
- 在PHP-8.0设置中,一次性装齐必需扩展:fileinfo、openssl、mbstring、pdo_mysql、redis,装完务必点击「重启PHP」生效
- 确认PHP-FPM用户(如www-data或nginx)对所有站点的
public/和runtime/目录有读写权限
多站点创建:每个站点单独设/public为运行目录
在宝塔「网站」→「添加站点」中,为每个项目分别添加:
- 填写不同域名(如
site1.com、site2.com),根目录设为各自项目完整路径(如/www/wwwroot/site1、/www/wwwroot/site2) - 进入各站点「设置」→「网站目录」,将运行目录统一改为
/public(开头带斜杠) - 勾选「重载Nginx配置」并保存——这步防止敏感目录(如
app/、config/)被外部直接访问
伪静态与路由:每站独立配置,不共用规则
每个站点必须单独配置伪静态,避免路由冲突:
立即学习“PHP免费学习笔记(深入)”;
- 进站点「设置」→「伪静态」,清空原有内容,粘贴标准TP6规则:
try_files $uri $uri/ /index.php?$query_string;
}
- 该规则已兼容PATH_INFO模式,无需额外开启开关,也不用写
fastcgi_split_path_info(留着反而导致路由错乱) - 改完立即生效,不用重启Nginx
项目上传与环境隔离
上传前务必本地清理,再按站点分发:
- 每个项目上传前,删除本地
runtime/整个文件夹(保留空目录结构即可) - 检查各项目根目录下
.env文件:APP_DEBUG = false、DEFAULT_TIMEZONE = Asia/Shanghai,数据库信息填各自站点专属库 - 上传后,执行:
chown -R www-data:www-data /www/wwwroot/site1/public(同理处理site2),确保PHP-FPM能读取入口文件 - 若某站报500或白屏,优先检查对应
runtime/是否可写、.env是否漏改APP_DEBUG



















