在同一台服务器上部署两个 WordPress 站点是常见且高效的做法,通常采用虚拟主机(Virtual Hosts)方式,通过域名区分不同站点。以下是基于 Linux(以 Ubuntu + Nginx/Apache + PHP + MySQL/MariaDB)的标准配置步骤:
✅ 前提条件
- 一台已安装操作系统的服务器(如 Ubuntu 20.04+)
- 已安装 Web 服务器(Nginx 或 Apache)、PHP、数据库(MySQL/MariaDB)
- 两个独立域名已解析到该服务器 IP(或本地 hosts 测试)
- 具备 root/sudo 权限
💡 建议:生产环境使用 Let’s Encrypt 免费 SSL 证书;开发/测试可用
localhost+ 自定义 hosts 文件。
📌 步骤概览
| 步骤 | 内容 |
|---|---|
| 1️⃣ | 创建目录结构与权限 |
| 2️⃣ | 安装并配置数据库 |
| 3️⃣ | 下载并解压两个 WordPress 核心 |
| 4️⃣ | 创建两个独立的 wp-config.php |
| 5️⃣ | 配置 Web 服务器虚拟主机(关键!) |
| 6️⃣ | 设置正确权限与所有者 |
| 7️⃣ | 测试访问与完成安装向导 |
🔧 详细操作步骤(以 Nginx + PHP-FPM 为例)
1️⃣ 创建站点目录结构
sudo mkdir -p /var/www/site1.com/public_html
sudo mkdir -p /var/www/site2.com/public_html
2️⃣ 创建数据库与用户
sudo mysql -u root -p
-- 进入 MySQL 后执行:
CREATE DATABASE site1_db;
CREATE DATABASE site2_db;
CREATE USER 'site1_user'@'localhost' IDENTIFIED BY 'strong_password_1';
CREATE USER 'site2_user'@'localhost' IDENTIFIED BY 'strong_password_2';
GRANT ALL PRIVILEGES ON site1_db.* TO 'site1_user'@'localhost';
GRANT ALL PRIVILEGES ON site2_db.* TO 'site2_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
3️⃣ 下载并解压 WordPress
cd /tmp
wget https://wordpress.org/latest.tar.gz
tar -xzf latest.tar.gz
# 复制两份
sudo cp -r wordpress/* /var/www/site1.com/public_html/
sudo cp -r wordpress/* /var/www/site2.com/public_html/
4️⃣ 配置 wp-config.php(每个站点独立)
编辑第一个站点:
sudo nano /var/www/site1.com/public_html/wp-config.php
修改以下行:
define( 'DB_NAME', 'site1_db' );
define( 'DB_USER', 'site1_user' );
define( 'DB_PASSWORD', 'strong_password_1' );
define( 'DB_HOST', 'localhost' );
// 可选:添加唯一前缀防止冲突(推荐)
$table_prefix = 'wp_site1_';
同理编辑第二个站点 /var/www/site2.com/public_html/wp-config.php,注意:
- 数据库名/用户/密码改为
site2_* $table_prefix = 'wp_site2_';
⚠️ 切勿共用同一数据库用户或表前缀,否则会导致数据混淆甚至覆盖!
5️⃣ 配置 Nginx 虚拟主机(关键!)
创建站点配置文件:
sudo nano /etc/nginx/sites-available/site1.com
内容示例:
server {
listen 80;
server_name site1.com www.site1.com;
root /var/www/site1.com/public_html;
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:/run/php/php8.1-fpm.sock; # 根据实际 PHP 版本调整
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# 禁止访问敏感文件
location ~ /.ht { deny all; }
location ~ ^/wp-content/uploads/.*.php$ { deny all; }
}
再创建 site2.com 配置(仅改 server_name, root, 可能需调整 fastcgi_pass 若用多 PHP 版本):
sudo nano /etc/nginx/sites-available/site2.com
启用站点:
sudo ln -s /etc/nginx/sites-available/site1.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/site2.com /etc/nginx/sites-enabled/
sudo rm /etc/nginx/sites-enabled/default # 移除默认站(避免冲突)
🔁 若用 Apache:在
/etc/apache2/sites-available/下创建.conf文件,用a2ensite启用。
6️⃣ 设置权限与所有者
sudo chown -R www-data:www-data /var/www/site1.com/public_html
sudo chown -R www-data:www-data /var/www/site2.com/public_html
sudo find /var/www/site1.com/public_html -type d -exec chmod 755 {} ;
sudo find /var/www/site1.com/public_html -type f -exec chmod 644 {} ;
# uploads 目录需可写(WordPress 自动处理,但首次安装建议临时允许)
sudo chmod -R 755 /var/www/site1.com/public_html/wp-content/uploads
sudo chmod -R 755 /var/www/site2.com/public_html/wp-content/uploads
✅ 重启服务:
sudo systemctl restart nginx
sudo systemctl restart php8.1-fpm # 替换为你的 PHP 版本
7️⃣ 浏览器访问并完成安装
- 打开
http://site1.com→ 按提示安装 WordPress(使用site1_db) - 打开
http://site2.com→ 同样安装(使用site2_db)
🛡️ 安全建议:
- 安装后立即更新 WordPress、主题、插件
- 禁用 XML-RPC(防暴力破解)
- 使用强密码 + 双因素认证
- 定期备份(可用 UpdraftPlus 或脚本)
🔄 扩展建议
| 需求 | 方案 |
|---|---|
| 多站点网络(Multisite) | 可在单个 WP 实例内启用 Multisite,共享数据库但子域/子路径管理多个站 |
| 隔离性要求高 | 考虑 Docker + 容器化部署(每个 WP 独立镜像/网络) |
| 高并发 | 为每个站点配置独立缓存层(Redis/Varnish)+ CDN |
| 自动化部署 | 使用 Ansible / Terraform 脚本一键部署 |
需要我提供:
- Apache 版配置模板?
- Docker Compose 多站点部署示例?
- 自动化部署脚本(Ansible/Bash)?
欢迎告诉我你的技术栈偏好,我可进一步定制方案。
云小栈