在同一个服务器上搭建多个 WordPress 实例是常见需求,比如用于管理多个网站或客户站点。以下是详细的步骤和最佳实践:
✅ 前提条件
确保你已经拥有:
- 一台 Linux 服务器(如 Ubuntu/CentOS)
- 已安装 LAMP 或 LEMP 环境(Apache/Nginx + MySQL/MariaDB + PHP)
- 域名或子域名(可选,也可用不同端口或路径)
🧩 方法一:使用不同的虚拟主机(推荐)
每个 WordPress 实例运行在独立的目录中,并通过虚拟主机配置区分。
步骤 1:创建多个网站目录
sudo mkdir -p /var/www/site1
sudo mkdir -p /var/www/site2
步骤 2:下载 WordPress 到各个目录
cd /tmp
wget https://wordpress.org/latest.tar.gz
tar -xzf latest.tar.gz
# 复制到各个站点
sudo cp -r wordpress/* /var/www/site1/
sudo cp -r wordpress/* /var/www/site2/
# 设置权限
sudo chown -R www-data:www-data /var/www/site1
sudo chown -R www-data:www-data /var/www/site2
sudo chmod -R 755 /var/www
步骤 3:为每个站点创建独立的数据库
mysql -u root -p
CREATE DATABASE wp_site1;
CREATE DATABASE wp_site2;
CREATE USER 'user1'@'localhost' IDENTIFIED BY 'strongpassword1';
CREATE USER 'user2'@'localhost' IDENTIFIED BY 'strongpassword2';
GRANT ALL PRIVILEGES ON wp_site1.* TO 'user1'@'localhost';
GRANT ALL PRIVILEGES ON wp_site2.* TO 'user2'@'localhost';
FLUSH PRIVILEGES;
EXIT;
步骤 4:配置 Web 服务器(以 Apache 为例)
创建虚拟主机配置文件:
sudo nano /etc/apache2/sites-available/site1.conf
内容如下:
<VirtualHost *:80>
ServerName site1.example.com
DocumentRoot /var/www/site1
<Directory /var/www/site1>
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/site1_error.log
CustomLog ${APACHE_LOG_DIR}/site1_access.log combined
</VirtualHost>
同样创建 site2.conf,修改 ServerName 和 DocumentRoot。
启用站点:
sudo a2ensite site1.conf
sudo a2ensite site2.conf
sudo systemctl reload apache2
💡 若无域名,可在本地 hosts 文件中绑定测试域名,或使用 IP + 端口方式(见方法二)。
🧩 方法二:使用不同端口访问(适合开发/测试)
修改 Apache 监听端口(可选)
编辑 /etc/apache2/ports.conf:
Listen 80
Listen 8080
创建第二个虚拟主机监听 8080:
sudo nano /etc/apache2/sites-available/site2-port.conf
<VirtualHost *:8080>
ServerName localhost
DocumentRoot /var/www/site2
<Directory /var/www/site2>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
启用并重启:
sudo a2ensite site2-port.conf
sudo systemctl restart apache2
访问:
http://your-server-ip:80→ site1http://your-server-ip:8080→ site2
🧩 方法三:使用子目录(单域名多实例)
例如:
example.com/blog1→ 第一个 WordPressexample.com/blog2→ 第二个 WordPress
配置步骤:
sudo mkdir /var/www/html/blog1
sudo mkdir /var/www/html/blog2
将 WordPress 文件复制进去,并分别配置数据库。
注意:
- 每个子目录中的
wp-config.php要正确设置数据库信息。 .htaccess会自动处理,但需确保主站不冲突。
🔐 安全建议
- 独立数据库:避免共用数据库表前缀混淆。
- 不同 wp-config.php:确保数据库凭据隔离。
- 文件权限:
/var/www/...所属www-data,权限 644/755。 - 定期备份:每个站点单独备份数据库和文件。
- HTTPS:为每个站点配置 SSL(可用 Let’s Encrypt)。
🛠️ 管理技巧
- 使用软链接简化更新:
sudo ln -s /usr/share/wordpress /var/www/site1 - 使用 Docker 可更轻松实现多实例隔离(进阶方案)。
✅ 总结
| 方法 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| 不同虚拟主机(域名) | 生产环境多网站 | 清晰、SEO友好 | 需要多个域名 |
| 不同端口 | 测试/内网 | 简单快速 | 不适合公网正式使用 |
| 子目录 | 单域名下多博客 | 统一品牌 | URL 较长,管理略复杂 |
如有需要,我也可以提供 Nginx 的配置示例或自动化脚本模板。欢迎继续提问!
云小栈