在一个服务器上运行多个 WordPress 站点是一个非常常见的需求,适用于托管多个客户网站、搭建测试环境与生产环境、或管理多个品牌站点等场景。以下是几种常见的方式以及详细教程思路,帮助你实现一个服务器部署多个 WordPress 站点:
✅ 一、适用场景
- 想用一台服务器运行多个独立的 WordPress 网站(不同域名)
- 想搭建 WordPress 多站点网络(Multisite):一套后台管理多个子站点
- 想在本地/开发环境中同时运行多个 WordPress 测试站点
🧩 二、方式一:多虚拟主机(推荐)
适用:每个站点拥有不同域名
原理:
在同一台服务器上配置多个 虚拟主机(Virtual Hosts),为每个 WordPress 安装不同的目录和数据库。
步骤如下:
1. 准备服务器环境(如 Ubuntu + Apache 或 Nginx)
# 安装 LAMP 环境
sudo apt update
sudo apt install apache2 mysql-server php php-mysql -y
2. 创建多个网站目录
sudo mkdir -p /var/www/site1.com/public_html
sudo mkdir -p /var/www/site2.com/public_html
3. 上传 WordPress 到每个目录
分别下载 WordPress 并解压到对应的目录中:
cd /var/www/site1.com/public_html
wget https://wordpress.org/latest.tar.gz
tar -xzvf latest.tar.gz
mv wordpress/* .
rm -rf wordpress latest.tar.gz
同样操作 site2.com
4. 创建各自的数据库和用户
CREATE DATABASE site1;
CREATE DATABASE site2;
CREATE USER 'user1'@'localhost' IDENTIFIED BY 'password1';
CREATE USER 'user2'@'localhost' IDENTIFIED BY 'password2';
GRANT ALL PRIVILEGES ON site1.* TO 'user1'@'localhost';
GRANT ALL PRIVILEGES ON site2.* TO 'user2'@'localhost';
FLUSH PRIVILEGES;
5. 配置各自的 wp-config.php 文件
进入每个站点目录修改数据库连接信息:
define( 'DB_NAME', 'site1' );
define( 'DB_USER', 'user1' );
define( 'DB_PASSWORD', 'password1' );
define( 'DB_HOST', 'localhost' );
6. 配置 Apache 虚拟主机
创建两个 .conf 文件:
sudo nano /etc/apache2/sites-available/site1.com.conf
内容示例:
<VirtualHost *:80>
ServerAdmin admin@site1.com
ServerName site1.com
ServerAlias www.site1.com
DocumentRoot /var/www/site1.com/public_html/
<Directory /var/www/site1.com/public_html/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
同样创建 site2.com.conf
启用站点并重启 Apache:
sudo a2ensite site1.com.conf
sudo a2ensite site2.com.conf
sudo systemctl restart apache2
🌐 三、方式二:WordPress Multisite(多站点网络)
适用:想用一个 WordPress 后台统一管理多个子站点(子域名或子目录)
步骤简要:
- 安装好一个 WordPress。
- 修改
wp-config.php开启 multisite:
define('WP_ALLOW_MULTISITE', true);
- 登录后台 → 工具 → 配置网络:
- 子域名或子目录选择
- 根据提示添加代码到
wp-config.php和.htaccess - 完成后即可通过后台新建站点
💻 四、方式三:使用 Docker 运行多个 WordPress 实例
适合高级用户,可以快速隔离环境。
示例命令:
docker run --name site1 -e WORDPRESS_DB_NAME=site1 -p 8001:80 -d wordpress
docker run --name site2 -e WORDPRESS_DB_NAME=site2 -p 8002:80 -d wordpress
可以通过端口访问不同站点:http://yourserver:8001, http://yourserver:8002
也可以配合 Nginx 反向绑定域名。
🔒 五、安全建议
- 不同站点使用不同数据库账号
- 设置合适的文件权限:
www-data用户权限 - 使用 Let’s Encrypt 为每个站点开启 HTTPS
- 定期备份各站点数据和数据库
📌 总结对比表
| 方式 | 是否独立域名 | 是否共用后台 | 配置复杂度 | 推荐用途 |
|---|---|---|---|---|
| 多虚拟主机 | ✅ 是 | ❌ 否 | ⭐⭐⭐ | 多个客户网站、品牌站 |
| Multisite 多站点 | ❌ 子域名/子目录 | ✅ 是 | ⭐⭐ | 统一管理多个子站点 |
| Docker 容器 | ✅ 是 | ❌ 否 | ⭐⭐⭐⭐ | 开发、测试、隔离环境 |
如果你告诉我你的具体环境(比如是 Ubuntu/Apache 还是 CentOS/Nginx),我可以给你更详细的步骤 👇
是否需要我生成一个完整的脚本或教程?
CLOUD技术博