在阿里云 ECS(Ubuntu)上部署 LEMP(Linux + Nginx + MySQL + PHP)并运行 WordPress 是常见场景,但需兼顾安全性、性能、稳定性及阿里云特有配置。以下是关键注意事项和分步建议(以 Ubuntu 22.04/24.04 为例):
✅ 一、前期准备与安全基线
| 项目 | 注意事项 |
|---|---|
| ECS 实例选择 | • 推荐 ≥ 2核4GB(WordPress 中小流量) • 系统盘 ≥ 80GB(预留日志、备份、插件空间) • 务必关闭「密码登录」,启用 SSH 密钥对(控制台 → 实例详情 → 远程连接 → 绑定密钥) |
| 安全组配置 | • 仅开放必要端口: ✓ 80(HTTP)、443(HTTPS)→ 对公网✓ 22(SSH)→ 限制来源 IP(如公司宽带/IP 或跳板机),禁用 0.0.0.0/0✗ 禁止开放 3306(MySQL)到公网!内网访问或通过 SSH 隧道管理 |
| 系统更新 | bash<br>sudo apt update && sudo apt upgrade -y<br>sudo apt autoremove -y<br> |
✅ 二、安装与核心配置要点
1️⃣ Nginx 配置(安全 & 兼容性)
- 安装:
sudo apt install nginx -y -
关键配置
/etc/nginx/sites-available/wordpress:server { listen 80; server_name your-domain.com; # 替换为你的域名(需已解析到ECS公网IP) root /var/www/wordpress; index index.php; # 🔒 安全加固(必加!) location ~ /.ht { deny all; } location ~ ^/wp-content/uploads/.*.php$ { deny all; } # 防止上传目录执行PHP location ~ .(php|phar)$ { fastcgi_pass unix:/run/php/php8.1-fpm.sock; # 注意PHP版本匹配 fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } # 🌐 WordPress 固定链接支持(伪静态) location / { try_files $uri $uri/ /index.php?$args; } # 📁 静态资源缓存(提升性能) location ~* .(js|css|png|jpg|jpeg|gif|ico|svg)$ { expires 1y; add_header Cache-Control "public, immutable"; } } - 启用站点:
sudo ln -sf /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
2️⃣ MySQL(推荐 MariaDB,更轻量且兼容)
- 安装:
sudo apt install mariadb-server mariadb-client -y - 安全初始化(必做!):
sudo mysql_secure_installation
→ 设 root 密码、删除匿名用户、禁止远程 root、删除 test DB、重载权限 - 创建 WordPress 专用数据库与用户(非 root!):
CREATE DATABASE wp_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'wp_user'@'localhost' IDENTIFIED BY 'StrongPass123!'; GRANT ALL PRIVILEGES ON wp_db.* TO 'wp_user'@'localhost'; FLUSH PRIVILEGES; - 重要参数优化(
/etc/mysql/mariadb.conf.d/50-server.cnf):[mysqld] character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci innodb_file_format = Barracuda innodb_large_prefix = 1 # 避免内存溢出(按ECS内存调整) innodb_buffer_pool_size = 1G # ≈ 总内存的 50%~70%
3️⃣ PHP(推荐 PHP 8.1+,兼容 WP 6.x)
- 安装扩展(WordPress 必需):
sudo apt install php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip -y - PHP 配置优化(
/etc/php/8.1/fpm/php.ini):upload_max_filesize = 64M post_max_size = 64M memory_limit = 256M max_execution_time = 300 date.timezone = Asia/Shanghai # 阿里云服务器时区 - 重启服务:
sudo systemctl restart php8.1-fpm
✅ 三、WordPress 部署关键操作
| 步骤 | 注意事项 |
|---|---|
| ① 下载与解压 | cd /var/www && sudo wget https://cn.wordpress.org/latest-zh_CN.tar.gz && sudo tar -xzf latest-zh_CN.tar.gz && sudo chown -R www-data:www-data wordpress |
| ② 配置文件 | cd /var/www/wordpress && sudo cp wp-config-sample.php wp-config.php编辑 wp-config.php:填入数据库名、用户、密码、添加安全密钥(https://api.wordpress.org/secret-key/1.1/salt/) |
| ③ 文件权限(安全!) | bash<br>sudo find /var/www/wordpress/ -type d -exec chmod 755 {} ;<br>sudo find /var/www/wordpress/ -type f -exec chmod 644 {} ;<br>sudo chmod 600 /var/www/wordpress/wp-config.php<br> |
| ④ 阿里云备案提醒 | ⚠️ 若使用国内域名(.cn等)且指向中国大陆服务器,必须完成 ICP 备案(否则无法访问)!阿里云控制台 → 备案中心申请。 |
✅ 四、HTTPS(强烈推荐,阿里云免费证书)
- 申请 SSL 证书:阿里云 SSL 证书服务 → 免费版(DV)→ 域名验证(DNS 解析或文件验证)
- 下载证书(Nginx 版本)→ 上传到 ECS(如
/etc/nginx/ssl/your-domain.com/) - 修改 Nginx 配置(监听 443,添加 SSL 相关指令):
listen 443 ssl http2; ssl_certificate /etc/nginx/ssl/your-domain.com.pem; ssl_certificate_key /etc/nginx/ssl/your-domain.com.key; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256; - 强制 HTTPS(301 重定向):在 80 端口 server 块中添加:
return 301 https://$host$request_uri;
✅ 五、生产环境增强建议
| 类别 | 推荐方案 |
|---|---|
| 防火墙 | 启用 ufw:sudo ufw allow OpenSSH && sudo ufw allow 'Nginx Full' && sudo ufw enable |
| 自动更新 | sudo apt install unattended-upgrades && sudo dpkg-reconfigure -plow unattended-upgrades(仅安全更新) |
| 备份策略 | • 数据库:mysqldump -u wp_user -p wp_db > /backup/wp_$(date +%F).sql(配合 cron 每日)• 文件: rsync -avz /var/www/wordpress/ /backup/wordpress/ |
| 监控告警 | 阿里云 云监控:设置 CPU > 80%、磁盘 > 90%、Nginx 进程异常等告警 |
| WordPress 安全插件 | 安装后启用:Wordfence Security(防暴力破解)、iThemes Security(加固) |
❌ 常见错误避坑
- Nginx 502 Bad Gateway → 检查
php-fpm是否运行:sudo systemctl status php8.1-fpm,确认 sock 路径一致 - WordPress 提示“建立数据库连接时出错” → 检查
wp-config.php数据库用户名/密码是否正确;确认 MySQL 用户允许localhost连接(非%) - 图片上传失败/403 Forbidden → 检查
/var/www/wordpress/wp-content目录权限(应为www-data所属),检查 Nginx 是否拦截了.php在 uploads 目录 - 中文乱码/emoji 显示为 ? → 确保 MySQL 全局、数据库、表、字段均为
utf8mb4(非utf8)
✅ 最后一步:验证与上线
- 浏览器访问
http://你的域名→ 完成 WordPress 安装向导 - 登录后台 → 设置 → 固定链接 → 选择「文章名」→ 保存(触发 Nginx 伪静态生效)
- 立即修改管理员密码、删除默认主题/插件、禁用主题编辑器(
wp-config.php加define('DISALLOW_FILE_EDIT', true);)
💡 终极提示:首次部署后,建议使用阿里云快照功能制作完整系统快照,便于故障快速回滚。
如需具体某一步的命令详解(如配置 Let’s Encrypt、设置自动备份脚本、或解决特定报错),欢迎继续提问! 🌟
ECLOUD博客