在同一台服务器上搭建多个 WordPress 网站是常见且成熟的实践,主要有以下几种主流方法,按推荐度和适用场景排序:
✅ 推荐首选:基于虚拟主机(Virtual Host)的多站点部署(独立域名/子目录)
适用于大多数生产环境(Linux + Apache/Nginx),每个网站完全独立、安全隔离、易于管理。
✅ 方法一:多虚拟主机(推荐|最常用|最佳实践)
适用:不同域名(如
site1.com、site2.net)或子域名(blog.example.com,shop.example.com)
要求:Web 服务器支持(Apache 或 Nginx)、独立数据库(可选共用但不推荐)
步骤概览:
-
准备环境
- 安装 LAMP(Linux + Apache + MySQL/MariaDB + PHP)或 LEMP(Nginx 替代 Apache)
- 确保 PHP 版本 ≥ 7.4(建议 8.1+),启用
mod_rewrite(Apache)或rewrite模块(Nginx)
-
为每个站点创建独立目录
sudo mkdir -p /var/www/site1.com/public_html sudo mkdir -p /var/www/site2.net/public_html -
为每个站点创建独立数据库与用户(强烈推荐)
CREATE DATABASE wp_site1; CREATE USER 'wp_user1'@'localhost' IDENTIFIED BY 'strong_password1'; GRANT ALL PRIVILEGES ON wp_site1.* TO 'wp_user1'@'localhost'; CREATE DATABASE wp_site2; CREATE USER 'wp_user2'@'localhost' IDENTIFIED BY 'strong_password2'; GRANT ALL PRIVILEGES ON wp_site2.* TO 'wp_user2'@'localhost'; FLUSH PRIVILEGES; -
配置虚拟主机(以 Apache 为例)
/etc/apache2/sites-available/site1.com.conf:<VirtualHost *:80> ServerName site1.com ServerAlias www.site1.com DocumentRoot /var/www/site1.com/public_html <Directory /var/www/site1.com/public_html> AllowOverride All Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/site1_error.log CustomLog ${APACHE_LOG_DIR}/site1_access.log combined </VirtualHost>启用并重启:
sudo a2ensite site1.com.conf sudo systemctl reload apache2✅ Nginx 配置类似(使用
server{}块,注意root和location ~ .php$配置) -
下载并安装 WordPress
cd /var/www/site1.com/public_html sudo wget https://wordpress.org/latest.tar.gz sudo tar -xzf latest.tar.gz --strip-components=1 sudo chown -R $USER:www-data /var/www/site1.com/public_html sudo chmod -R 755 /var/www/site1.com/public_html访问
http://site1.com进行 Web 安装(填写对应数据库信息) -
HTTPS(强烈建议)
使用 Certbot 一键部署 Let’s Encrypt SSL:sudo apt install certbot python3-certbot-apache # Apache sudo certbot --apache -d site1.com -d www.site1.com
✅ 优势:完全隔离、无冲突、便于备份/迁移/升级、符合安全最佳实践
⚠️ 注意:避免共用 wp-config.php 或数据库前缀(如 wp_),各站应独立配置
⚠️ 方法二:WordPress 多站点网络(Multisite Network)
适用:同一主域名下统一管理多个子站(如
example.com+site1.example.com或example.com/site1/)
本质是「一个 WordPress 核心 + 多个子站点」,共享插件/主题(可独立启用)、共用用户表(可选)
启用步骤(需在全新或干净 WP 安装中操作):
- 在
wp-config.php中添加(必须在/* That's all... */之前):define('WP_ALLOW_MULTISITE', true); - 登录后台 → 工具 → 网络设置 → 选择「子域名」或「子目录」模式 → 安装
- 按提示将生成的代码(如
define('MULTISITE', true);等)粘贴到wp-config.php,并更新.htaccess(Apache)或 Nginx 配置 - 创建子站点(如
blog.example.com,store.example.com)
✅ 优势:集中管理、统一更新核心/插件、适合内部 SaaS 或教育平台
❌ 局限:
- 子域名模式需泛域名 DNS(
*.example.com) - 插件/主题兼容性要求高(非所有插件支持 Multisite)
- 数据库耦合度高,迁移单个子站较复杂
- 不适合完全独立的品牌网站(如客户 A 和客户 B 的网站)
❌ 不推荐的方法(仅作警示)
| 方法 | 问题 |
|---|---|
| 共用同一套 WP 文件 + 不同数据库 | 风险极高:一次核心更新/插件漏洞影响所有站;URL 重写易冲突;无法独立维护 |
| 用子目录硬链接或符号链接模拟多站 | 权限混乱、缓存干扰、SEO 友好性差、违反 WP 设计原则 |
| 仅靠插件实现“伪多站”(如 WP Ultimo) | 本质仍是 Multisite 扩展,复杂度高,学习成本大,小团队慎用 |
🔐 安全与运维建议(必做!)
- ✅ 每个站点独立 Linux 用户(如
site1,site2)+www-data组,限制文件权限(750/640) - ✅ 定期自动备份:使用
wp-cli+borgbackup或 Duplicator/UpdraftPlus(确保含 DB + 文件) - ✅ PHP-FPM 隔离:为每站配置独立
pool(如site1.conf),防止资源抢占和跨站读取 - ✅ 防火墙 & Fail2ban:阻止暴力登录(尤其
/wp-login.php) - ✅ 禁用文件编辑:
wp-config.php中添加define('DISALLOW_FILE_EDIT', true); - ✅ CDN + 缓存:Cloudflare + WP Super Cache / Redis(每站独立缓存键)
🌐 补充:容器化方案(进阶推荐)
对 DevOps 友好,适合需要弹性伸缩或 CI/CD 的团队:
# docker-compose.yml 示例(多站)
version: '3.8'
services:
site1-db:
image: mariadb:10.11
environment: {MYSQL_ROOT_PASSWORD: ..., MYSQL_DATABASE: wp_site1}
site1-app:
image: wordpress:php8.2-apache
environment: {WORDPRESS_DB_HOST: site1-db, WORDPRESS_DB_NAME: wp_site1}
volumes: ["./site1/wp-content:/var/www/html/wp-content"]
ports: ["8081:80"]
site2-db: { ... }
site2-app: { ... }
✅ 优势:彻底隔离、一键克隆、环境一致;❌ 需要 Docker 基础
💡 一句话总结:
生产环境首选「多虚拟主机 + 独立数据库 + 独立 WP 实例」 —— 安全、稳定、灵活、易维护;Multisite 仅用于有强统一管理需求的特定场景。
如需我为你生成:
- 完整的 Apache/Nginx 虚拟主机配置模板
- 自动化部署脚本(Bash)
- Docker Compose 多站示例
- SSL 自动续期配置
欢迎随时告诉我你的服务器环境(Ubuntu/CentOS?Apache/Nginx?是否已有域名?),我可以为你定制完整方案 👇
ECLOUD博客