如何在一台Linux服务器上同时运行两个WordPress站点?

在一台Linux服务器上同时运行两个WordPress站点,可以通过以下几种常见方案实现:


方案一:使用虚拟主机(推荐)

通过Web服务器(如Nginx或Apache)的虚拟主机功能,为每个站点分配独立的配置。

1. 使用Nginx

步骤:

  1. 安装Nginx、PHP、MySQL/MariaDB
    # Ubuntu/Debian
    sudo apt update
    sudo apt install nginx mysql-server php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-xmlrpc
  2. 创建站点目录
    sudo mkdir -p /var/www/site1
    sudo mkdir -p /var/www/site2
    sudo chown -R www-data:www-data /var/www/site*
  3. 配置Nginx虚拟主机

    • 为每个站点创建独立的配置文件(如 /etc/nginx/sites-available/site1.conf):

      server {
      listen 80;
      server_name site1.com www.site1.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:/var/run/php/php8.1-fpm.sock;
      }
      }
    • 为第二个站点创建类似配置(修改 server_nameroot)。
  4. 启用站点并重载Nginx
    sudo ln -s /etc/nginx/sites-available/site1.conf /etc/nginx/sites-enabled/
    sudo ln -s /etc/nginx/sites-available/site2.conf /etc/nginx/sites-enabled/
    sudo nginx -t
    sudo systemctl reload nginx

2. 使用Apache

  1. 安装Apache
    sudo apt install apache2 libapache2-mod-php mysql-server
  2. 创建虚拟主机配置
    • /etc/apache2/sites-available/ 下为每个站点创建 .conf 文件(如 site1.conf):
      <VirtualHost *:80>
      ServerName site1.com
      DocumentRoot /var/www/site1
      <Directory /var/www/site1>
         AllowOverride All
      </Directory>
      </VirtualHost>
  3. 启用站点
    sudo a2ensite site1.conf
    sudo a2ensite site2.conf
    sudo systemctl reload apache2

方案二:使用Docker(灵活且隔离)

通过Docker容器独立运行每个WordPress站点。

步骤:

  1. 安装Docker和Docker Compose
    curl -fsSL https://get.docker.com -o get-docker.sh
    sudo sh get-docker.sh
    sudo apt install docker-compose
  2. 为每个站点创建独立目录和 docker-compose.yml
    # site1/docker-compose.yml
    version: '3'
    services:
     db:
       image: mysql:8.0
       environment:
         MYSQL_ROOT_PASSWORD: root_password
         MYSQL_DATABASE: wordpress
         MYSQL_USER: wordpress
         MYSQL_PASSWORD: wordpress_password
     wordpress:
       depends_on:
         - db
       image: wordpress:latest
       ports:
         - "8080:80"  # 第一个站点用8080端口
       environment:
         WORDPRESS_DB_HOST: db
         WORDPRESS_DB_USER: wordpress
         WORDPRESS_DB_PASSWORD: wordpress_password
    • 第二个站点使用不同端口(如 8081:80)和数据库配置。
  3. 启动站点
    cd /path/to/site1
    docker-compose up -d

方案三:使用多站点模式(WordPress Multisite)

如果两个站点属于同一组织且共享插件/主题,可使用WordPress内置的多站点功能。

步骤:

  1. 安装单个WordPress后,在 wp-config.php 中添加:
    define('WP_ALLOW_MULTISITE', true);
  2. 通过 工具 → 网络设置 启用多站点,按提示配置。
  3. 通过子域名(如 site1.example.comsite2.example.com)或子目录区分站点。

关键注意事项

  1. 域名与DNS
    • 将两个域名(如 site1.comsite2.com)的A记录指向服务器IP。
    • 本地测试可在 /etc/hosts 中添加临时解析。
  2. 数据库分离
    • 为每个WordPress创建独立的数据库和用户,避免数据混淆。
  3. 资源隔离
    • 使用Docker或虚拟机可更好地隔离资源(CPU、内存)。
  4. SSL证书
    • 使用Let’s Encrypt为每个域名免费配置HTTPS:
      sudo certbot --nginx -d site1.com -d www.site1.com
  5. 性能优化
    • 考虑使用缓存插件(如W3 Total Cache)或对象存储(如S3)托管媒体文件。

推荐方案

  • 初学者:使用Nginx虚拟主机,简单直接。
  • 追求隔离性:使用Docker,便于迁移和管理。
  • 关联站点:使用WordPress Multisite,集中管理。

根据需求选择合适方案,并确保服务器资源(CPU、内存、磁盘)足够支撑两个站点。

云服务器