加油
努力

阿里云ECS Ubuntu实例安装Nginx、MySQL、PHP并运行WordPress需要注意哪些配置?

在阿里云 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.iniupload_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 版本和具体需求,我可以立即生成对应脚本 👇

云服务器