在单台服务器上为两个 WordPress 站点配置不同域名,核心思路是利用 Web 服务器(如 Nginx 或 Apache)的虚拟主机(Virtual Host)机制。根据你使用的操作系统和 Web 服务软件不同,具体操作略有差异。以下以国内云服务器(如阿里云、腾讯云)常见的 CentOS + Nginx 环境为例,提供标准且合规的操作方案。
前置准备
- 域名解析:确保两个域名的 A 记录都已正确指向该服务器的公网 IP 地址。
- 目录规划:假设服务器根目录为
/var/www,将两个 WordPress 站点分别部署在/var/www/wp-site1和/var/www/wp-site2。 - 数据库隔离:在 MySQL/MariaDB 中创建两个独立的数据库(例如
db_site1,db_site2),并分别为每个站点创建对应的用户和权限。
方案一:使用 Nginx(推荐,性能更优)
Nginx 通过 server 块来区分不同的域名。
1. 修改配置文件
编辑 Nginx 的主配置文件(通常位于 /etc/nginx/nginx.conf)或在 /etc/nginx/conf.d/ 目录下新建两个独立的配置文件(如 site1.conf 和 site2.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 ok 和 test 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,内容类似,仅修改 ServerName 和 DocumentRoot。
2. 启用模块与重启
确保 Apache 已开启 mod_rewrite 和 mod_php 等必要模块。配置完成后重启服务:
# CentOS 7+
systemctl restart httpd
# Ubuntu/Debian
systemctl restart apache2
WordPress 内部配置
Web 服务器配置完成后,必须登录到两个站点的后台进行设置,否则会出现跳转错误或资源加载失败。
- 安装插件:在两个站点中分别安装好 WordPress。
- 数据库连接:在安装向导中,输入各自独立的数据库名称、用户名和密码。
- 站点地址修正:
- 进入第一个站点的后台 -> 设置 -> 常规。
- 将 "WordPress 地址 (URL)" 和 "站点地址 (URL)" 分别设置为
http://example1.com。 - 对第二个站点重复此步骤,设置为
http://example2.com。 - 注意:如果直接访问后台无法保存,可能需要先通过 FTP 修改对应站点的
wp-config.php中的WP_HOME和WP_SITEURL常量,或者临时修改本地 hosts 文件模拟域名访问。
关键注意事项
- PHP-FPM 版本:如果两个站点使用了不同版本的 PHP(例如一个需要 5.6,一个需要 8.1),需要在 Nginx 配置中指定不同的
fastcgi_pass端口,或者在 Apache 中使用SetHandler切换 PHP 处理器。 - SSL 证书:为了安全起见,建议为两个域名分别申请 SSL 证书。如果是 Let’s Encrypt,可以使用 Certbot 批量自动化获取;如果是商业证书,需分别上传至服务器对应路径并在 Nginx/Apache 中引用。
- 权限管理:确保 Web 服务器运行用户(通常是
www-data或nginx)对两个站点目录拥有读写权限,特别是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 - 防火墙与安全组:确认云服务商的安全组规则已放行 TCP 80 (HTTP) 和 443 (HTTPS) 端口。
按照上述步骤操作,即可在同一台服务器上实现多域名、多 WordPress 站点的隔离运行,互不干扰。
CLOUD云枢