是的,可以在同一个服务器上部署两套(或多套)WordPress 站点。这在实际应用中非常常见,比如:
- 一个用于公司官网,一个用于博客
- 为不同客户或项目分别搭建网站点
- 开发环境和生产环境共存
实现方式有多种,具体取决于你的服务器架构(如 Apache、Nginx)、域名配置和目录结构。以下是几种常见的部署方法:
✅ 方法一:使用虚拟主机(Virtual Hosts)或 Server Blocks
1. 基于不同域名
例如:
site1.com→ 第一套 WordPresssite2.com→ 第二套 WordPress
Nginx 配置示例:
# site1.com 的配置
server {
listen 80;
server_name site1.com www.site1.com;
root /var/www/site1;
index index.php index.html;
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;
}
}
# site2.com 的配置
server {
listen 80;
server_name site2.com www.site2.com;
root /var/www/site2;
index index.php index.html;
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;
}
}
重启 Nginx:
sudo systemctl reload nginx
2. 基于子域名
blog.yoursite.comshop.yoursite.com
配置方式类似,只需修改 server_name。
3. 基于路径(子目录)
如果你想通过 yoursite.com/blog 和 yoursite.com/shop 访问两个 WordPress,也可以实现,但更复杂,需要处理 .htaccess 或反向X_X。
✅ 方法二:使用不同数据库和目录
每套 WordPress 应该:
- 安装在独立的目录中(如
/var/www/site1,/var/www/site2) - 使用独立的数据库(避免数据冲突)
- 配置各自的
wp-config.php
创建数据库示例:
CREATE DATABASE wordpress_site1;
CREATE DATABASE wordpress_site2;
CREATE USER 'wpuser1'@'localhost' IDENTIFIED BY 'password1';
CREATE USER 'wpuser2'@'localhost' IDENTIFIED BY 'password2';
GRANT ALL PRIVILEGES ON wordpress_site1.* TO 'wpuser1'@'localhost';
GRANT ALL PRIVILEGES ON wordpress_site2.* TO 'wpuser2'@'localhost';
FLUSH PRIVILEGES;
然后分别安装 WordPress 到各自目录,并在 wp-config.php 中指定对应的数据库。
✅ 方法三:使用 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: wp1
MYSQL_PASSWORD: wp1pass
volumes:
- db1_data:/var/lib/mysql
wordpress1:
image: wordpress:latest
depends_on:
- db1
environment:
WORDPRESS_DB_HOST: db1
WORDPRESS_DB_NAME: wp_site1
WORDPRESS_DB_USER: wp1
WORDPRESS_DB_PASSWORD: wp1pass
ports:
- "8080:80"
volumes:
- wp1_data:/var/www/html
db2:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: wp_site2
MYSQL_USER: wp2
MYSQL_PASSWORD: wp2pass
volumes:
- db2_data:/var/lib/mysql
wordpress2:
image: wordpress:latest
depends_on:
- db2
environment:
WORDPRESS_DB_HOST: db2
WORDPRESS_DB_NAME: wp_site2
WORDPRESS_DB_USER: wp2
WORDPRESS_DB_PASSWORD: wp2pass
ports:
- "8081:80"
volumes:
- wp2_data:/var/www/html
volumes:
db1_data:
db2_data:
wp1_data:
wp2_data:
访问:
http://your-server-ip:8080→ 第一个站点http://your-server-ip:8081→ 第二个站点
⚠️ 注意事项
- 资源占用:每个 WordPress 实例都会消耗内存、CPU 和数据库连接。
- 安全性:确保每个站点都及时更新,避免一个被攻破影响另一个。
- 备份独立:分开备份文件和数据库。
- 插件冲突(共享环境时):如果共用 PHP 或缓存服务,注意配置隔离。
- HTTPS:使用 Let’s Encrypt 为每个域名配置 SSL。
✅ 总结
| 方式 | 是否推荐 | 说明 |
|---|---|---|
| 多虚拟主机 + 多目录 | ✅ 推荐 | 简单高效,适合大多数情况 |
| Docker 多容器 | ✅✅ 强烈推荐 | 高度隔离,易于管理 |
| 子目录部署同一域名 | ⚠️ 谨慎 | 配置复杂,SEO 和插件可能出问题 |
如果你告诉我你当前的服务器环境(Apache/Nginx?有无域名?是否已有 WordPress?),我可以给出更具体的配置建议。
云服务器