一个服务器运行两个容器化wordpress网站,?

要在一台服务器上运行两个容器化的 WordPress 网站,你可以使用 Docker 来实现。下面是一个详细的步骤说明,帮助你在同一台服务器上部署并运行两个独立的 WordPress 站点。


🧱 架构概览

  • 每个 WordPress 站点:
    • 使用独立的 Docker 容器
    • 对应一个独立的 MySQL/MariaDB 数据库容器
    • 映射不同的端口或使用 Nginx 反向X_X区分域名访问

✅ 方法一:使用不同端口访问(简单入门)

1. 创建目录结构(可选)

mkdir -p ~/wordpress-site1 ~/wordpress-site2

每个站点可以有自己的 docker-compose.yml 文件。


2. 编写第一个 WordPress 站点的 docker-compose.yml

文件路径:~/wordpress-site1/docker-compose.yml

version: '3.8'

services:
  db1:
    image: mysql:8.0
    container_name: site1-db
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: rootpass123
      MYSQL_DATABASE: wordpress1
      MYSQL_USER: wordpress1
      MYSQL_PASSWORD: wp1pass123
    volumes:
      - site1_db_data:/var/lib/mysql
    networks:
      - site1-network

  wordpress1:
    image: wordpress:latest
    container_name: site1-wordpress
    restart: always
    ports:
      - "8001:80"
    environment:
      WORDPRESS_DB_HOST: db1:3306
      WORDPRESS_DB_USER: wordpress1
      WORDPRESS_DB_PASSWORD: wp1pass123
      WORDPRESS_DB_NAME: wordpress1
    volumes:
      - site1_wordpress_data:/var/www/html
    networks:
      - site1-network

volumes:
  site1_db_data:
  site1_wordpress_data:

networks:
  site1-network:

3. 第二个站点配置类似

文件路径:~/wordpress-site2/docker-compose.yml

version: '3.8'

services:
  db2:
    image: mysql:8.0
    container_name: site2-db
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: rootpass123
      MYSQL_DATABASE: wordpress2
      MYSQL_USER: wordpress2
      MYSQL_PASSWORD: wp2pass123
    volumes:
      - site2_db_data:/var/lib/mysql
    networks:
      - site2-network

  wordpress2:
    image: wordpress:latest
    container_name: site2-wordpress
    restart: always
    ports:
      - "8002:80"
    environment:
      WORDPRESS_DB_HOST: db2:3306
      WORDPRESS_DB_USER: wordpress2
      WORDPRESS_DB_PASSWORD: wp2pass123
      WORDPRESS_DB_NAME: wordpress2
    volumes:
      - site2_wordpress_data:/var/www/html
    networks:
      - site2-network

volumes:
  site2_db_data:
  site2_wordpress_data:

networks:
  site2-network:

4. 启动服务

进入各自目录启动:

cd ~/wordpress-site1 && docker-compose up -d
cd ~/wordpress-site2 && docker-compose up -d

5. 访问网站

  • Site1: http://your-server-ip:8001
  • Site2: http://your-server-ip:8002

✅ 方法二:使用域名 + Nginx 反向X_X(推荐用于生产)

目标:

  • 使用两个域名访问,如:
    • site1.example.com
    • site2.example.com

步骤:

1. 修改 WordPress 的端口映射为内部端口(不暴露到公网)

修改上面的 ports: 配置为:

ports:
  - "127.0.0.1:8081:80"

这样 WordPress 就只监听本地,不会直接通过 IP 访问。

2. 安装 Nginx 并配置反向X_X

安装 Nginx:

sudo apt update && sudo apt install nginx

创建两个站点配置文件:

/etc/nginx/sites-available/site1.conf

server {
    listen 80;
    server_name site1.example.com;

    location / {
        proxy_pass http://127.0.0.1:8081;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

/etc/nginx/sites-available/site2.conf

server {
    listen 80;
    server_name site2.example.com;

    location / {
        proxy_pass http://127.0.0.1:8082;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

启用配置:

sudo ln -s /etc/nginx/sites-available/site1.conf /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/site2.conf /etc/nginx/sites-enabled/

测试并重启 Nginx:

sudo nginx -t
sudo systemctl reload nginx

3. 域名解析

将你的两个域名 A 记录指向这台服务器的公网 IP。


✅ 补充建议

  • 使用 HTTPS?可以用 Let’s Encrypt 自动签发 SSL。
  • 使用 Docker Compose Networks 实现容器间通信。
  • 如果资源允许,也可以用 LXC、Kubernetes 或者虚拟机来隔离环境。

📌 总结

方式 特点 推荐场景
不同端口 简单易用,适合开发测试 测试环境
Nginx 反向X_X + 域名 更专业、适合正式上线 生产环境

如果你需要我帮你生成完整的 docker-compose.yml 文件或者自动部署脚本,请告诉我你希望使用的域名和端口,我可以为你定制。

未经允许不得转载:云计算导航 » 一个服务器运行两个容器化wordpress网站,?