使用LNMP或LAMP环境如何在阿里云上部署多个WordPress?

在阿里云上部署多个 WordPress 站点,核心思路是“一机多站”。即在一台云服务器(ECS)实例中,通过 Nginx/Apache 的虚拟主机配置、子目录或子域名路由,结合 MySQL 的多数据库管理,实现隔离运行多个博客。

以下是基于 LNMP(Nginx + MySQL + PHP)和 LAMP(Apache + MySQL + PHP)环境的详细实操方案。

前置准备:环境搭建与网络规划

无论选择哪种架构,第一步都是在阿里云 ECS 控制台完成基础配置:

  1. 购买与初始化:创建一台 ECS 实例,建议选择 CentOS 7/8 或 Ubuntu 20.04/22.04。安装时直接使用阿里云提供的LNMP/LAMP 镜像(如宝塔面板镜像或官方软件栈镜像),可大幅减少手动编译安装的繁琐。
  2. 安全组配置:在阿里云控制台的“安全组”规则中,放行 80 (HTTP)、443 (HTTPS) 和 22 (SSH) 端口。若需外部访问数据库(不推荐),还需放行 3306,但建议仅允许内网访问。
  3. 域名解析:将你的多个域名(如 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

关键优化与安全建议(云原生视角)

在阿里云环境下,单纯部署成功只是第一步,为了保障稳定性与安全性,必须执行以下操作:

  1. SSL 证书自动化
    不要忽略 HTTPS。推荐使用 Let’s Encrypt 的 certbot 工具,或在阿里云控制台购买免费/付费 SSL 证书并绑定到 ECS 的安全组和 Nginx/Apache 配置中。这能显著提升 SEO 权重和用户信任度。

  2. PHP-FPM 调优
    多站点共享同一个 PHP-FPM 进程池可能会争抢资源。建议在 php-fpm.conf 中根据站点数量调整 pm.max_childrenpm.start_servers,避免内存溢出(OOM)。

  3. RDS 数据库分离(进阶)
    虽然单台 ECS 自建 MySQL 可行,但随着站点增多,数据库 I/O 会成为瓶颈。
    建议:在阿里云控制台购买 RDS MySQL 实例。将上述本地数据库迁移至 RDS,并在 wp-config.php 中将连接地址改为 RDS 的内网地址。这样既解耦了应用与数据,又利用了阿里云的高可用备份功能。

  4. WAF 与防火墙
    利用阿里云的 Web 应用防火墙 (WAF)DDoS 防护 服务,保护你的 WordPress 站点免受常见的 SQL 注入和暴力破解攻击。同时,在 ECS 内部安装 fail2ban 拦截恶意 SSH 登录尝试。

  5. 定期快照与备份
    在阿里云控制台开启自动快照策略(如每日一次),或使用脚本将 WordPress 的文件和数据库打包上传至 OSS (对象存储)NAS。这是防止数据丢失的最后一道防线。

总结

在阿里云上部署多 WordPress 站点,本质上是利用 Web 服务器的虚拟主机(Virtual Host)机制。

  • LNMP 更适合追求高性能、高并发的场景,配置需关注 Nginx 的 server 块和 FastCGI 参数。
  • LAMP 适合依赖 .htaccess 动态规则的场景,配置相对直观。

无论选择哪种,务必做好数据库隔离SSL 加密以及云原生备份,这才是生产环境稳定运行的基石。

未经允许不得转载:CLOUD云枢 » 使用LNMP或LAMP环境如何在阿里云上部署多个WordPress?