使用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_children 和 pm.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?