加油
努力

配置一台服务器同时运行两个WordPress站点的步骤是什么?

在同一台服务器上部署两个 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)?
    欢迎告诉我你的技术栈偏好,我可进一步定制方案。
云服务器