奋斗
努力

同一个服务器上部署两套WordPress?

云计算

是的,可以在同一个服务器上部署两套(或多套)WordPress 站点。这在实际应用中非常常见,比如:

  • 一个用于公司官网,一个用于博客
  • 为不同客户或项目分别搭建网站点
  • 开发环境和生产环境共存

实现方式有多种,具体取决于你的服务器架构(如 Apache、Nginx)、域名配置和目录结构。以下是几种常见的部署方法:


✅ 方法一:使用虚拟主机(Virtual Hosts)或 Server Blocks

1. 基于不同域名

例如:

  • site1.com → 第一套 WordPress
  • site2.com → 第二套 WordPress
Nginx 配置示例:
# site1.com 的配置
server {
    listen 80;
    server_name site1.com www.site1.com;
    root /var/www/site1;
    index index.php index.html;

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

    location ~ .php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
    }
}

# site2.com 的配置
server {
    listen 80;
    server_name site2.com www.site2.com;
    root /var/www/site2;
    index index.php index.html;

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

    location ~ .php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
    }
}

重启 Nginx:sudo systemctl reload nginx

2. 基于子域名

  • blog.yoursite.com
  • shop.yoursite.com

配置方式类似,只需修改 server_name

3. 基于路径(子目录)

如果你想通过 yoursite.com/blogyoursite.com/shop 访问两个 WordPress,也可以实现,但更复杂,需要处理 .htaccess 或反向X_X。


✅ 方法二:使用不同数据库和目录

每套 WordPress 应该:

  • 安装在独立的目录中(如 /var/www/site1, /var/www/site2
  • 使用独立的数据库(避免数据冲突)
  • 配置各自的 wp-config.php

创建数据库示例:

CREATE DATABASE wordpress_site1;
CREATE DATABASE wordpress_site2;
CREATE USER 'wpuser1'@'localhost' IDENTIFIED BY 'password1';
CREATE USER 'wpuser2'@'localhost' IDENTIFIED BY 'password2';
GRANT ALL PRIVILEGES ON wordpress_site1.* TO 'wpuser1'@'localhost';
GRANT ALL PRIVILEGES ON wordpress_site2.* TO 'wpuser2'@'localhost';
FLUSH PRIVILEGES;

然后分别安装 WordPress 到各自目录,并在 wp-config.php 中指定对应的数据库。


✅ 方法三:使用 Docker(推荐用于隔离)

用 Docker 可以轻松运行多个独立的 WordPress 实例:

# docker-compose.yml
version: '3.8'
services:
  db1:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: rootpass
      MYSQL_DATABASE: wp_site1
      MYSQL_USER: wp1
      MYSQL_PASSWORD: wp1pass
    volumes:
      - db1_data:/var/lib/mysql

  wordpress1:
    image: wordpress:latest
    depends_on:
      - db1
    environment:
      WORDPRESS_DB_HOST: db1
      WORDPRESS_DB_NAME: wp_site1
      WORDPRESS_DB_USER: wp1
      WORDPRESS_DB_PASSWORD: wp1pass
    ports:
      - "8080:80"
    volumes:
      - wp1_data:/var/www/html

  db2:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: rootpass
      MYSQL_DATABASE: wp_site2
      MYSQL_USER: wp2
      MYSQL_PASSWORD: wp2pass
    volumes:
      - db2_data:/var/lib/mysql

  wordpress2:
    image: wordpress:latest
    depends_on:
      - db2
    environment:
      WORDPRESS_DB_HOST: db2
      WORDPRESS_DB_NAME: wp_site2
      WORDPRESS_DB_USER: wp2
      WORDPRESS_DB_PASSWORD: wp2pass
    ports:
      - "8081:80"
    volumes:
      - wp2_data:/var/www/html

volumes:
  db1_data:
  db2_data:
  wp1_data:
  wp2_data:

访问:

  • http://your-server-ip:8080 → 第一个站点
  • http://your-server-ip:8081 → 第二个站点

⚠️ 注意事项

  1. 资源占用:每个 WordPress 实例都会消耗内存、CPU 和数据库连接。
  2. 安全性:确保每个站点都及时更新,避免一个被攻破影响另一个。
  3. 备份独立:分开备份文件和数据库。
  4. 插件冲突(共享环境时):如果共用 PHP 或缓存服务,注意配置隔离。
  5. HTTPS:使用 Let’s Encrypt 为每个域名配置 SSL。

✅ 总结

方式 是否推荐 说明
多虚拟主机 + 多目录 ✅ 推荐 简单高效,适合大多数情况
Docker 多容器 ✅✅ 强烈推荐 高度隔离,易于管理
子目录部署同一域名 ⚠️ 谨慎 配置复杂,SEO 和插件可能出问题

如果你告诉我你当前的服务器环境(Apache/Nginx?有无域名?是否已有 WordPress?),我可以给出更具体的配置建议。

未经允许不得转载:云服务器 » 同一个服务器上部署两套WordPress?