WordPress 多站点 Multisite 搭建教程

WordPress Multisite 允许你在同一套 WordPress 安装中运行多个独立站点,共享核心代码、主题和插件,同时各站点拥有独立的内容和设置。这对于管理多个子站、多语言站点、企业部门站点等场景非常实用。本文将在搬瓦工 VPS 上演示完整的 Multisite 搭建过程。

一、Multisite 模式选择

WordPress Multisite 提供两种 URL 结构模式:

  • 子目录模式example.com/site1/example.com/site2/。适合同一品牌下的分类站点。
  • 子域名模式site1.example.comsite2.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 进入官网购买。

关于本站

搬瓦工VPS中文网(bwgvps.com)是非官方中文信息站,整理搬瓦工的方案、优惠和教程。我们不销售主机,不提供技术服务。

新手必读
搬瓦工优惠码

NODESEEK2026(优惠 6.77%)

购买时填入即可抵扣。