LECMS多站点怎么搭建
学完这篇,你能在一台服务器上把 LECMS 跑成多个互不干扰的站点,从目录规划、数据库拆分到域名绑定、伪静态和缓存隔离一次配完。
第一步:先选多站点模式
LECMS 搭多站点有三种常见做法,先选一种再动手,选错了后面返工很麻烦:
- 独立目录 + 独立数据库(推荐给新手):每个站点一份完整程序、一套独立数据库。互不干扰,缺点是升级要逐个站点做。
- 单套程序多站点模式:后台一个站点管理里添加多个站点,共用代码和数据库,靠站点 ID 区分数据。省资源,但改一次模板全站生效。
- 子目录模式:主站
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条件。
原文链接:https://www.gj0.com/thread-1042.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。