在同一台服务器上搭建多个WordPress网站的方法是什么?

在同一台服务器上搭建多个 WordPress 网站是常见且成熟的实践,主要有以下几种主流方法,按推荐度和适用场景排序:

推荐首选:基于虚拟主机(Virtual Host)的多站点部署(独立域名/子目录)
适用于大多数生产环境(Linux + Apache/Nginx),每个网站完全独立、安全隔离、易于管理。


✅ 方法一:多虚拟主机(推荐|最常用|最佳实践)

适用:不同域名(如 site1.comsite2.net)或子域名(blog.example.com, shop.example.com
要求:Web 服务器支持(Apache 或 Nginx)、独立数据库(可选共用但不推荐)

步骤概览:

  1. 准备环境

    • 安装 LAMP(Linux + Apache + MySQL/MariaDB + PHP)或 LEMP(Nginx 替代 Apache)
    • 确保 PHP 版本 ≥ 7.4(建议 8.1+),启用 mod_rewrite(Apache)或 rewrite 模块(Nginx)
  2. 为每个站点创建独立目录

    sudo mkdir -p /var/www/site1.com/public_html
    sudo mkdir -p /var/www/site2.net/public_html
  3. 为每个站点创建独立数据库与用户(强烈推荐)

    CREATE DATABASE wp_site1;
    CREATE USER 'wp_user1'@'localhost' IDENTIFIED BY 'strong_password1';
    GRANT ALL PRIVILEGES ON wp_site1.* TO 'wp_user1'@'localhost';
    
    CREATE DATABASE wp_site2;
    CREATE USER 'wp_user2'@'localhost' IDENTIFIED BY 'strong_password2';
    GRANT ALL PRIVILEGES ON wp_site2.* TO 'wp_user2'@'localhost';
    FLUSH PRIVILEGES;
  4. 配置虚拟主机(以 Apache 为例)
    /etc/apache2/sites-available/site1.com.conf

    <VirtualHost *:80>
       ServerName site1.com
       ServerAlias www.site1.com
       DocumentRoot /var/www/site1.com/public_html
       <Directory /var/www/site1.com/public_html>
           AllowOverride All
           Require all granted
       </Directory>
       ErrorLog ${APACHE_LOG_DIR}/site1_error.log
       CustomLog ${APACHE_LOG_DIR}/site1_access.log combined
    </VirtualHost>

    启用并重启:

    sudo a2ensite site1.com.conf
    sudo systemctl reload apache2

    ✅ Nginx 配置类似(使用 server{} 块,注意 rootlocation ~ .php$ 配置)

  5. 下载并安装 WordPress

    cd /var/www/site1.com/public_html
    sudo wget https://wordpress.org/latest.tar.gz
    sudo tar -xzf latest.tar.gz --strip-components=1
    sudo chown -R $USER:www-data /var/www/site1.com/public_html
    sudo chmod -R 755 /var/www/site1.com/public_html

    访问 http://site1.com 进行 Web 安装(填写对应数据库信息)

  6. HTTPS(强烈建议)
    使用 Certbot 一键部署 Let’s Encrypt SSL:

    sudo apt install certbot python3-certbot-apache  # Apache
    sudo certbot --apache -d site1.com -d www.site1.com

优势:完全隔离、无冲突、便于备份/迁移/升级、符合安全最佳实践
⚠️ 注意:避免共用 wp-config.php 或数据库前缀(如 wp_),各站应独立配置


⚠️ 方法二:WordPress 多站点网络(Multisite Network)

适用:同一主域名下统一管理多个子站(如 example.com + site1.example.comexample.com/site1/
本质是「一个 WordPress 核心 + 多个子站点」,共享插件/主题(可独立启用)、共用用户表(可选)

启用步骤(需在全新或干净 WP 安装中操作):

  1. wp-config.php 中添加(必须在 /* That's all... */ 之前):
    define('WP_ALLOW_MULTISITE', true);
  2. 登录后台 → 工具 → 网络设置 → 选择「子域名」或「子目录」模式 → 安装
  3. 按提示将生成的代码(如 define('MULTISITE', true); 等)粘贴到 wp-config.php,并更新 .htaccess(Apache)或 Nginx 配置
  4. 创建子站点(如 blog.example.com, store.example.com

✅ 优势:集中管理、统一更新核心/插件、适合内部 SaaS 或教育平台
❌ 局限:

  • 子域名模式需泛域名 DNS(*.example.com
  • 插件/主题兼容性要求高(非所有插件支持 Multisite)
  • 数据库耦合度高,迁移单个子站较复杂
  • 不适合完全独立的品牌网站(如客户 A 和客户 B 的网站)

❌ 不推荐的方法(仅作警示)

方法 问题
共用同一套 WP 文件 + 不同数据库 风险极高:一次核心更新/插件漏洞影响所有站;URL 重写易冲突;无法独立维护
用子目录硬链接或符号链接模拟多站 权限混乱、缓存干扰、SEO 友好性差、违反 WP 设计原则
仅靠插件实现“伪多站”(如 WP Ultimo) 本质仍是 Multisite 扩展,复杂度高,学习成本大,小团队慎用

🔐 安全与运维建议(必做!)

  • 每个站点独立 Linux 用户(如 site1, site2)+ www-data 组,限制文件权限(750/640
  • 定期自动备份:使用 wp-cli + borgbackup 或 Duplicator/UpdraftPlus(确保含 DB + 文件)
  • PHP-FPM 隔离:为每站配置独立 pool(如 site1.conf),防止资源抢占和跨站读取
  • 防火墙 & Fail2ban:阻止暴力登录(尤其 /wp-login.php
  • 禁用文件编辑wp-config.php 中添加 define('DISALLOW_FILE_EDIT', true);
  • CDN + 缓存:Cloudflare + WP Super Cache / Redis(每站独立缓存键)

🌐 补充:容器化方案(进阶推荐)

对 DevOps 友好,适合需要弹性伸缩或 CI/CD 的团队:

# docker-compose.yml 示例(多站)
version: '3.8'
services:
  site1-db:
    image: mariadb:10.11
    environment: {MYSQL_ROOT_PASSWORD: ..., MYSQL_DATABASE: wp_site1}
  site1-app:
    image: wordpress:php8.2-apache
    environment: {WORDPRESS_DB_HOST: site1-db, WORDPRESS_DB_NAME: wp_site1}
    volumes: ["./site1/wp-content:/var/www/html/wp-content"]
    ports: ["8081:80"]

  site2-db: { ... }
  site2-app: { ... }

✅ 优势:彻底隔离、一键克隆、环境一致;❌ 需要 Docker 基础


💡 一句话总结

生产环境首选「多虚拟主机 + 独立数据库 + 独立 WP 实例」 —— 安全、稳定、灵活、易维护;Multisite 仅用于有强统一管理需求的特定场景。

如需我为你生成:

  • 完整的 Apache/Nginx 虚拟主机配置模板
  • 自动化部署脚本(Bash)
  • Docker Compose 多站示例
  • SSL 自动续期配置
    欢迎随时告诉我你的服务器环境(Ubuntu/CentOS?Apache/Nginx?是否已有域名?),我可以为你定制完整方案 👇
未经允许不得转载:ECLOUD博客 » 在同一台服务器上搭建多个WordPress网站的方法是什么?