在同一台云主机上部署多个 WordPress 站点是常见需求,可以通过以下几种方式实现。以下是详细配置步骤和建议:
一、部署方式选择
✅ 推荐方案:Nginx/Apache + PHP-FPM + MySQL 多数据库/多表前缀
在同一台云主机上运行多个 WordPress 实例,通常使用 虚拟主机(Virtual Host) 技术来区分不同站点。
二、基础环境准备
确保你的云主机已安装以下软件:
# 常见组合(LAMP 或 LEMP)
- Linux(如 Ubuntu/CentOS)
- Web服务器:Nginx 或 Apache
- PHP(推荐 PHP 7.4+)
- MySQL 或 MariaDB
- phpMyAdmin(可选,用于管理数据库)
例如在 Ubuntu 上安装 LEMP:
sudo apt update
sudo apt install nginx mysql-server php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-zip
三、部署多个 WordPress 站点的步骤
步骤 1:创建网站目录结构
为每个 WordPress 站点创建独立目录:
sudo mkdir -p /var/www/site1.com
sudo mkdir -p /var/www/site2.com
步骤 2:下载并解压 WordPress
分别下载 WordPress 到每个目录:
cd /tmp
wget https://wordpress.org/latest.tar.gz
tar -xzf latest.tar.gz
# 拷贝到各站点目录
sudo cp -r wordpress/* /var/www/site1.com/
sudo cp -r wordpress/* /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
sudo chmod -R 755 /var/www/*
步骤 3:为每个站点创建独立数据库
登录 MySQL:
sudo mysql -u root -p
创建数据库和用户:
-- 站点1
CREATE DATABASE wp_site1;
CREATE USER 'user1'@'localhost' IDENTIFIED BY 'strong_password1';
GRANT ALL PRIVILEGES ON wp_site1.* TO 'user1'@'localhost';
FLUSH PRIVILEGES;
-- 站点2
CREATE DATABASE wp_site2;
CREATE USER 'user2'@'localhost' IDENTIFIED BY 'strong_password2';
GRANT ALL PRIVILEGES ON wp_site2.* TO 'user2'@'localhost';
FLUSH PRIVILEGES;
EXIT;
📌 注意:也可以使用同一个数据库但不同表前缀(不推荐生产环境)
步骤 4:配置 Nginx 虚拟主机(推荐)
创建站点配置文件:
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 index.htm;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.4-fpm.sock; # 根据你的 PHP 版本调整
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /.ht {
deny all;
}
}
同理创建 /etc/nginx/sites-available/site2.com,修改 server_name 和 root 路径。
启用站点:
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 rm /etc/nginx/sites-enabled/default
# 测试配置并重启
sudo nginx -t
sudo systemctl reload nginx
步骤 5:配置 WordPress
访问 http://site1.com 和 http://site2.com,进入 WordPress 安装向导。
在安装过程中:
- 数据库名:
wp_site1/wp_site2 - 用户名:
user1/user2 - 密码:对应密码
- 表前缀:可自定义如
wp1_、wp2_(即使共用库也避免冲突)
四、可选优化与安全建议
-
使用 HTTPS(Let’s Encrypt)
sudo apt install certbot python3-certbot-nginx sudo certbot --nginx -d site1.com -d www.site1.com -
PHP 配置隔离(可选)
可以为每个站点配置独立的 PHP-FPM pool,限制资源使用。 -
防火墙设置
sudo ufw allow 'Nginx Full' -
定期备份数据库和文件
五、其他部署方式对比
| 方式 | 说明 | 优缺点 |
|---|---|---|
| 多目录 + 虚拟主机 | 如上所述 | ✅ 推荐,隔离好,性能高 |
| 子目录部署 | 如 site.com/blog1, /blog2 | 共享主站,适合内容关联强 |
| Docker 容器化 | 每个 WordPress 一个容器 | ⭐ 最佳隔离,但复杂度高 |
| 多站点网络(Multisite) | WordPress 内建功能 | 适合同一品牌多个子站 |
💡 如果你希望完全隔离、易于管理,推荐 虚拟主机方式;如果追求现代化运维,可用 Docker + Nginx Proxy Manager。
六、常见问题排查
- 403 Forbidden:检查目录权限和
index.php是否存在 - 502 Bad Gateway:检查 PHP-FPM 是否运行,sock 路径是否正确
- 数据库连接失败:确认用户名、密码、数据库名、权限
- 伪静态失效:确保 Nginx 的
try_files配置正确
总结
✅ 在同一台云主机部署多个 WordPress 的关键点:
- 每个站点独立目录
- 每个站点独立数据库或表前缀
- 使用 Nginx/Apache 虚拟主机区分域名
- 正确配置 PHP 和数据库权限
- 做好安全和备份
如有需要,我可以提供自动化脚本或 Docker 部署方案。欢迎继续提问!
云小栈