加油
努力

在Nginx或Apache环境下如何配置两个WordPress站点?

在 Nginx 或 Apache 环境下配置两个 WordPress 站点是常见的需求。下面分别介绍如何在 NginxApache 中实现多站点部署。


✅ 前提条件

  1. 两套独立的 WordPress 文件(例如 wp-site1wp-site2
  2. 两个域名或子域名(如 site1.comsite2.com,或 site1.localsite2.local
  3. 每个站点使用独立的数据库(推荐)
  4. Web 服务器已安装并运行(Nginx/Apache + PHP + MySQL)

一、Nginx 配置两个 WordPress 站点

步骤 1:准备目录结构

/var/www/site1.com
/var/www/site2.com

将两个 WordPress 安装包分别解压到这两个目录中。

步骤 2:配置数据库

为每个站点创建独立的数据库和用户:

CREATE DATABASE wp_site1;
CREATE DATABASE wp_site2;

CREATE USER 'user1'@'localhost' IDENTIFIED BY 'password1';
CREATE USER 'user2'@'localhost' IDENTIFIED BY 'password2';

GRANT ALL PRIVILEGES ON wp_site1.* TO 'user1'@'localhost';
GRANT ALL PRIVILEGES ON wp_site2.* TO 'user2'@'localhost';

FLUSH PRIVILEGES;

步骤 3:配置 Nginx 虚拟主机(server block)

编辑或创建两个配置文件(推荐放在 /etc/nginx/sites-available/):

📁 /etc/nginx/sites-available/site1.com

server {
    listen 80;
    server_name site1.com www.site1.com;

    root /var/www/site1.com;
    index index.php index.html index.htm;

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

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

    location ~ /.ht {
        deny all;
    }
}

📁 /etc/nginx/sites-available/site2.com

server {
    listen 80;
    server_name site2.com www.site2.com;

    root /var/www/site2.com;
    index index.php index.html index.htm;

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

    location ~ .php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /.ht {
        deny all;
    }
}

步骤 4:启用站点

sudo ln -s /etc/nginx/sites-available/site1.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/site2.com /etc/nginx/sites-enabled/

# 测试配置
sudo nginx -t

# 重启 Nginx
sudo systemctl reload nginx

💡 提示:如果使用 HTTPS,还需为每个站点配置 SSL 证书(可用 Let’s Encrypt)。


二、Apache 配置两个 WordPress 站点

步骤 1:准备目录

/var/www/html/site1
/var/www/html/site2

上传对应的 WordPress 文件。

步骤 2:配置虚拟主机(VirtualHost)

编辑或创建配置文件(通常位于 /etc/apache2/sites-available/):

📁 /etc/apache2/sites-available/site1.conf

<VirtualHost *:80>
    ServerName site1.com
    ServerAlias www.site1.com
    DocumentRoot /var/www/html/site1

    <Directory /var/www/html/site1>
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/site1_error.log
    CustomLog ${APACHE_LOG_DIR}/site1_access.log combined
</VirtualHost>

📁 /etc/apache2/sites-available/site2.conf

<VirtualHost *:80>
    ServerName site2.com
    ServerAlias www.site2.com
    DocumentRoot /var/www/html/site2

    <Directory /var/www/html/site2>
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/site2_error.log
    CustomLog ${APACHE_LOG_DIR}/site2_access.log combined
</VirtualHost>

步骤 3:启用站点并重启 Apache

sudo a2ensite site1.conf
sudo a2ensite site2.conf

# 启用重写模块(WordPress 友好链接需要)
sudo a2enmod rewrite

# 测试配置
sudo apache2ctl configtest

# 重启 Apache
sudo systemctl restart apache2

三、后续操作

  1. 访问域名完成安装

    • 打开 http://site1.comhttp://site2.com
    • 按照 WordPress 安装向导填写数据库信息(使用各自的数据库)
  2. 设置 .htaccess(仅 Apache)

    • 确保 .htaccess 文件存在且可读,用于处理固定链接。
    • 如果权限问题,可能需要调整 Apache 的 AllowOverride 设置。
  3. DNS 解析(生产环境)

    • site1.comsite2.com 指向服务器 IP 地址。
  4. 本地测试(开发环境)

    • 修改本地 hosts 文件:
      127.0.0.1 site1.com
      127.0.0.1 site2.com

总结对比

特性 Nginx Apache
配置文件位置 /etc/nginx/sites-available/ /etc/apache2/sites-available/
启用站点方式 符号链接 + nginx -t + reload a2ensite + systemctl restart
URL 重写支持 try_files 指令 .htaccess + AllowOverride All
性能 更高并发性能 功能更灵活,适合 .htaccess

✅ 推荐:

  • 若追求性能与简洁 → 选 Nginx
  • 若习惯 .htaccess 或迁移老项目 → 选 Apache

无论哪种方式,关键是:每个站点独立目录 + 独立数据库 + 正确的虚拟主机配置

如有进一步需求(如 HTTPS、缓存、CDN),可继续扩展配置。

云服务器