要在一台服务器上运行两个容器化的 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.comsite2.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 文件或者自动部署脚本,请告诉我你希望使用的域名和端口,我可以为你定制。
云计算导航