WordPress 多站点 Multisite 搭建教程
WordPress Multisite 允许你在同一套 WordPress 安装中运行多个独立站点,共享核心代码、主题和插件,同时各站点拥有独立的内容和设置。这对于管理多个子站、多语言站点、企业部门站点等场景非常实用。本文将在搬瓦工 VPS 上演示完整的 Multisite 搭建过程。
一、Multisite 模式选择
WordPress Multisite 提供两种 URL 结构模式:
- 子目录模式:
example.com/site1/、example.com/site2/。适合同一品牌下的分类站点。 - 子域名模式:
site1.example.com、site2.example.com。适合需要各站点独立品牌的场景。
注意:如果 WordPress 不是安装在域名根目录,则只能使用子域名模式。已运行超过 30 天的站点默认也只能使用子域名模式。
二、前置准备
确保搬瓦工 VPS 上已安装好 WordPress。如果还没有安装,请参考 WordPress 安装教程。在开启 Multisite 之前:
- 停用所有插件(启用 Multisite 后再重新启用)。
- 备份网站数据库和文件。参考 WordPress 备份教程。
- 确保已开启 URL 固定链接(非默认的
?p=123格式)。
# 停用所有插件
wp plugin deactivate --all --allow-root
# 备份数据库
wp db export /root/backups/pre-multisite.sql --allow-root
三、启用 Multisite
3.1 修改 wp-config.php
在 wp-config.php 中 /* That's all, stop editing! */ 之前添加:
/* Multisite */
define('WP_ALLOW_MULTISITE', true);
3.2 在后台安装网络
刷新 WordPress 后台,进入"工具 > 网络设置"。选择子域名或子目录模式,填写网络标题和管理员邮箱,点击"安装"。
WordPress 会生成需要添加到配置文件的代码。将以下代码添加到 wp-config.php:
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', true); // false 表示子目录模式
define('DOMAIN_CURRENT_SITE', 'example.com');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
四、Nginx 配置
4.1 子域名模式的 Nginx 配置
server {
listen 80;
listen 443 ssl http2;
server_name example.com *.example.com;
root /var/www/html;
index index.php;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
# Multisite 子域名模式重写规则
location / {
try_files $uri $uri/ /index.php?$args;
}
# 处理子站点的文件访问
location ~ ^/files/(.*)$ {
try_files /wp-includes/ms-files.php =404;
access_log off;
log_not_found off;
expires max;
}
# 静态文件缓存
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|webp|woff|woff2)$ {
expires max;
log_not_found off;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\. {
deny all;
}
}
子域名模式需要通配符 SSL 证书:
# 使用 DNS 验证获取通配符证书
certbot certonly --manual --preferred-challenges dns \
-d example.com -d "*.example.com"
还需要配置 DNS 通配符记录,在域名解析中添加 *.example.com 的 A 记录指向服务器 IP。
4.2 子目录模式的 Nginx 配置
server {
listen 80;
listen 443 ssl http2;
server_name example.com;
root /var/www/html;
index index.php;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
# Multisite 子目录模式重写规则
if (!-e $request_filename) {
rewrite /wp-admin$ $scheme://$host$request_uri/ permanent;
rewrite ^(/[^/]+)?(/wp-.*) $2 last;
rewrite ^(/[^/]+)?(/.*\.php) $2 last;
}
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|webp)$ {
expires max;
log_not_found off;
}
location ~ /\. {
deny all;
}
}
nginx -t && systemctl reload nginx
五、站点管理
5.1 创建新站点
在 WordPress 后台,进入"我的站点 > 网络管理 > 站点 > 添加新站点"。也可以使用 WP-CLI:
# 创建子站点(子域名模式)
wp site create --slug=blog --title="公司博客" --email=admin@example.com --allow-root
# 创建子站点(子目录模式)
wp site create --slug=news --title="新闻中心" --email=admin@example.com --allow-root
# 查看所有站点
wp site list --allow-root
5.2 管理主题和插件
Multisite 中,主题和插件由超级管理员统一管理:
# 网络启用插件(所有站点可用)
wp plugin activate akismet --network --allow-root
# 网络启用主题
wp theme enable flavor --network --allow-root
# 查看网络启用的插件
wp plugin list --network --allow-root
5.3 域名映射
WordPress 4.5 以后内置了域名映射功能,可以为子站点绑定独立域名。在"网络管理 > 站点"中编辑子站点,将站点地址修改为独立域名。
在 Nginx 中添加域名映射:
# 为独立域名添加 server 块
server {
listen 80;
listen 443 ssl http2;
server_name custom-domain.com;
root /var/www/html;
index index.php;
ssl_certificate /etc/letsencrypt/live/custom-domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/custom-domain.com/privkey.pem;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
在 wp-config.php 中添加:
define('SUNRISE', true);
六、Multisite 性能优化
6.1 数据库优化
Multisite 会为每个子站点创建独立的数据库表。随着站点数量增加,数据库表会快速增长:
# 查看数据库表数量
wp db query "SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = DATABASE();" --allow-root
# 优化所有表
wp db optimize --allow-root
6.2 对象缓存
Redis 对象缓存对 Multisite 尤其重要,可以显著减少数据库查询:
# 在 wp-config.php 中为每个站点设置独立的缓存前缀
define('WP_CACHE_KEY_SALT', 'example.com_');
6.3 资源隔离
在 PHP-FPM 中为高流量子站点设置独立的进程池:
# 创建 /etc/php/8.3/fpm/pool.d/subsite.conf
[subsite]
user = www-data
group = www-data
listen = /run/php/php8.3-fpm-subsite.sock
listen.owner = www-data
listen.group = www-data
pm = dynamic
pm.max_children = 10
pm.start_servers = 3
pm.min_spare_servers = 2
pm.max_spare_servers = 5
总结
WordPress Multisite 是在搬瓦工 VPS 上运营多个关联站点的高效方案。通过共享核心代码和统一管理,大幅降低了维护成本。子域名模式适合品牌独立的场景,子目录模式适合内容分类的场景。搭建完成后,建议参考 速度优化指南 和 安全加固教程 进一步提升站点质量。选购搬瓦工 VPS 请查看 全部方案,购买时使用优惠码 NODESEEK2026 可享受 6.77% 的折扣,通过 bwh81.net 进入官网购买。