在一台服务器上搭建多个 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_name 和 root 路径:
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.com 和 site2.com 的 DNS 解析指向你的服务器 IP。
然后在浏览器中访问:
- http://site1.com → 进入 WordPress 安装向导
- http://site2.com → 进入另一个 WordPress 安装向导
分别填写对应的数据库信息(wp_site1 + user_site1,wp_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 + 域名。
🔐 安全建议
- 每个网站使用独立数据库和用户
- 设置正确的文件权限(
www-data所有者) - 定期备份数据库和网站文件
- 使用 HTTPS(Let’s Encrypt 免费证书)
- 禁用文件编辑器(在
wp-config.php加入define('DISALLOW_FILE_EDIT', true);)
✅ 总结
| 方法 | 优点 | 适用场景 |
|---|---|---|
| Nginx 虚拟主机 | 高性能、易管理、支持多域名 | 多个独立域名网站 |
| 子目录部署 | 简单,共享主站 | 博客、子栏目 |
| Docker 容器 | 隔离性好、易于扩展 | 开发/测试/微服务架构 |
如有具体需求(如使用 Apache、已有宝塔面板等),可进一步定制方案。欢迎补充细节!
云服务器