LECMS多站点怎么搭建

域名注册
域名注册 正式会员超兽战士 👑年卡会员
发布于 2026-10-08 16:05 ·1 浏览 ·0 回复

学完这篇,你能在一台服务器上把 LECMS 跑成多个互不干扰的站点,从目录规划、数据库拆分到域名绑定、伪静态和缓存隔离一次配完。

第一步:先选多站点模式

LECMS 搭多站点有三种常见做法,先选一种再动手,选错了后面返工很麻烦:

  1. 独立目录 + 独立数据库(推荐给新手):每个站点一份完整程序、一套独立数据库。互不干扰,缺点是升级要逐个站点做。
  2. 单套程序多站点模式:后台一个站点管理里添加多个站点,共用代码和数据库,靠站点 ID 区分数据。省资源,但改一次模板全站生效。
  3. 子目录模式:主站 example.com,第二个站挂 example.com/site2。只适合两个站关系很紧的场景。

下面按第一种讲,这是最不容易出问题的。

第二步:准备环境

PHP 建议 7.4(LECMS 老版本在 PHP 8 上容易报错)、MySQL 5.7、Nginx 1.18 以上。先确认版本:

php -v
mysql -V
nginx -v

建好两个站点目录:

mkdir -p /data/wwwroot/site1 /data/wwwroot/site2

注意:PHP 必须装 fileinfo、gd、pdo_mysql、curl、mbstring 扩展。缺 fileinfo,安装向导第一步就会白屏,而且不报错。

第三步:装好第一个站点

把 LECMS 安装包解压到 /data/wwwroot/site1,然后配置 Nginx。新建 /etc/nginx/conf.d/site1.conf:

server {
    listen 80;
    server_name www.site1.com;
    root /data/wwwroot/site1;
    index index.php index.html;

    location / {
        if (!-e $request_filename) {
            rewrite ^(.*)$ /index.php?s=$1 last;
        }
    }

    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;
    }
}

执行 nginx -t && nginx -s reload,然后浏览器打开 http://www.site1.com,按安装向导填数据库信息。装完进后台(入口一般是 /admin.php),第一件事改管理员密码。

第四步:复制出第二个站点

cp -r /data/wwwroot/site1 /data/wwwroot/site2

新建独立数据库:

CREATE DATABASE lecms_site2 DEFAULT CHARSET utf8mb4;

然后打开 site2 的数据库配置文件(LECMS 通常叫 database.php 或 config.php,以你安装包里的实际文件名为准),把库名、用户名、密码全部换成新的。

接着删掉 site2 目录里的安装锁文件(一般叫 install.lock 或 install/install.lock),重新访问域名跑一遍安装向导,指向新库。不想重装的话,直接把主站数据导出后导入新库也行。

注意:最容易踩的坑就是复制完忘了改配置文件,结果两个站连同一个库,后台改一个另一个也跟着变。复制完先搜索一遍配置文件里的库名,确认改干净了。

第五步:绑定第二个域名

复制一份 Nginx 配置,只改两处:

server_name www.site2.com;
root /data/wwwroot/site2;

nginx -t && nginx -s reload。然后在域名解析处把两个域名都 A 记录指向同一台服务器 IP。

第六步:做隔离,避免串站

复制出来的站点最容易在三个地方互相污染:

  • 缓存:site1/runtime 和 site2/runtime 必须各自独立,不要做软链共享。
  • 上传目录:如果你是把主站数据库导给第二个站,附件路径里存的还是老域名,需要进数据库批量把旧域名替换成新域名,否则图片全是 404。
  • Cookie:两个站如果用同一顶级域名的子域名,会共用 Cookie 前缀,在配置里把 Cookie 前缀和 Cookie 域改成各站独立的。

最后统一权限:

chown -R www:www /data/wwwroot/site1 /data/wwwroot/site2
chmod -R 755 /data/wwwroot/site1/runtime /data/wwwroot/site1/uploads

第七步:如果你用单程序多站点模式

进后台,找系统 → 站点管理 → 添加站点,填站点名称、绑定域名、对应模板目录,保存。之后用后台顶部的站点切换功能切换当前站点。数据表里会多一个 siteid 字段来区分数据归属。

注意:这种模式下你自己写 SQL 查询时必须带上 siteid 条件,否则会把别的站数据查出来。

小结

  • 新手优先选「独立目录 + 独立数据库」,隔离最彻底,出问题只影响一个站。
  • 复制站点后必须改三样:数据库配置、Nginx 的 root、安装锁文件。
  • 缓存目录、上传路径、Cookie 前缀是做隔离的三个关键点。
  • 用单程序多站点模式时,自定义 SQL 别忘了 siteid 条件。
版权声明:本文来自 GJ站长论坛《LECMS多站点怎么搭建》
原文链接:https://www.gj0.com/thread-1042.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。

全部回复 0

还没有回复,来抢沙发~