在阿里云 ECS(Ubuntu)上部署 LNMP(Nginx + MySQL + PHP)并运行 WordPress 是常见场景,但需兼顾安全性、性能、兼容性与阿里云环境特性。以下是关键注意事项和推荐配置步骤(以 Ubuntu 22.04/24.04 为例):
✅ 一、前置准备(阿里云特有注意事项)
| 项目 | 注意事项 |
|---|---|
| ECS 实例规格 | 建议 ≥2核4GB(WordPress+MySQL较吃内存),系统盘 ≥80GB(预留日志/备份空间) |
| 安全组配置 | ✅ 开放端口:80(HTTP)、443(HTTPS)、22(SSH)❌ 禁止开放 3306(MySQL)公网端口!仅允许内网(127.0.0.1)或通过 VPC 内网访问(如需远程管理,用跳板机或阿里云 DMS) |
| 实例地域与网络 | 确保 ECS 与 RDS(如使用)在同一 VPC 和可用区,降低延迟;若自建 MySQL,务必绑定私有 IP(禁用 bind-address = 0.0.0.0) |
| 系统更新 | bash sudo apt update && sudo apt upgrade -y && sudo reboot |
✅ 二、LNMP 安装与核心配置要点
1️⃣ Nginx 配置(关键安全项)
sudo apt install nginx -y
sudo systemctl enable nginx
- 禁用版本号泄露(
/etc/nginx/nginx.conf):server_tokens off; # 防止暴露 Nginx 版本 -
WordPress 专用 Server Block(
/etc/nginx/sites-available/wordpress):server { listen 80; server_name your-domain.com; # 替换为你的域名(或公网IP) root /var/www/wordpress; index index.php; # 防止敏感文件被直接访问 location ~ /.(htaccess|htpasswd|ini|log|sh|sql|bak|swp|git) { deny all; } # PHP 处理(必须!否则 WordPress 404) location ~ .php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php8.1-fpm.sock; # 根据实际 PHP 版本调整 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 安装与加固(⚠️ 重点!)
sudo apt install mysql-server -y
sudo mysql_secure_installation # 严格按向导执行:设 root 密码、禁用匿名用户、禁用远程 root、删除 test DB
-
关键加固操作:
-- 登录 MySQL sudo mysql -- 创建独立 WordPress 数据库和用户(勿用 root!) CREATE DATABASE wordpress_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'wp_user'@'localhost' IDENTIFIED BY 'StrongPass123!'; GRANT ALL ON wordpress_db.* TO 'wp_user'@'localhost'; FLUSH PRIVILEGES; -- 禁用符号链接(防文件读取漏洞) SET GLOBAL secure_file_priv = '/var/lib/mysql-files/'; - 配置文件加固(
/etc/mysql/mysql.conf.d/mysqld.cnf):[mysqld] bind-address = 127.0.0.1 # ✅ 强制仅本地访问 max_connections = 100 # 防暴力连接 wait_timeout = 300 interactive_timeout = 300 sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
3️⃣ PHP 安装与优化(WordPress 推荐版本)
# Ubuntu 22.04 推荐 PHP 8.1,24.04 推荐 8.3
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-FPM 配置(
/etc/php/8.1/fpm/pool.d/www.conf):; 调整进程模型(中小流量用 static,大流量用 ondemand) pm = dynamic pm.max_children = 50 pm.start_servers = 5 pm.min_spare_servers = 5 pm.max_spare_servers = 10 pm.max_requests = 500 # 防止内存泄漏 ; 安全限制(WordPress 必须开启) php_admin_value[disable_functions] = exec,passthru,shell_exec,system,proc_open,popen,parse_ini_file,show_source php_admin_flag[allow_url_fopen] = off php_flag[display_errors] = off php_admin_value[error_log] = /var/log/php-fpm-wordpress.log - 重启服务:
sudo systemctl restart php8.1-fpm
✅ 三、WordPress 部署与安全配置
1️⃣ 下载与权限设置(⚠️ 权限错误是常见 500 错误根源)
sudo mkdir -p /var/www/wordpress
sudo chown -R $USER:$USER /var/www/wordpress
cd /var/www/wordpress
wget https://wordpress.org/latest.tar.gz
tar -xzf latest.tar.gz --strip-components=1
sudo chown -R www-data:www-data /var/www/wordpress
sudo find /var/www/wordpress -type d -exec chmod 755 {} ;
sudo find /var/www/wordpress -type f -exec chmod 644 {} ;
sudo chmod 600 /var/www/wordpress/wp-config.php # 配置文件仅所有者可读写
2️⃣ wp-config.php 关键配置
// 在 wp-config.php 中添加(位于数据库配置下方)
define('DB_COLLATE', 'utf8mb4_unicode_ci');
define('WP_MEMORY_LIMIT', '256M'); // 防止内存不足
define('WP_DEBUG', false); // 生产环境必须关闭
define('DISALLOW_FILE_EDIT', true); // 禁用后台编辑主题/插件(防 XSS)
define('AUTOMATIC_UPDATER_DISABLED', false); // 可开启自动更新(推荐)
// 阿里云 OSS 或 CDN 支持(如需)
// define('WP_CONTENT_URL', 'https://your-bucket.oss-cn-hangzhou.aliyuncs.com');
// 安全密钥(从 https://api.wordpress.org/secret-key/1.1/salt/ 获取)
3️⃣ HTTPS 强制(生产环境必备)
- 使用 阿里云免费 SSL 证书(控制台申请 → 下载 Nginx 版 → 上传到
/etc/nginx/ssl/) -
修改 Nginx 配置,监听
443并重定向80→443:server { listen 80; server_name your-domain.com; return 301 https://$server_name$request_uri; } server { listen 443 ssl http2; ssl_certificate /etc/nginx/ssl/your-domain.pem; ssl_certificate_key /etc/nginx/ssl/your-domain.key; # ... 其他配置同上 }
✅ 四、阿里云专属优化与监控
| 场景 | 推荐方案 |
|---|---|
| 数据库压力大 | ✅ 迁移至 阿里云 RDS MySQL(高可用、自动备份、只读实例分担查询) ✅ 开启 RDS 的「SQL 慢日志」和「性能洞察」 |
| 网站提速 | ✅ 配置 阿里云 CDN(静态资源缓存 + 全站提速) ✅ 启用 Nginx FastCGI 缓存(对未登录用户缓存 HTML) |
| 安全防护 | ✅ 开启 阿里云 Web 应用防火墙(WAF)(防 SQL 注入、XSS、暴力破解) ✅ 安装 fail2ban 防 SSH/WordPress 暴力破解: bash sudo apt install fail2ban && sudo cp /etc/fail2ban/jail.{conf,local} && sudo systemctl enable fail2ban |
| 备份策略 | ✅ ECS 系统盘快照(每日自动快照) ✅ WordPress 数据库自动备份脚本(每天导出 SQL 到 OSS) ✅ 插件推荐:UpdraftPlus(备份到阿里云 OSS) |
⚠️ 常见陷阱与排错
- 502 Bad Gateway → 检查
php-fpm是否运行:sudo systemctl status php8.1-fpm,确认 sock 文件路径匹配 - WordPress 无法写入
.htaccess→ Nginx 不用.htaccess!固定链接需靠try_files规则(见上文) - 上传图片失败 → 检查
php.ini:upload_max_filesize = 64M,post_max_size = 128M,max_execution_time = 300 - 中文乱码 → 全程使用
utf8mb4(数据库、表、连接均需设置,WordPress 自动处理) - 阿里云备案问题 → 若面向中国大陆用户,域名必须完成 ICP 备案(否则 80/443 端口被拦截)
✅ 一键验证脚本(部署后运行)
# 检查服务状态
sudo systemctl is-active nginx php8.1-fpm mysql
# 检查 PHP 连接 MySQL
php -r "new mysqli('127.0.0.1', 'wp_user', 'StrongPass123!', 'wordpress_db'); echo "MySQL OKn";"
# 检查 WordPress 基础功能
curl -I http://localhost | head -1 # 应返回 200 OK
如需,我可为你提供:
- ✅ 完整的自动化部署脚本(Bash)
- ✅ Nginx + PHP-FPM 性能调优参数(根据 CPU/内存自动适配)
- ✅ 阿里云 OSS 对象存储对接 WordPress 教程
- ✅ WAF 规则集(专防 WordPress 常见攻击)
请告知你的 Ubuntu 版本和具体需求,我可以立即生成对应脚本 👇
云小栈