在一个服务器上部署多个wordpress网站?

是的,你可以在同一台服务器上部署多个 WordPress 网站。这在实际生产环境中非常常见,比如使用一台 VPS 或云服务器托管多个客户网站或不同项目。

以下是实现这一目标的几种主流方式和步骤建议:


✅ 方法一:使用虚拟主机(Virtual Hosts) + Apache

1. 准备工作

  • 一台 Linux 服务器(如 Ubuntu/CentOS)
  • 安装 LAMP(Linux + Apache + MySQL/MariaDB + PHP)
# 示例:Ubuntu 上安装 LAMP
sudo apt update
sudo apt install apache2 mysql-server php libapache2-mod-php 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

下载 WordPress 到各自目录:

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

同理处理 site2.com。

3. 创建独立数据库

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;

4. 配置 Apache 虚拟主机

创建配置文件:

sudo nano /etc/apache2/sites-available/site1.com.conf

内容如下:

<VirtualHost *:80>
    ServerName site1.com
    ServerAlias www.site1.com
    DocumentRoot /var/www/site1.com
    <Directory /var/www/site1.com>
        AllowOverride All
        Require all granted
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/site1_error.log
    CustomLog ${APACHE_LOG_DIR}/site1_access.log combined
</VirtualHost>

同样创建 site2.com.conf

启用站点:

sudo a2ensite site1.com.conf
sudo a2ensite site2.com.conf
sudo a2enmod rewrite
sudo systemctl reload apache2

5. 配置 WordPress

访问 http://site1.comhttp://site2.com,分别完成 WordPress 安装,使用对应的数据库信息。


✅ 方法二:使用 Nginx + PHP-FPM(更高效)

1. 安装 LNMP 栈

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

2. 创建网站目录(同上)

3. 配置 Nginx server block

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;
    }
}

保存为 /etc/nginx/sites-available/site1.com,然后软链接并启用:

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

注意:每个网站使用独立的 server 块。


✅ 方法三:使用 Docker(推荐用于开发或复杂环境)

你可以用 Docker Compose 分别运行多个 WordPress 实例,每个实例有独立的数据库和端口或域名。

示例 docker-compose.yml(一个实例):

version: '3.8'
services:
  db-site1:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: rootpass
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wpuser
      MYSQL_PASSWORD: wppass
    volumes:
      - db-data-site1:/var/lib/mysql
    networks:
      - wp-network

  wordpress-site1:
    image: wordpress:latest
    depends_on:
      - db-site1
    ports:
      - "8081:80"
    environment:
      WORDPRESS_DB_HOST: db-site1:3306
      WORDPRESS_DB_USER: wpuser
      WORDPRESS_DB_PASSWORD: wppass
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - wp-data-site1:/var/www/html
    networks:
      - wp-network

volumes:
  db-data-site1:
  wp-data-site1:

networks:
  wp-network:

再复制一份改为 8082 端口即可运行第二个网站。

可配合 Nginx 反向X_X + 域名实现多站点共存。


🔐 安全与维护建议

  1. 每个网站使用独立数据库和用户,避免权限泄露。
  2. 定期备份数据库和文件。
  3. 启用 HTTPS(使用 Let’s Encrypt + Certbot)。
  4. 限制上传目录执行权限(如 /wp-content/uploads 禁止执行 PHP)。
  5. 使用不同 wp-config.php 文件,避免密钥混淆。
  6. 考虑使用缓存插件或 OPcache 提升性能

🌐 域名绑定

确保每个域名(如 site1.com、site2.com)的 DNS A 记录指向你的服务器公网 IP。


总结

方法 优点 适合场景
Apache 虚拟主机 简单易懂 初学者、少量网站
Nginx + PHP-FPM 高性能、低资源 生产环境、高流量
Docker 隔离性好、易于管理 多环境、开发测试

如果你告诉我你使用的操作系统、是否已有服务器、是否需要域名支持等,我可以给出更具体的部署脚本或配置模板。