加油
努力

如何在同一台服务器上部署多个WordPress站点?

在同一台服务器上部署多个 WordPress 站点是常见且成熟的做法,主要有以下几种主流方案,可根据你的技术能力、资源需求和管理偏好选择:


✅ 一、推荐方案:多站点(Multisite)网络(官方原生支持)

✅ 适合:品牌统一、管理集中、共享插件/主题、需统一更新的场景(如企业子站、学校院系站、博客联盟)
❌ 不适合:各站点完全独立(不同客户、不同数据库权限、不同安全策略)

✅ 优势:

  • 单个 WordPress 安装,一个后台统一管理所有子站
  • 共享核心文件、插件、主题(可单独启用/禁用)
  • 用户系统可共享或隔离(网络级用户 vs 子站级用户)
  • 数据库表前缀区分(如 wp_2_posts, wp_3_options),节省资源

🔧 部署步骤:

  1. 启用 Multisite
    wp-config.php 中添加(必须在 require_once... 之前):

    define('WP_ALLOW_MULTISITE', true);
  2. 登录后台 → 工具 → “配置网络” → 选择 子域名(site1.example.com子目录(example.com/site1

    ⚠️ 子域名需 DNS 解析通配符(*.example.com → A 记录指向服务器 IP);子目录更简单,适合新手。

  3. 按提示修改 wp-config.php.htaccess(Apache)或 Nginx 配置(见下文)

  4. 创建新站点:后台 → “我的站点” → “管理网络” → “站点” → “添加新站点”

📝 注意事项:

  • 插件/主题需兼容 Multisite(多数主流插件已支持)
  • 避免使用依赖独立数据库的插件(如某些会员系统)
  • 备份需用 Multisite-aware 工具(如 All-in-One WP Migration + Multisite 扩展)

✅ 二、独立安装(推荐给生产环境高隔离需求)

✅ 适合:不同客户、不同安全等级、不同 PHP 版本/扩展需求、需独立备份与升级
❌ 缺点:维护成本略高(需逐个更新)

🗂 目录结构示例:

/var/www/
├── site1.example.com/   # 独立 WordPress
├── site2.example.com/   # 独立 WordPress
├── site3.example.com/   # 独立 WordPress
└── shared/              # 可选:共享插件/主题(通过符号链接或 Composer)

🔧 关键配置要点:

组件 配置说明
Web 服务器 ✅ Apache:为每个域名配置 <VirtualHost>
✅ Nginx:为每个域名配置 server { ... } 块,指向对应根目录
数据库 ✅ 每个站点使用独立数据库(或同一库中不同前缀,如 site1_, site2_
⚠️ 强烈建议独立数据库:避免单点故障、权限隔离、备份灵活
PHP 配置 ✅ 可为每个站点设置不同 php.ini(如 php_admin_value memory_limit 256M)或使用 PHP-FPM Pool 隔离
SSL 证书 ✅ 使用 Let’s Encrypt(certbot --nginx -d site1.com -d www.site1.com)自动签发

🌐 Nginx 示例(单站点):

server {
    listen 80;
    server_name site1.example.com;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    server_name site1.example.com;

    root /var/www/site1.example.com;
    index index.php;

    ssl_certificate /etc/letsencrypt/live/site1.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/site1.example.com/privkey.pem;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ .php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock; # 根据版本调整
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

✅ 运行 sudo nginx -t && sudo systemctl reload nginx 生效


✅ 三、容器化方案(Docker + Docker Compose)⭐️ 现代运维首选

✅ 适合:追求环境一致性、快速部署/销毁、CI/CD 集成、资源隔离强
🐳 示例:1 个 Nginx + 多个 WordPress 容器(每个带独立 MySQL)

📄 docker-compose.yml(简化版,含 2 个站点):

version: '3.8'
services:
  # 共享 Nginx 反向X_X
  nginx:
    image: nginx:alpine
    ports: ["80:80", "443:443"]
    volumes:
      - ./nginx/conf.d:/etc/nginx/conf.d
      - ./nginx/certs:/etc/nginx/certs
      - ./www:/var/www:ro
    depends_on: [wp-site1, wp-site2]

  # 站点 1
  wp-site1:
    image: wordpress:php8.2-apache
    environment:
      WORDPRESS_DB_HOST: mysql-site1:3306
      WORDPRESS_DB_NAME: wp_site1
      WORDPRESS_DB_USER: wpuser1
      WORDPRESS_DB_PASSWORD: securepass1
    volumes:
      - ./www/site1.example.com:/var/www/html
    depends_on: [mysql-site1]

  mysql-site1:
    image: mysql:8.0
    environment:
      MYSQL_DATABASE: wp_site1
      MYSQL_USER: wpuser1
      MYSQL_PASSWORD: securepass1
      MYSQL_ROOT_PASSWORD: rootpass1
    volumes:
      - ./mysql/site1:/var/lib/mysql

  # 站点 2(同理复制配置,改名称/密码/路径)
  wp-site2: { ... }
  mysql-site2: { ... }

✅ 优点:彻底隔离、一键启停、快照备份、轻松横向扩展


✅ 四、其他实用技巧 & 最佳实践

场景 推荐方案
共享媒体库? ✅ 使用插件 Network Shared Media(Multisite)
❌ 独立安装不建议硬链接,易出错
统一登录(SSO)? ✅ Multisite 天然支持
✅ 独立安装可用插件 MiniOrange SSO
备份策略 ✅ Multisite:用 UpdraftPlus(勾选“包含网络数据”)
✅ 独立安装:脚本化 mysqldump + tar + 定时任务(cron
性能优化 ✅ 全局:OPcache + Redis 缓存(WP-Redis 插件)
✅ 各站点:启用对象缓存、CDN(Cloudflare/BunnyCDN)
安全加固 ✅ 所有方案:禁用文件编辑(define('DISALLOW_FILE_EDIT', true);
✅ 独立安装:每个站点用不同数据库用户(最小权限原则)
✅ Web 服务器:限制 wp-config.php 访问(Nginx 加 location ~ ^/wp-config.php$ { deny all; }

🚫 应避免的错误做法

  • ❌ 在同一数据库中混用多个站点且无表前缀区分 → 必然冲突
  • ❌ 多站点共用管理员账号且未限制角色 → 权限失控风险
  • ❌ 用符号链接共享 wp-content 而不测试插件兼容性 → 可能崩溃
  • ❌ 忽略 PHP 内存限制(尤其 Multisite)→ 建议 memory_limit = 256M 或更高

✅ 总结:如何选择?

你的需求 推荐方案
✅ 快速上线 3-5 个内部子站,统一管理 WordPress Multisite(子目录)
✅ 为客户托管多个独立网站,要求完全隔离 独立安装 + 独立数据库 + Nginx 虚拟主机
✅ 技术团队熟悉 Docker,追求可复现与弹性 Docker Compose(每个站点独立容器栈)
✅ 需要混合模式(如主站独立 + 分支用 Multisite) 组合方案:主站独立 + 子项目用 Multisite 子网络

需要我为你:

  • ✅ 生成完整的 Nginx/Apache 虚拟主机配置模板?
  • ✅ 提供 Multisite 的详细 .htaccess 或 Nginx 重写规则?
  • ✅ 写一个自动化部署多个独立 WordPress 的 Bash 脚本?
  • ✅ 输出 Docker Compose 的完整可运行示例(含 SSL、备份、监控)?

欢迎告诉我你的服务器环境(Ubuntu/CentOS?Nginx/Apache?是否已有域名?),我可以为你定制化配置 👇

云服务器