奋斗
努力

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

云计算

在一台服务器上搭建多个 WordPress 网站是完全可行的,常见的方式包括使用虚拟主机(Virtual Host)配置、子目录部署或 Docker 容器化管理。以下是基于 Linux 服务器(如 Ubuntu/CentOS)+ Nginx/Apache + MySQL/MariaDB + PHP 的主流方案详细说明:


✅ 方案一:使用 Nginx 虚拟主机(推荐)

步骤 1:准备服务器环境(LAMP/LEMP)

确保已安装以下软件:

  • Web 服务器:Nginx 或 Apache
  • 数据库:MySQL 或 MariaDB
  • PHP:PHP-FPM(建议 PHP 7.4 或以上)
# Ubuntu 示例
sudo apt update
sudo apt install nginx mysql-server php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-zip

步骤 2:为每个网站创建独立目录

例如,搭建两个网站:

sudo mkdir -p /var/www/site1.com
sudo mkdir -p /var/www/site2.com

设置权限:

sudo chown -R www-data:www-data /var/www/site1.com
sudo chown -R www-data:www-data /var/www/site2.com

步骤 3:下载 WordPress 到每个目录

cd /var/www/site1.com
sudo wget https://wordpress.org/latest.tar.gz
sudo tar -xzf latest.tar.gz --strip-components=1
sudo rm latest.tar.gz

cd /var/www/site2.com
sudo wget https://wordpress.org/latest.tar.gz
sudo tar -xzf latest.tar.gz --strip-components=1
sudo rm latest.tar.gz

步骤 4:为每个网站创建独立数据库

登录 MySQL:

sudo mysql -u root

创建数据库和用户:

CREATE DATABASE wp_site1;
CREATE DATABASE wp_site2;

CREATE USER 'user_site1'@'localhost' IDENTIFIED BY 'strong_password1';
CREATE USER 'user_site2'@'localhost' IDENTIFIED BY 'strong_password2';

GRANT ALL PRIVILEGES ON wp_site1.* TO 'user_site1'@'localhost';
GRANT ALL PRIVILEGES ON wp_site2.* TO 'user_site2'@'localhost';

FLUSH PRIVILEGES;
EXIT;

步骤 5:配置 Nginx 虚拟主机

创建 site1.com 配置文件:

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;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ .php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;
    }

    location ~ /.ht {
        deny all;
    }
}

复制并修改为 site2.com:

sudo cp /etc/nginx/sites-available/site1.com /etc/nginx/sites-available/site2.com

修改 server_nameroot 路径:

server_name site2.com www.site2.com;
root /var/www/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 nginx -t

# 重启 Nginx
sudo systemctl reload nginx

步骤 6:域名解析与访问

site1.comsite2.com 的 DNS 解析指向你的服务器 IP。

然后在浏览器中访问:

  • http://site1.com → 进入 WordPress 安装向导
  • http://site2.com → 进入另一个 WordPress 安装向导

分别填写对应的数据库信息(wp_site1 + user_site1wp_site2 + user_site2)完成安装。


✅ 方案二:使用子目录部署(同一域名下)

例如:example.com/blog1, example.com/blog2

只需将 WordPress 分别解压到 /var/www/html/blog1/var/www/html/blog2,配置好 .htaccess(Apache)或 Nginx 伪静态规则即可。但注意数据库仍需分开。


✅ 方案三:使用 Docker(高级推荐)

使用 Docker 可以更清晰地隔离多个 WordPress 站点。

示例 docker-compose.yml 启动两个站点:

version: '3.8'
services:
  db1:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: rootpass
      MYSQL_DATABASE: wp_site1
      MYSQL_USER: user1
      MYSQL_PASSWORD: pass1
    volumes:
      - db1_data:/var/lib/mysql

  wordpress1:
    image: wordpress:latest
    depends_on:
      - db1
    ports:
      - "8080:80"
    environment:
      WORDPRESS_DB_HOST: db1:3306
      WORDPRESS_DB_USER: user1
      WORDPRESS_DB_PASSWORD: pass1
      WORDPRESS_DB_NAME: wp_site1
    volumes:
      - wp1_data:/var/www/html

  db2:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: rootpass
      MYSQL_DATABASE: wp_site2
      MYSQL_USER: user2
      MYSQL_PASSWORD: pass2
    volumes:
      - db2_data:/var/lib/mysql

  wordpress2:
    image: wordpress:latest
    depends_on:
      - db2
    ports:
      - "8081:80"
    environment:
      WORDPRESS_DB_HOST: db2:3306
      WORDPRESS_DB_USER: user2
      WORDPRESS_DB_PASSWORD: pass2
      WORDPRESS_DB_NAME: wp_site2
    volumes:
      - wp2_data:/var/www/html

volumes:
  db1_data:
  db2_data:
  wp1_data:
  wp2_data:

运行:

docker-compose up -d

访问:

  • http://your-server-ip:8080 → 第一个站点
  • http://your-server-ip:8081 → 第二个站点

⚠️ 注意:生产环境不建议暴露端口,应配合 Nginx 反向X_X + 域名。


🔐 安全建议

  1. 每个网站使用独立数据库和用户
  2. 设置正确的文件权限(www-data 所有者)
  3. 定期备份数据库和网站文件
  4. 使用 HTTPS(Let’s Encrypt 免费证书)
  5. 禁用文件编辑器(在 wp-config.php 加入 define('DISALLOW_FILE_EDIT', true);

✅ 总结

方法 优点 适用场景
Nginx 虚拟主机 高性能、易管理、支持多域名 多个独立域名网站
子目录部署 简单,共享主站 博客、子栏目
Docker 容器 隔离性好、易于扩展 开发/测试/微服务架构

如有具体需求(如使用 Apache、已有宝塔面板等),可进一步定制方案。欢迎补充细节!

未经允许不得转载:云服务器 » 同一台服务器如何搭建多个WordPress网站?