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

在阿里云上使用 LNMP(Linux + Nginx + MySQL + PHP)或 LAMP(Linux + Apache + MySQL + PHP)环境部署多个 WordPress 站点,是常见的多站点托管方案。以下是详细的步骤和最佳实践:


一、准备工作

1. 购买并配置阿里云ECS实例

  • 登录 阿里云控制台
  • 创建一台 ECS 实例:
    • 操作系统:推荐 CentOS 7/8Ubuntu 20.04+
    • 配置:至少 2核4G(根据站点数量调整)
    • 安全组:开放端口 80(HTTP)、443(HTTPS)、22(SSH)

2. 域名准备

  • 至少准备两个域名(或子域名),例如:
    • site1.com
    • site2.com
  • 将域名的 DNS 解析指向你的 ECS 公网 IP。

二、选择 LNMP 或 LAMP 环境

对比项 LNMP LAMP
Web服务器 Nginx(高性能,轻量) Apache(功能丰富,易配置)
静态资源处理 更快 稍慢
多站点支持 通过 server{} 块配置 通过 VirtualHost 配置
推荐场景 高并发、静态内容多 功能复杂、.htaccess 需求多

📌 建议:如果追求性能和简洁,推荐 LNMP;若需要 .htaccess 支持(如某些插件),可选 LAMP。


三、部署多个 WordPress(以 LNMP 为例)

步骤 1:安装 LNMP 环境

方法一:使用一键安装包(推荐新手)

# 下载 lnmp 一键安装包(由军哥提供)
wget http://soft.vpser.net/lnmp/lnmp1.9.tar.gz -cO lnmp1.9.tar.gz
tar zxvf lnmp1.9.tar.gz
cd lnmp1.9
./install.sh lnmp

安装过程中会自动安装 Nginx、MySQL、PHP。

方法二:手动安装(适合定制化)

# 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 /home/wwwroot/site1.com
sudo mkdir -p /home/wwwroot/site2.com

# 设置权限
sudo chown -R www-data:www-data /home/wwwroot/

步骤 3:下载 WordPress

cd /home/wwwroot/site1.com
wget https://cn.wordpress.org/latest-zh_CN.tar.gz
tar -zxvf latest-zh_CN.tar.gz --strip-components=1

cd /home/wwwroot/site2.com
cp -r ../site1.com/* .

⚠️ 注意:每个站点应使用独立数据库。


步骤 4:创建独立数据库

mysql -u root -p
CREATE DATABASE wp_site1 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE wp_site2 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

CREATE USER 'wpuser1'@'localhost' IDENTIFIED BY 'StrongPassword1!';
CREATE USER 'wpuser2'@'localhost' IDENTIFIED BY 'StrongPassword2!';

GRANT ALL PRIVILEGES ON wp_site1.* TO 'wpuser1'@'localhost';
GRANT ALL PRIVILEGES ON wp_site2.* TO 'wpuser2'@'localhost';

FLUSH PRIVILEGES;
EXIT;

步骤 5:配置 Nginx 虚拟主机(Server Blocks)

创建 site1 配置

sudo vim /etc/nginx/conf.d/site1.com.conf
server {
    listen 80;
    server_name site1.com www.site1.com;
    root /home/wwwroot/site1.com;
    index index.php index.html;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ .php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

创建 site2 配置

sudo vim /etc/nginx/conf.d/site2.com.conf
server {
    listen 80;
    server_name site2.com www.site2.com;
    root /home/wwwroot/site2.com;
    index index.php index.html;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ .php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

测试并重启 Nginx

sudo nginx -t
sudo systemctl reload nginx

步骤 6:访问并安装 WordPress

  1. 浏览器访问 http://site1.comhttp://site2.com
  2. 按向导完成安装:
    • 数据库名:wp_site1 / wp_site2
    • 用户名:wpuser1 / wpuser2
    • 密码:对应设置的密码
    • 表前缀建议不同(如 wp1_, wp2_

四、LAMP 环境部署简要说明(Apache)

1. 安装 LAMP

sudo apt install apache2 mysql-server php libapache2-mod-php php-mysql

2. 创建站点目录(同上)

3. 配置虚拟主机

sudo vim /etc/apache2/sites-available/site1.com.conf
<VirtualHost *:80>
    ServerName site1.com
    ServerAlias www.site1.com
    DocumentRoot /home/wwwroot/site1.com
    <Directory /home/wwwroot/site1.com>
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

启用站点:

sudo a2ensite site1.com.conf
sudo a2enmod rewrite
sudo systemctl restart apache2

.htaccess 支持更完整,适合依赖 URL 重写的插件。


五、安全与优化建议

1. 配置 SSL(Let’s Encrypt)

使用 Certbot 为每个站点添加 HTTPS:

sudo certbot --nginx -d site1.com -d www.site1.com

2. 防火墙设置

sudo ufw allow 'Nginx Full'
sudo ufw enable

3. 定期备份

  • 数据库:使用 mysqldump
  • 文件:使用 rsync 或阿里云 OSS 备份

4. 使用缓存插件

  • WP Super Cache / W3 Total Cache
  • Redis 缓存(可选)

六、管理多个 WordPress 的技巧

技巧 说明
统一更新 使用 WP CLI 批量更新 wp core update --path=/path/to/site
监控日志 查看各站点的 error.logaccess.log
权限隔离 不同站点使用不同数据库用户
子目录部署 可用 /blog1, /blog2 共享一个 WordPress(多站点网络)

总结

方案 适用场景
LNMP + 多虚拟主机 高性能、高并发、静态资源多
LAMP + VirtualHost 插件依赖 .htaccess、传统迁移
Docker 化部署 更高级,适合自动化运维(可选)

💡 提示:对于大量站点,建议使用 宝塔面板cPanel 简化管理,但生产环境仍推荐命令行 + 自动化脚本。


如有具体需求(如子域名、负载均衡、CDN 提速),可进一步扩展架构。欢迎继续提问!