在阿里云上部署多个 WordPress 站点,核心思路是“一机多站”。即在一台云服务器(ECS)实例中,通过 Nginx/Apache 的虚拟主机配置、子目录或子域名路由,结合 MySQL 的多数据库管理,实现隔离运行多个博客。
以下是基于 LNMP(Nginx + MySQL + PHP)和 LAMP(Apache + MySQL + PHP)环境的详细实操方案。
前置准备:环境搭建与网络规划
无论选择哪种架构,第一步都是在阿里云 ECS 控制台完成基础配置:
- 购买与初始化:创建一台 ECS 实例,建议选择 CentOS 7/8 或 Ubuntu 20.04/22.04。安装时直接使用阿里云提供的LNMP/LAMP 镜像(如宝塔面板镜像或官方软件栈镜像),可大幅减少手动编译安装的繁琐。
- 安全组配置:在阿里云控制台的“安全组”规则中,放行
80(HTTP)、443(HTTPS) 和22(SSH) 端口。若需外部访问数据库(不推荐),还需放行3306,但建议仅允许内网访问。 - 域名解析:将你的多个域名(如
site1.com,site2.com)的 A 记录均指向该 ECS 的公网 IP。
方案一:LNMP 架构部署(推荐,性能更优)
Nginx 在高并发下的表现通常优于 Apache,且配置灵活,适合多站点部署。
1. 目录结构规划
为了便于管理,建议采用以下目录结构:
/www/
├── site1/ # 站点 1 根目录
│ ├── index.php
│ └── wp-config.php
├── site2/ # 站点 2 根目录
│ ├── index.php
│ └── wp-config.php
└── uploads/ # 可选:公共上传目录(需配合权限控制)
注意:WordPress 默认安装在根目录,部署多站时需修改 wp-config.php 中的 WP_CONTENT_DIR 或直接调整 Nginx 的 root 指令。
2. 数据库配置
登录 MySQL(命令行或 phpMyAdmin):
- 为每个站点创建独立数据库和用户,遵循最小权限原则。
-
SQL 示例:
CREATE DATABASE site1_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'site1_user'@'localhost' IDENTIFIED BY 'StrongPassword1'; GRANT ALL PRIVILEGES ON site1_db.* TO 'site1_user'@'localhost'; -- 重复上述步骤创建 site2_db, site2_user FLUSH PRIVILEGES;
3. Nginx 虚拟主机配置
编辑 Nginx 配置文件(通常在 /etc/nginx/conf.d/ 下新建文件,如 wordpress_multi.conf):
# 站点 1 配置
server {
listen 80;
server_name site1.com www.site1.com;
root /www/site1;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ .php$ {
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; # 路径视系统而定
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
}
}
# 站点 2 配置
server {
listen 80;
server_name site2.com www.site2.com;
root /www/site2;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ .php$ {
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
}
}
关键点:确保 server_name 与域名解析一致,root 指向对应站点的物理目录,且 try_files 逻辑能正确重定向到 WordPress 的入口。
4. 安装与测试
- 将 WordPress 程序解压到
/www/site1和/www/site2。 - 修改各目录下的
wp-config.php,填入对应的数据库账号密码。 - 重启 Nginx 服务:
systemctl restart nginx。 - 浏览器访问域名,按提示完成 WordPress 安装向导。
方案二:LAMP 架构部署(传统稳定)
如果你更习惯 Apache 的配置方式,或者依赖 .htaccess 进行特定规则控制,可采用此方案。
1. 目录与数据库
同上,创建独立目录和独立数据库。
2. Apache 虚拟主机配置
编辑 Apache 配置文件(通常在 /etc/httpd/conf.d/ 或 /etc/apache2/sites-available/):
<VirtualHost *:80>
ServerName site1.com
ServerAlias www.site1.com
DocumentRoot /www/site1
<Directory /www/site1>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName site2.com
ServerAlias www.site2.com
DocumentRoot /www/site2
<Directory /www/site2>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
注意:AllowOverride All 是必须的,否则 WordPress 的伪静态规则(Permalinks)无法生效。
3. 启用模块与重启
确保已开启必要模块:
a2enmod rewrite ssl headers
# Debian/Ubuntu 系统
a2ensite site1.conf site2.conf
# CentOS/RHEL 系统通常直接 reload 即可
systemctl restart httpd
关键优化与安全建议(云原生视角)
在阿里云环境下,单纯部署成功只是第一步,为了保障稳定性与安全性,必须执行以下操作:
-
SSL 证书自动化:
不要忽略 HTTPS。推荐使用 Let’s Encrypt 的certbot工具,或在阿里云控制台购买免费/付费 SSL 证书并绑定到 ECS 的安全组和 Nginx/Apache 配置中。这能显著提升 SEO 权重和用户信任度。 -
PHP-FPM 调优:
多站点共享同一个 PHP-FPM 进程池可能会争抢资源。建议在php-fpm.conf中根据站点数量调整pm.max_children和pm.start_servers,避免内存溢出(OOM)。 -
RDS 数据库分离(进阶):
虽然单台 ECS 自建 MySQL 可行,但随着站点增多,数据库 I/O 会成为瓶颈。
建议:在阿里云控制台购买 RDS MySQL 实例。将上述本地数据库迁移至 RDS,并在wp-config.php中将连接地址改为 RDS 的内网地址。这样既解耦了应用与数据,又利用了阿里云的高可用备份功能。 -
WAF 与防火墙:
利用阿里云的 Web 应用防火墙 (WAF) 或 DDoS 防护 服务,保护你的 WordPress 站点免受常见的 SQL 注入和暴力破解攻击。同时,在 ECS 内部安装fail2ban拦截恶意 SSH 登录尝试。 -
定期快照与备份:
在阿里云控制台开启自动快照策略(如每日一次),或使用脚本将 WordPress 的文件和数据库打包上传至 OSS (对象存储) 或 NAS。这是防止数据丢失的最后一道防线。
总结
在阿里云上部署多 WordPress 站点,本质上是利用 Web 服务器的虚拟主机(Virtual Host)机制。
- LNMP 更适合追求高性能、高并发的场景,配置需关注 Nginx 的
server块和 FastCGI 参数。 - LAMP 适合依赖
.htaccess动态规则的场景,配置相对直观。
无论选择哪种,务必做好数据库隔离、SSL 加密以及云原生备份,这才是生产环境稳定运行的基石。
CLOUD云枢