在阿里云 ECS(Ubuntu 系统)上安装 LNMP(Linux + Nginx + MySQL + PHP)后配置 WordPress 网站,需按以下清晰、安全、生产就绪的步骤操作。本文假设你已成功部署 LNMP(推荐使用 lnmp.org 一键脚本 或手动安装),并以 Ubuntu 22.04/24.04 + LNMP 2.1+(含 Nginx/MySQL 8.0+/PHP 8.1+) 为基准。
✅ 提示:若尚未安装 LNMP,建议优先使用官方推荐方式(避免兼容问题):
# 官方一键安装(推荐,自动优化) wget https://lnmp.org/soft/lnmp-full.tar.gz tar -xzf lnmp-full.tar.gz && cd lnmp && ./install.sh lnmp
✅ 一、准备工作(检查与确认)
# 1. 检查服务状态(确保运行中)
sudo lnmp status
# 应显示:nginx (running), mysql (running), php-fpm (running)
# 2. 查看默认网站根目录(LNMP 默认路径)
ls /home/wwwroot/default/ # 默认站点目录(可自定义)
# 3. 确认 PHP 支持关键扩展(WordPress 必需)
php -m | grep -E "mysqlnd|curl|gd|mbstring|xml|zip|opcache"
# 若缺失,用 lnmp 脚本安装:lnmp php-extension install fileinfo
✅ 二、创建独立网站(推荐,非共用 default)
1️⃣ 添加虚拟主机(含 SSL 建议)
lnmp vhost add
按提示输入:
- 域名(如
www.example.com,请先解析到 ECS 公网 IP) - 是否添加 www 子域名 →
y - 是否启用日志 →
y - 是否启用 SSL →
y(强烈推荐!选择 Let’s Encrypt 自动签发) - 是否强制 HTTPS →
y - 其他保持默认(回车)
✅ 自动生成配置:/usr/local/nginx/conf/vhost/www.example.com.conf
✅ 网站根目录:/home/wwwroot/www.example.com/
🔐 注意:SSL 需确保域名已正确解析(A 记录指向 ECS 公网 IP),且安全组开放 443 端口(HTTPS)和 80 端口(Let’s Encrypt 验证)。
2️⃣ 创建数据库(MySQL 8.0+ 注意密码策略)
# 登录 MySQL(密码为安装时设置的 root 密码)
mysql -u root -p
# 执行(替换 `wp_example` 和 `your_secure_password`):
CREATE DATABASE wp_example CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wp_user'@'localhost' IDENTIFIED BY 'your_secure_password';
GRANT ALL PRIVILEGES ON wp_example.* TO 'wp_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
⚠️ MySQL 8.0+ 默认认证插件为
caching_sha2_password,WordPress 旧版可能不兼容。若连接失败,在创建用户时指定插件:CREATE USER 'wp_user'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_secure_password';
✅ 三、部署 WordPress
方法 1:命令行下载(推荐,安全可控)
cd /home/wwwroot/www.example.com/
sudo rm -rf ./*
sudo wget https://cn.wordpress.org/latest-zh_CN.tar.gz
sudo tar -xzf latest-zh_CN.tar.gz --strip-components=1
sudo chown -R www:www ./
sudo chmod -R 755 ./
方法 2:SFTP 上传(适合本地已解压)
- 将 WordPress 解压后的全部文件上传至
/home/wwwroot/www.example.com/ - 设置权限:
sudo chown -R www:www /home/wwwroot/www.example.com/ sudo find /home/wwwroot/www.example.com/ -type d -exec chmod 755 {} ; sudo find /home/wwwroot/www.example.com/ -type f -exec chmod 644 {} ; sudo chmod 600 /home/wwwroot/www.example.com/wp-config.php # 后续生成后设置
✅ 四、配置 WordPress(关键!)
1️⃣ 复制并编辑配置文件
cd /home/wwwroot/www.example.com/
sudo cp wp-config-sample.php wp-config.php
sudo nano wp-config.php
修改以下部分(替换为你创建的数据库信息):
// 数据库设置
define('DB_NAME', 'wp_example');
define('DB_USER', 'wp_user');
define('DB_PASSWORD', 'your_secure_password');
define('DB_HOST', 'localhost');
// 【重要】添加安全密钥(从 https://api.wordpress.org/secret-key/1.1/salt/ 获取)
// 替换掉文件中 /* That's all, stop editing! ... */ 上方的所有 define('AUTH_KEY', ...);
// 【强烈推荐】启用固定链接(Nginx 需额外配置,见下一步)
define('REWRITE_RULES', true);
// 【可选】禁用主题/插件编辑(提升安全)
define('DISALLOW_FILE_EDIT', true);
✅ 安全密钥生成器:https://api.wordpress.org/secret-key/1.1/salt/(复制整段替换)
2️⃣ 配置 Nginx 支持 WordPress 伪静态(固定链接)
LNMP 默认已包含 rewrite/wordpress.conf,只需在你的虚拟主机配置中启用:
编辑 /usr/local/nginx/conf/vhost/www.example.com.conf:
# 在 server {} 块内 location / { } 中,添加或确认存在:
include rewrite/wordpress.conf;
✅ 然后重载 Nginx:
sudo lnmp nginx reload
💡 验证伪静态:后台 → 设置 → 固定链接 → 选“文章名” → 保存,访问文章页应正常(无 404)。
✅ 五、完成安装 & 安全加固
1️⃣ 访问安装向导
在浏览器打开:https://www.example.com
按提示填写:
- 站点标题、管理员用户名(勿用 admin)、强密码、邮箱
- 点击“安装 WordPress”
✅ 安装成功后,用刚设的账号登录后台:https://www.example.com/wp-admin
2️⃣ 关键安全加固(必须!)
| 措施 | 命令/操作 |
|---|---|
| 禁用 XML-RPC(防暴力攻击) | 插件:Disable XML-RPC 或在 wp-config.php 加:define('DISABLE_XML_RPC', true); |
| 限制登录尝试 | 安装插件:Login LockDown 或 Wordfence Security |
| 更新核心/主题/插件 | 后台 → 更新 → 全部更新(首次务必更新) |
| 隐藏 WordPress 版本 | 主题 functions.php 加:remove_action('wp_head', 'wp_generator'); |
| 设置备份 | 使用插件 UpdraftPlus 或配置阿里云快照 |
3️⃣ 阿里云 ECS 额外检查
- ✅ 安全组规则:仅开放
80(HTTP)、443(HTTPS)、22(SSH),禁止开放 3306(MySQL)公网端口!(数据库仅限 localhost 访问) - ✅ 防火墙(UFW)(可选):
sudo ufw allow OpenSSH sudo ufw allow 'Nginx Full' sudo ufw enable
✅ 六、常见问题排查
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| 502 Bad Gateway | PHP-FPM 未运行或 socket 错误 | sudo lnmp php-fpm restart;检查 /usr/local/php/etc/php-fpm.conf 的 listen = /tmp/php-cgi.sock 与 Nginx 配置是否一致 |
| 数据库连接错误 | 用户权限/密码错误,或 MySQL 8.0 认证插件不兼容 | 按上方 SQL 指定 mysql_native_password 创建用户 |
| 上传文件失败(413 Request Entity Too Large) | Nginx 限制上传大小 | 编辑 /usr/local/nginx/conf/nginx.conf,在 http{} 内加:client_max_body_size 64M; → lnmp nginx reload |
| 中文乱码/emoji 显示异常 | 数据库字符集非 utf8mb4 |
创建 DB 时务必用 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci |
✅ 附:一键脚本(可选,快速验证)
将以下内容保存为 setup-wp.sh,赋予执行权限后运行(需提前 lnmp vhost add 并记下域名):
#!/bin/bash
DOMAIN="www.example.com" # 修改为你自己的域名
DB_NAME="wp_${DOMAIN//./_}"
DB_USER="wpuser_$(date +%s)"
DB_PASS=$(openssl rand -base64 12)
# 创建数据库
mysql -u root -p"$MYSQL_ROOT_PASS" -e "
CREATE DATABASE $DB_NAME CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER '$DB_USER'@'localhost' IDENTIFIED WITH mysql_native_password BY '$DB_PASS';
GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost';
FLUSH PRIVILEGES;
"
# 部署 WP
cd /home/wwwroot/$DOMAIN/
wget -qO- https://cn.wordpress.org/latest-zh_CN.tar.gz | tar -xzf - --strip-components=1
chown -R www:www ./
cp wp-config-sample.php wp-config.php
sed -i "s/database_name_here/$DB_NAME/; s/username_here/$DB_USER/; s/password_here/$DB_PASS/" wp-config.php
echo "✅ WordPress 已部署!数据库:$DB_NAME,用户:$DB_USER"
✅ 完成!
你现在拥有一个安全、高性能、支持 HTTPS 的 WordPress 网站。后续建议:
- 定期更新 WordPress 核心、主题、插件
- 开启对象缓存(Redis/Memcached)提升性能
- 配置 CDN(如阿里云 CDN)提速静态资源
- 使用
wp-cli管理(lnmp php-install时可选安装)
如需我帮你:
- 生成完整的
nginx.conf示例 - 配置 Redis 缓存
- 迁移现有 WordPress 到该环境
- 诊断具体报错日志(提供
nginx error.log或php-fpm.log片段)
欢迎随时补充细节,我会为你定制解决 👇
云小栈