加油
努力

如何在同一台服务器上搭建多个WordPress网站?

在同一台服务器上搭建多个 WordPress 网站(通常称为“多站点”或“多租户”架构)主要有两种主流方案:

  1. WordPress Multisite(官方多站点网络)

    • 一个 WordPress 安装,通过子域名或子目录共享数据库和代码。
    • 适合管理多个风格相似、用户权限统一的网站(如企业内网、教育平台)。
  2. 独立 WordPress 实例 + 虚拟主机(Virtual Hosts)

    • 每个网站拥有独立的 WordPress 安装、数据库和配置文件。
    • 通过 Web 服务器(如 Nginx/Apache)配置虚拟主机,根据域名分发请求。
    • 适合完全独立的网站,彼此隔离,安全性更高,灵活性更强。

✅ 推荐方案:独立实例 + 虚拟主机(更常见、更灵活)

下面以 Ubuntu + Nginx + PHP-FPM + MySQL 为例,详细说明如何搭建两个独立的 WordPress 网站。


📌 前提条件

  • 一台 Linux 服务器(如 Ubuntu 20.04/22.04)
  • 已安装 LEMP 栈(Linux, Nginx, MySQL/MariaDB, PHP-FPM)
  • 两个域名指向该服务器(例如 site1.comsite2.com
  • root 或 sudo 权限

🔧 步骤一:安装必要软件(若未安装)

sudo apt update
sudo apt install nginx mysql-server php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-zip unzip curl wget

创建 MySQL 用户和数据库(为每个网站单独创建):

CREATE DATABASE site1_db;
CREATE USER 'site1_user'@'localhost' IDENTIFIED BY 'strong_password';
GRANT ALL PRIVILEGES ON site1_db.* TO 'site1_user'@'localhost';

CREATE DATABASE site2_db;
CREATE USER 'site2_user'@'localhost' IDENTIFIED BY 'another_strong_password';
GRANT ALL PRIVILEGES ON site2_db.* TO 'site2_user'@'localhost';

FLUSH PRIVILEGES;
EXIT;

💡 建议为每个网站使用不同的数据库用户名和密码,增强安全性。


🔧 步骤二:下载并解压 WordPress

# 为 site1.com
cd /var/www
wget https://wordpress.org/latest.tar.gz
tar xzvf latest.tar.gz
mv wordpress site1_com

# 为 site2.com(可重复操作,或复制一份)
cp -r site1_com site2_com
rm latest.tar.gz

设置正确权限:

sudo chown -R www-data:www-data /var/www/site1_com
sudo chmod -R 755 /var/www/site1_com

sudo chown -R www-data:www-data /var/www/site2_com
sudo chmod -R 755 /var/www/site2_com

🔧 步骤三:配置 Nginx 虚拟主机

创建 site1.com 的 Nginx 配置

sudo nano /etc/nginx/sites-available/site1.com

内容示例:

server {
    listen 80;
    server_name site1.com www.site1.com;
    root /var/www/site1_com;
    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:/var/run/php/php8.1-fpm.sock;  # 根据你的 PHP 版本调整
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /.ht {
        deny all;
    }

    # 静态文件缓存优化(可选)
    location ~* .(js|css|png|jpg|jpeg|gif|ico|svg)$ {
        expires 30d;
        add_header Cache-Control "public, immutable";
    }
}

启用并测试配置:

sudo ln -s /etc/nginx/sites-available/site1.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

创建 site2.com 的 Nginx 配置

类似地,创建 /etc/nginx/sites-available/site2.com,修改 server_nameroot 路径:

server {
    listen 80;
    server_name site2.com www.site2.com;
    root /var/www/site2_com;
    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:/var/run/php/php8.1-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /.ht {
        deny all;
    }

    location ~* .(js|css|png|jpg|jpeg|gif|ico|svg)$ {
        expires 30d;
        add_header Cache-Control "public, immutable";
    }
}

启用并重启 Nginx:

sudo ln -s /etc/nginx/sites-available/site2.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

🔧 步骤四:通过浏览器完成 WordPress 安装

  1. 访问 http://site1.com → 按照提示填写数据库信息(数据库名:site1_db,用户名:site1_user,密码:你设置的密码)→ 完成安装。
  2. 访问 http://site2.com → 同样流程,使用 site2_dbsite2_user

⚠️ 确保每个网站的 wp-config.php 中数据库凭证正确无误。


🔒 安全与优化建议

  1. 使用 HTTPS
    安装 Let’s Encrypt SSL 证书:

    sudo apt install certbot python3-certbot-nginx
    sudo certbot --nginx -d site1.com -d www.site1.com
    sudo certbot --nginx -d site2.com -d www.site2.com
  2. 限制 PHP 执行权限
    php.inipool.d/www.conf 中禁用危险函数:

    disable_functions = exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source
  3. 定期备份
    使用插件如 UpdraftPlus 或手动备份数据库和 /var/www/ 目录。

  4. 监控资源使用
    每个 WordPress 实例会占用内存/CPU,建议使用 htopmonit 监控。

  5. 考虑使用容器化(进阶)
    可使用 Docker + docker-compose 隔离每个 WordPress 实例,便于管理和扩展。


🆚 方案对比

特性 WordPress Multisite 独立实例 + 虚拟主机
安装复杂度 较低 中等
安全性 共享核心,漏洞影响全部站点 完全隔离,更安全
插件/主题兼容性 部分插件不支持多站点 无限制
资源占用 较低(共享进程) 较高(每个站点独立 PHP-FPM 池)
适用场景 内部系统、教育平台、品牌子站 独立客户网站、不同业务线

✅ 总结

对于大多数用户,推荐使用“独立实例 + Nginx 虚拟主机”方式,因为它:

  • 更安全、更稳定
  • 易于维护和升级
  • 支持不同 PHP 版本、插件组合
  • 故障隔离性好

如果你需要统一管理、共享用户登录、统一后台,则可选择 WordPress Multisite

如需进一步自动化部署,可结合 Ansible、Docker 或 WP-CLI 脚本批量创建站点。

云服务器