如何为同一台服务器上的两个WordPress配置不同的域名?

在单台服务器上为两个 WordPress 站点配置不同域名,核心思路是利用 Web 服务器(如 Nginx 或 Apache)的虚拟主机(Virtual Host)机制。根据你使用的操作系统和 Web 服务软件不同,具体操作略有差异。以下以国内云服务器(如阿里云、腾讯云)常见的 CentOS + Nginx 环境为例,提供标准且合规的操作方案。

前置准备

  1. 域名解析:确保两个域名的 A 记录都已正确指向该服务器的公网 IP 地址。
  2. 目录规划:假设服务器根目录为 /var/www,将两个 WordPress 站点分别部署在 /var/www/wp-site1/var/www/wp-site2
  3. 数据库隔离:在 MySQL/MariaDB 中创建两个独立的数据库(例如 db_site1, db_site2),并分别为每个站点创建对应的用户和权限。

方案一:使用 Nginx(推荐,性能更优)

Nginx 通过 server 块来区分不同的域名。

1. 修改配置文件

编辑 Nginx 的主配置文件(通常位于 /etc/nginx/nginx.conf)或在 /etc/nginx/conf.d/ 目录下新建两个独立的配置文件(如 site1.confsite2.conf)。

以新建独立文件为例,创建 site1.conf

server {
    listen 80;
    server_name example1.com www.example1.com; # 第一个域名

    root /var/www/wp-site1;
    index index.php index.html index.htm;

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

    location ~ .php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    # 可选:开启 HTTPS (需申请证书)
    # listen 443 ssl;
    # ssl_certificate /path/to/cert.pem;
    # ssl_certificate_key /path/to/key.pem;
}

同理,创建 site2.conf,只需将 server_name 改为第二个域名,root 路径改为 /var/www/wp-site2 即可。

2. 检查语法并重载

保存文件后,务必检查配置语法是否正确:

nginx -t

如果显示 syntax is oktest is successful,则执行重载生效:

systemctl reload nginx

方案二:使用 Apache

Apache 同样使用 VirtualHost 配置,通常位于 /etc/httpd/conf.d/ (CentOS) 或 /etc/apache2/sites-available/ (Ubuntu)。

1. 创建站点配置

新建文件 wp-site1.conf

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

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

    ErrorLog logs/example1-error_log
    CustomLog logs/example1-access_log common
</VirtualHost>

新建 wp-site2.conf,内容类似,仅修改 ServerNameDocumentRoot

2. 启用模块与重启

确保 Apache 已开启 mod_rewritemod_php 等必要模块。配置完成后重启服务:

# CentOS 7+
systemctl restart httpd

# Ubuntu/Debian
systemctl restart apache2

WordPress 内部配置

Web 服务器配置完成后,必须登录到两个站点的后台进行设置,否则会出现跳转错误或资源加载失败。

  1. 安装插件:在两个站点中分别安装好 WordPress。
  2. 数据库连接:在安装向导中,输入各自独立的数据库名称、用户名和密码。
  3. 站点地址修正
    • 进入第一个站点的后台 -> 设置 -> 常规
    • 将 "WordPress 地址 (URL)" 和 "站点地址 (URL)" 分别设置为 http://example1.com
    • 对第二个站点重复此步骤,设置为 http://example2.com
    • 注意:如果直接访问后台无法保存,可能需要先通过 FTP 修改对应站点的 wp-config.php 中的 WP_HOMEWP_SITEURL 常量,或者临时修改本地 hosts 文件模拟域名访问。

关键注意事项

  1. PHP-FPM 版本:如果两个站点使用了不同版本的 PHP(例如一个需要 5.6,一个需要 8.1),需要在 Nginx 配置中指定不同的 fastcgi_pass 端口,或者在 Apache 中使用 SetHandler 切换 PHP 处理器。
  2. SSL 证书:为了安全起见,建议为两个域名分别申请 SSL 证书。如果是 Let’s Encrypt,可以使用 Certbot 批量自动化获取;如果是商业证书,需分别上传至服务器对应路径并在 Nginx/Apache 中引用。
  3. 权限管理:确保 Web 服务器运行用户(通常是 www-datanginx)对两个站点目录拥有读写权限,特别是 wp-content/uploads 文件夹。
    chown -R www-data:www-data /var/www/wp-site1
    chown -R www-data:www-data /var/www/wp-site2
    chmod -R 755 /var/www/wp-site1
    chmod -R 755 /var/www/wp-site2
  4. 防火墙与安全组:确认云服务商的安全组规则已放行 TCP 80 (HTTP) 和 443 (HTTPS) 端口。

按照上述步骤操作,即可在同一台服务器上实现多域名、多 WordPress 站点的隔离运行,互不干扰。

未经允许不得转载:CLOUD云枢 » 如何为同一台服务器上的两个WordPress配置不同的域名?