加油
努力

在同一个服务器上搭建两个WordPress需要怎么配置?

在同一个服务器上搭建两个 WordPress 站点是常见需求,有多种可靠方式,关键在于隔离环境、避免冲突(如数据库名、表前缀、文件路径、域名/路径路由)。以下是主流且推荐的配置方案,按推荐度排序:


✅ 推荐方案:独立子域名或不同域名(最安全、最标准)

适用于生产环境,SEO友好,维护简单,无共享风险。

步骤概览:

  1. 准备两个独立域名/子域名

    • 例如:site1.example.comsite2.example.com
    • 或:www.site1.com + www.site2.com
  2. 为每个站点创建独立目录

    /var/www/site1/   # WordPress 1
    /var/www/site2/   # WordPress 2

    ✅ 下载并解压 WordPress 到各自目录(不要共用同一份代码)

  3. 创建两个独立数据库 + 用户(MySQL/MariaDB)

    CREATE DATABASE wp_site1 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    CREATE DATABASE wp_site2 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    
    CREATE USER 'wp_user1'@'localhost' IDENTIFIED BY 'strong_password1';
    CREATE USER 'wp_user2'@'localhost' IDENTIFIED BY 'strong_password2';
    
    GRANT ALL PRIVILEGES ON wp_site1.* TO 'wp_user1'@'localhost';
    GRANT ALL PRIVILEGES ON wp_site2.* TO 'wp_user2'@'localhost';
    FLUSH PRIVILEGES;
  4. 配置 Web 服务器(Nginx 或 Apache)

    • Nginx 示例(两个 server 块)

      # /etc/nginx/sites-available/site1
      server {
       listen 80;
       server_name site1.example.com;
       root /var/www/site1;
       index index.php;
      
       location / {
           try_files $uri $uri/ /index.php?$args;
       }
      
       location ~ .php$ {
           include snippets/fastcgi-php.conf;
           fastcgi_pass unix:/run/php/php8.2-fpm.sock;  # 根据PHP版本调整
           fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       }
      }
      
      # /etc/nginx/sites-available/site2(同理,改 root/server_name)

      启用:ln -s /etc/nginx/sites-available/site1 /etc/nginx/sites-enabled/,然后 nginx -t && systemctl reload nginx

    • Apache 示例(两个 VirtualHost)

      <VirtualHost *:80>
       ServerName site1.example.com
       DocumentRoot /var/www/site1
       <Directory /var/www/site1>
           AllowOverride All
           Require all granted
       </Directory>
      </VirtualHost>
  5. 分别安装 WordPress
    访问 http://site1.example.comhttp://site2.example.com,按向导完成安装(自动使用各自数据库和配置)。

优势:完全隔离、无插件/主题冲突、可独立升级、SSL证书易管理(Let’s Encrypt 支持多域名)
⚠️ 注意:确保 DNS 已解析到该服务器 IP。


⚠️ 备选方案:子目录部署(如 example.com/site1/ 和 example.com/site2/)

适合测试或内部使用,但需额外配置,对 SEO 和 URL 美观性稍差。

关键要点:

  • 每个子目录仍需独立 WordPress 安装(不共用 wp-content!)
  • 主站根目录不能已有 WordPress(否则需用多站点网络或重写规则)
  • Nginx/Apache 需正确处理子目录的 index.php 和重写(WordPress 默认 .htaccess 不直接支持嵌套,需手动适配)

📌 强烈建议:若坚持子目录,优先考虑 WordPress 多站点网络(Multisite)(见下文),而非手动双安装。


🌐 进阶方案:WordPress 多站点网络(Multisite)

官方支持的“一个安装、多个站点”方案,适合管理关联站点(如公司旗下多个部门博客)。

适用场景:

  • 共享用户系统、统一后台管理、插件/主题集中启用
  • 所有站点同属一个品牌/组织
  • ✅ 要求:必须使用子域名(site1.example.com, site2.example.com)或子目录(example.com/site1/)模式

快速启用步骤:

  1. wp-config.php 中添加(/* That's all, stop editing! */ 之前):
    define('WP_ALLOW_MULTISITE', true);
  2. 登录后台 → 工具 → 网络设置 → 选择子域名或子目录 → 安装
  3. 按提示修改 wp-config.php.htaccess(Apache)或 Nginx 配置
  4. 创建新站点:后台 → 我的站点 → 网络管理 → 站点 → 添加新站点

✅ 优势:统一更新、用户共享、节省资源
❌ 缺点:插件兼容性要求高;子目录模式对 SEO 友好度较低;迁移复杂。


❌ 不推荐的做法(务必避免):

方式 问题
共用同一数据库 + 不同表前缀 表前缀仅防命名冲突,无法解决插件数据混杂、缓存污染、升级风险
共用 wp-content 目录 主题/插件/上传文件互相覆盖,极易导致功能异常或安全漏洞
硬链接或符号链接共享核心文件 WordPress 更新会破坏所有站点,违反安全最佳实践

🔐 安全与运维建议:

  • ✅ 每个站点使用独立 PHP-FPM pool(提升隔离性 & 资源限制)
  • ✅ 为每个站点配置独立 SSL 证书(Certbot 支持多域名:certbot -d site1.com -d site2.com
  • ✅ 数据库用户权限严格限定(只授予对应库的 ALL,禁止跨库访问)
  • ✅ 定期备份:分开备份数据库 + 文件(勿合并)
  • ✅ 使用不同管理员用户名/密码,禁用默认 admin 账户

✅ 总结:如何选择?

需求 推荐方案
两个完全独立的网站(如个人博客 + 客户官网) ✅ 独立子域名/域名(最推荐)
同一品牌下的多个栏目/地区站(需统一登录) ✅ WordPress Multisite(子域名模式更稳定)
临时测试/开发环境 ✅ 独立子目录 + Docker 容器(进一步隔离)
资源极度受限且技术可控 ✅ Multisite 子目录(需仔细测试插件兼容性)

需要我为你提供:

  • ✅ 完整的 Nginx + PHP-FPM + MySQL 一键部署脚本?
  • ✅ WordPress Multisite 子域名详细配置(含 DNS 和 Nginx 重写)?
  • ✅ Docker Compose 方案(每个 WordPress 独立容器)?
    欢迎告诉我你的服务器环境(Ubuntu/CentOS?Nginx/Apache?是否已有 WordPress?),我可以给出定制化命令和配置文件 👇
云服务器