在同一台服务器上搭建多个 WordPress 网站(通常称为“多站点”或“多租户”架构)主要有两种主流方案:
-
WordPress Multisite(官方多站点网络)
- 一个 WordPress 安装,通过子域名或子目录共享数据库和代码。
- 适合管理多个风格相似、用户权限统一的网站(如企业内网、教育平台)。
-
独立 WordPress 实例 + 虚拟主机(Virtual Hosts)
- 每个网站拥有独立的 WordPress 安装、数据库和配置文件。
- 通过 Web 服务器(如 Nginx/Apache)配置虚拟主机,根据域名分发请求。
- 适合完全独立的网站,彼此隔离,安全性更高,灵活性更强。
✅ 推荐方案:独立实例 + 虚拟主机(更常见、更灵活)
下面以 Ubuntu + Nginx + PHP-FPM + MySQL 为例,详细说明如何搭建两个独立的 WordPress 网站。
📌 前提条件
- 一台 Linux 服务器(如 Ubuntu 20.04/22.04)
- 已安装 LEMP 栈(Linux, Nginx, MySQL/MariaDB, PHP-FPM)
- 两个域名指向该服务器(例如
site1.com和site2.com) - root 或 sudo 权限
🔧 步骤一:安装必要软件(若未安装)
sudo apt update
sudo apt install nginx mysql-server php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-zip unzip curl wget
创建 MySQL 用户和数据库(为每个网站单独创建):
CREATE DATABASE site1_db;
CREATE USER 'site1_user'@'localhost' IDENTIFIED BY 'strong_password';
GRANT ALL PRIVILEGES ON site1_db.* TO 'site1_user'@'localhost';
CREATE DATABASE site2_db;
CREATE USER 'site2_user'@'localhost' IDENTIFIED BY 'another_strong_password';
GRANT ALL PRIVILEGES ON site2_db.* TO 'site2_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
💡 建议为每个网站使用不同的数据库用户名和密码,增强安全性。
🔧 步骤二:下载并解压 WordPress
# 为 site1.com
cd /var/www
wget https://wordpress.org/latest.tar.gz
tar xzvf latest.tar.gz
mv wordpress site1_com
# 为 site2.com(可重复操作,或复制一份)
cp -r site1_com site2_com
rm latest.tar.gz
设置正确权限:
sudo chown -R www-data:www-data /var/www/site1_com
sudo chmod -R 755 /var/www/site1_com
sudo chown -R www-data:www-data /var/www/site2_com
sudo chmod -R 755 /var/www/site2_com
🔧 步骤三:配置 Nginx 虚拟主机
创建 site1.com 的 Nginx 配置
sudo nano /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?$args;
}
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; # 根据你的 PHP 版本调整
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /.ht {
deny all;
}
# 静态文件缓存优化(可选)
location ~* .(js|css|png|jpg|jpeg|gif|ico|svg)$ {
expires 30d;
add_header Cache-Control "public, immutable";
}
}
启用并测试配置:
sudo ln -s /etc/nginx/sites-available/site1.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
创建 site2.com 的 Nginx 配置
类似地,创建 /etc/nginx/sites-available/site2.com,修改 server_name 和 root 路径:
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?$args;
}
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /.ht {
deny all;
}
location ~* .(js|css|png|jpg|jpeg|gif|ico|svg)$ {
expires 30d;
add_header Cache-Control "public, immutable";
}
}
启用并重启 Nginx:
sudo ln -s /etc/nginx/sites-available/site2.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
🔧 步骤四:通过浏览器完成 WordPress 安装
- 访问
http://site1.com→ 按照提示填写数据库信息(数据库名:site1_db,用户名:site1_user,密码:你设置的密码)→ 完成安装。 - 访问
http://site2.com→ 同样流程,使用site2_db和site2_user。
⚠️ 确保每个网站的
wp-config.php中数据库凭证正确无误。
🔒 安全与优化建议
-
使用 HTTPS
安装 Let’s Encrypt SSL 证书:sudo apt install certbot python3-certbot-nginx sudo certbot --nginx -d site1.com -d www.site1.com sudo certbot --nginx -d site2.com -d www.site2.com -
限制 PHP 执行权限
在php.ini或pool.d/www.conf中禁用危险函数:disable_functions = exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source -
定期备份
使用插件如 UpdraftPlus 或手动备份数据库和/var/www/目录。 -
监控资源使用
每个 WordPress 实例会占用内存/CPU,建议使用htop或monit监控。 -
考虑使用容器化(进阶)
可使用 Docker + docker-compose 隔离每个 WordPress 实例,便于管理和扩展。
🆚 方案对比
| 特性 | WordPress Multisite | 独立实例 + 虚拟主机 |
|---|---|---|
| 安装复杂度 | 较低 | 中等 |
| 安全性 | 共享核心,漏洞影响全部站点 | 完全隔离,更安全 |
| 插件/主题兼容性 | 部分插件不支持多站点 | 无限制 |
| 资源占用 | 较低(共享进程) | 较高(每个站点独立 PHP-FPM 池) |
| 适用场景 | 内部系统、教育平台、品牌子站 | 独立客户网站、不同业务线 |
✅ 总结
对于大多数用户,推荐使用“独立实例 + Nginx 虚拟主机”方式,因为它:
- 更安全、更稳定
- 易于维护和升级
- 支持不同 PHP 版本、插件组合
- 故障隔离性好
如果你需要统一管理、共享用户登录、统一后台,则可选择 WordPress Multisite。
如需进一步自动化部署,可结合 Ansible、Docker 或 WP-CLI 脚本批量创建站点。
云小栈