加油
努力

使用Nginx或Apache如何实现一台服务器托管多个WordPress网站?

在一台服务器上托管多个 WordPress 网站,可以通过 NginxApache 配置虚拟主机(Virtual Hosts)来实现。每个网站使用不同的域名或子域名,共享同一台服务器资源但彼此独立运行。

下面分别介绍使用 Nginx 和 Apache 的配置方法:


✅ 一、准备工作

  1. 服务器环境要求:

    • Linux 服务器(如 Ubuntu/CentOS)
    • 安装 LAMP(Linux + Apache + MySQL + PHP)或 LEMP(Linux + Nginx + MySQL + PHP)
    • 每个 WordPress 站点需要:
      • 独立的目录(如 /var/www/site1, /var/www/site2
      • 独立的数据库
      • 域名解析到服务器 IP(A 记录)
  2. 示例信息:

    • 网站1:example1.com → 目录 /var/www/example1
    • 网站2:example2.com → 目录 /var/www/example2

✅ 二、使用 Nginx 托管多个 WordPress 站点

步骤 1:为每个站点创建目录并部署 WordPress

sudo mkdir -p /var/www/example1
sudo mkdir -p /var/www/example2

# 下载并解压 WordPress 到对应目录
cd /tmp && wget https://wordpress.org/latest.tar.gz
tar -xzf latest.tar.gz

sudo cp -r wordpress/* /var/www/example1/
sudo cp -r wordpress/* /var/www/example2/

# 设置权限
sudo chown -R www-data:www-data /var/www/example1
sudo chown -R www-data:www-data /var/www/example2

步骤 2:为每个站点创建数据库

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

步骤 3:配置 Nginx 虚拟主机

创建站点配置文件:

sudo nano /etc/nginx/sites-available/example1.com

内容如下:

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

    root /var/www/example1;
    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;
    }
}

复制并修改为 example2.com

sudo cp /etc/nginx/sites-available/example1.com /etc/nginx/sites-available/example2.com
sudo nano /etc/nginx/sites-available/example2.com

修改 server_nameroot 路径:

server_name example2.com www.example2.com;
root /var/www/example2;

步骤 4:启用站点

sudo ln -s /etc/nginx/sites-available/example1.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/example2.com /etc/nginx/sites-enabled/

# 删除默认站点(可选)
sudo rm /etc/nginx/sites-enabled/default

步骤 5:测试并重启 Nginx

sudo nginx -t           # 测试配置
sudo systemctl reload nginx

✅ 三、使用 Apache 托管多个 WordPress 站点

步骤 1:同样创建目录和部署 WordPress

同上,创建 /var/www/example1/var/www/example2,并部署 WordPress。

步骤 2:配置 Apache 虚拟主机

创建配置文件:

sudo nano /etc/apache2/sites-available/example1.com.conf

内容如下:

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

    <Directory /var/www/example1>
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/example1_error.log
    CustomLog ${APACHE_LOG_DIR}/example1_access.log combined
</VirtualHost>

同样创建 example2.com.conf

sudo nano /etc/apache2/sites-available/example2.com.conf
<VirtualHost *:80>
    ServerName example2.com
    ServerAlias www.example2.com
    DocumentRoot /var/www/example2

    <Directory /var/www/example2>
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/example2_error.log
    CustomLog ${APACHE_LOG_DIR}/example2_access.log combined
</VirtualHost>

步骤 3:启用站点

sudo a2ensite example1.com.conf
sudo a2ensite example2.com.conf

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

# 重启 Apache
sudo systemctl restart apache2

✅ 四、完成安装

访问以下地址完成 WordPress 安装:

  • http://example1.com/wp-admin/install.php
  • http://example2.com/wp-admin/install.php

根据提示填写数据库信息(前面创建的数据库和用户)。


✅ 五、注意事项

  1. SSL 加密(推荐):
    使用 Let’s Encrypt 免费证书,通过 Certbot 自动配置 HTTPS。

    sudo certbot --nginx -d example1.com -d www.example1.com
  2. PHP-FPM:
    Nginx 必须配合 PHP-FPM 处理 PHP 请求,确保已安装并运行。

  3. 防火墙:
    开放 80 和 443 端口:

    sudo ufw allow 'Nginx Full'
  4. 性能优化:
    多站点建议使用缓存插件(如 WP Super Cache)、OPcache、Redis 等提升性能。


✅ 总结

项目 Nginx Apache
配置路径 /etc/nginx/sites-available/ /etc/apache2/sites-available/
启用方式 符号链接到 sites-enabled a2ensite 命令
重载服务 systemctl reload nginx systemctl restart apache2
推荐场景 高并发、静态资源多 兼容性好、.htaccess 支持

建议: 对性能要求高选 Nginx;对 .htaccess 规则依赖多选 Apache。


如有需要,我可以提供一键部署脚本或 Docker 多站点方案。

云服务器