在同一台服务器上搭建多个 WordPress 网站是常见需求,可以通过以下几种方法实现。以下是详细步骤和推荐方案:
✅ 方法一:使用虚拟主机(Virtual Hosts) + Apache/Nginx(推荐)
适用于 Linux 服务器(如 Ubuntu/CentOS),通过配置 Web 服务器为每个网站分配独立的域名或子域名。
步骤概览:
-
安装 LAMP 或 LEMP 环境
- LAMP:Linux + Apache + MySQL/MariaDB + PHP
- LEMP:Linux + Nginx + MySQL/MariaDB + PHP
示例(Ubuntu 上安装 LAMP):
sudo apt update sudo apt install apache2 mysql-server php libapache2-mod-php php-mysql -
为每个 WordPress 站点创建独立目录
sudo mkdir -p /var/www/site1.com sudo mkdir -p /var/www/site2.com -
下载并解压 WordPress 到各个目录
cd /tmp && wget https://wordpress.org/latest.tar.gz tar -xzf latest.tar.gz sudo cp -r wordpress/* /var/www/site1.com/ sudo chown -R www-data:www-data /var/www/site1.com -
为每个站点创建独立数据库
CREATE DATABASE wp_site1; CREATE USER 'user1'@'localhost' IDENTIFIED BY 'strongpassword'; GRANT ALL PRIVILEGES ON wp_site1.* TO 'user1'@'localhost'; FLUSH PRIVILEGES;同理创建
wp_site2和用户user2。 -
配置虚拟主机(Apache 示例)
创建配置文件:sudo nano /etc/apache2/sites-available/site1.com.conf内容如下:
<VirtualHost *:80> ServerName site1.com ServerAlias www.site1.com DocumentRoot /var/www/site1.com <Directory /var/www/site1.com> AllowOverride All </Directory> ErrorLog ${APACHE_LOG_DIR}/site1_error.log CustomLog ${APACHE_LOG_DIR}/site1_access.log combined </VirtualHost>同样创建
site2.com.conf。 -
启用站点并重启 Apache
sudo a2ensite site1.com.conf sudo a2ensite site2.com.conf sudo systemctl reload apache2 -
完成 WordPress 安装
访问http://site1.com,按向导填写数据库信息完成安装。
✅ 方法二:使用子目录部署多个 WordPress(共享主域名)
例如:
yoursite.com/blog1/yoursite.com/blog2/
操作方式:
- 将不同 WordPress 实例放在
/var/www/html/blog1,/var/www/html/blog2 - 配置时注意
.htaccess和数据库前缀避免冲突 - 适合内容隔离但共享主域名的场景
⚠️ 注意:需修改
wp-config.php中的$table_prefix避免数据库表名冲突。
✅ 方法三:使用 Docker 容器化部署(高级推荐)
每个 WordPress 独立容器,环境隔离、易于管理。
示例(使用 docker-compose):
# docker-compose.yml
version: '3.8'
services:
db1:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: wp_site1
MYSQL_USER: user1
MYSQL_PASSWORD: pass1
volumes:
- db1_data:/var/lib/mysql
wordpress1:
image: wordpress:latest
depends_on:
- db1
environment:
WORDPRESS_DB_HOST: db1:3306
WORDPRESS_DB_USER: user1
WORDPRESS_DB_PASSWORD: pass1
WORDPRESS_DB_NAME: wp_site1
ports:
- "8080:80"
volumes:
- wp1_data:/var/www/html
db2:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: wp_site2
MYSQL_USER: user2
MYSQL_PASSWORD: pass2
volumes:
- db2_data:/var/lib/mysql
wordpress2:
image: wordpress:latest
depends_on:
- db2
environment:
WORDPRESS_DB_HOST: db2:3306
WORDPRESS_DB_USER: user2
WORDPRESS_DB_PASSWORD: pass2
WORDPRESS_DB_NAME: wp_site2
ports:
- "8081:80"
volumes:
- wp2_data:/var/www/html
volumes:
db1_data:
db2_data:
wp1_data:
wp2_data:
运行:
docker-compose up -d
访问:
http://your-server-ip:8080→ 第一个网站http://your-server-ip:8081→ 第二个网站
可配合 Nginx 反向X_X绑定域名,实现
site1.com和site2.com的正常访问。
✅ 方法四:使用宝塔面板(可视化管理,适合新手)
- 安装宝塔面板(bt.cn)
- 登录后台,添加多个“网站”
- 为每个网站设置域名、根目录、PHP 版本
- 上传 WordPress 文件到对应目录
- 创建数据库并完成安装向导
优点:图形化操作,无需命令行。
🔐 安全建议
- 为每个站点使用独立数据库和用户
- 设置正确的文件权限(
www-data所属) - 定期更新 WordPress 核心、主题和插件
- 使用 SSL(Let’s Encrypt 免费证书)
- 避免使用
root权限运行服务
总结
| 方法 | 适用人群 | 优点 | 缺点 |
|---|---|---|---|
| 虚拟主机(Apache/Nginx) | 中级用户 | 高效、标准、性能好 | 需要手动配置 |
| 子目录部署 | 初学者 | 简单易操作 | 域名结构不优雅 |
| Docker 容器 | 高级用户 | 隔离性好、可扩展 | 学习成本高 |
| 宝塔面板 | 新手 | 图形化、一键部署 | 占用资源稍多 |
📌 推荐:生产环境使用「虚拟主机 + Nginx」或「Docker」;测试/学习可用「宝塔」。
如有具体环境(如 Ubuntu + Nginx),我可以提供更详细的配置文件。
云小栈