加油
努力

在阿里云ECS上如何用Ubuntu搭建LNMP环境并部署WordPress?

在阿里云ECS(Ubuntu系统)上搭建LNMP(Linux + Nginx + MySQL + PHP)并部署WordPress,是一个经典且实用的建站流程。以下是详细、安全、生产就绪的完整步骤(基于 Ubuntu 22.04 LTS,适用于阿里云 ECS 实例,已考虑防火墙、权限、SSL 和 WordPress 最佳实践):


✅ 前提条件

  • 已创建阿里云 ECS 实例(推荐 ≥2核4G,系统镜像:Ubuntu 22.04 LTS)
  • 安全组已放行端口:80(HTTP)、443(HTTPS)、22(SSH)
  • 已绑定弹性公网 IP 或配置了域名解析(如 example.com 指向该 IP)
  • 使用 root 或具有 sudo 权限的用户登录(建议用 sudo -i 切换到 root 操作更便捷)

🔧 第一步:系统更新与基础工具安装

# 更新软件包索引并升级系统(重要!)
sudo apt update && sudo apt upgrade -y

# 安装常用工具(vim、curl、wget、unzip、git 等)
sudo apt install -y vim curl wget unzip git gnupg2 lsb-release ca-certificates

🌐 第二步:安装 Nginx(Web 服务器)

sudo apt install -y nginx

# 启动并设置开机自启
sudo systemctl enable nginx
sudo systemctl start nginx

# 验证:访问 http://<你的ECS公网IP>,应看到 "Welcome to nginx!" 页面

⚠️ 阿里云注意:确保安全组已放行 80 端口;若无法访问,请检查 ufw(默认 Ubuntu 22.04 未启用,可跳过)或 ECS 安全组规则。


💾 第三步:安装 MySQL(推荐 MySQL 8.0)

sudo apt install -y mysql-server

# 运行安全加固脚本(强烈建议!)
sudo mysql_secure_installation
# → 按提示操作:设 root 密码(选 Y)、删除匿名用户、禁止远程 root 登录、删除 test 库、重载权限表

✅ 创建 WordPress 专用数据库与用户(避免使用 root)

sudo mysql -u root -p

在 MySQL 提示符下执行(请替换 wp_useryour_strong_password):

-- 创建数据库(UTF8MB4 支持 emoji 和多语言)
CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 创建专用用户(限制仅本地连接,更安全)
CREATE USER 'wp_user'@'localhost' IDENTIFIED BY 'your_strong_password';

-- 授予数据库全部权限
GRANT ALL ON wordpress.* TO 'wp_user'@'localhost';

-- 刷新权限
FLUSH PRIVILEGES;

-- 退出
EXIT;

🔒 安全提示:wp_user 只允许 localhost 连接,不开放远程访问,符合最小权限原则。


☕ 第四步:安装 PHP 8.1(Ubuntu 22.04 默认)及必要扩展

# 安装 PHP 及 WordPress 所需扩展(含 OPcache、cURL、GD、XML、MySQLi、ZIP 等)
sudo apt install -y php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip php-opcache

# 验证 PHP 版本
php -v  # 应显示 PHP 8.1.x

# 启动并启用 php-fpm(Nginx 通过 socket 与之通信)
sudo systemctl enable php8.1-fpm
sudo systemctl start php8.1-fpm

✅ 配置 PHP(优化 WordPress 性能与安全)

编辑主配置文件:

sudo vim /etc/php/8.1/fpm/php.ini

修改以下关键项(搜索并取消注释/修改):

; 调整内存和上传限制(适合 WordPress 主题/插件)
memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 100M
max_execution_time = 300
max_input_vars = 3000

; 启用 OPcache(大幅提升性能)
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1

; 禁用危险函数(增强安全)
disable_functions = exec,passthru,shell_exec,system,proc_open,popen,show_source,dl,syslog,readlink,symlink,popepassthru,pcntl_exec

保存后重启服务:

sudo systemctl restart php8.1-fpm

📁 第五步:部署 WordPress

1️⃣ 创建网站目录 & 下载 WordPress

# 创建网站根目录(推荐标准路径)
sudo mkdir -p /var/www/wordpress

# 下载最新中文版 WordPress(自动解压)
cd /tmp
curl -O https://cn.wordpress.org/latest-zh_CN.tar.gz
tar -xzf latest-zh_CN.tar.gz -C /var/www/wordpress --strip-components=1

# 设置正确权限(Nginx 用户 www-data 拥有)
sudo chown -R www-data:www-data /var/www/wordpress
sudo chmod -R 755 /var/www/wordpress

2️⃣ 配置 Nginx 虚拟主机(支持 HTTPS、伪静态、缓存)

创建配置文件:

sudo vim /etc/nginx/sites-available/wordpress

粘贴以下内容(✅ 已优化:支持 HTTPS、WP 伪静态、PHP-FPM、gzip、安全头):

server {
    listen 80;
    server_name example.com www.example.com;  # 👉 替换为你的域名!
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    server_name example.com www.example.com;  # 👉 替换为你的域名!

    # SSL 证书(先占位,后续用 Certbot 配置)
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    # 网站根目录
    root /var/www/wordpress;
    index index.php index.html;

    # 日志
    access_log /var/log/nginx/wordpress_access.log;
    error_log /var/log/nginx/wordpress_error.log;

    # 安全头
    add_header X-Frame-Options "DENY" always;
    add_header X-XSS-Protection "1; mode=block" always;
    add_header X-Content-Type-Options "nosniff" always;
    add_header Referrer-Policy "no-referrer-when-downgrade" always;
    add_header Content-Security-Policy "default-src 'self' http: https: data: blob: 'unsafe-inline'" always;

    # WordPress 伪静态规则(关键!)
    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    # 防止敏感文件被直接访问
    location ~ .(htaccess|htpasswd|ini|log|sh|bak|conf|sql|inc|swp|swo|env)$ {
        deny all;
    }

    # PHP 处理
    location ~ .php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    # 静态资源缓存
    location ~* .(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
        expires 1y;
        add_header Cache-Control "public, immutable";
    }
}

启用站点

# 创建软链接启用
sudo ln -sf /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/

# 测试 Nginx 配置语法
sudo nginx -t

# 重载 Nginx
sudo systemctl reload nginx

⚠️ 此时访问 http://example.com 会跳转 HTTPS,但证书尚未配置 → 下一步解决。


🔐 第六步:申请免费 SSL 证书(Let’s Encrypt + Certbot)

# 添加 Certbot 官方仓库
sudo apt install -y certbot python3-certbot-nginx

# 获取证书(自动修改 Nginx 配置,无需手动)
sudo certbot --nginx -d example.com -d www.example.com

# ✅ 按提示输入邮箱、同意协议、选择是否重定向(选 2:Redirect)

✅ 成功后:

  • 证书自动部署到 /etc/letsencrypt/live/example.com/
  • Nginx 配置已自动更新(含 HSTS、OCSP Stapling 等)
  • 自动添加续期定时任务(systemctl list-timers | grep certbot 可查)

🌟 建议测试:访问 https://example.com,浏览器地址栏应显示绿色锁图标。


🚀 第七步:完成 WordPress 安装

1️⃣ 访问安装向导

在浏览器打开:
👉 https://example.com
将自动跳转到 WordPress 安装向导(/wp-admin/install.php

2️⃣ 填写数据库信息(与第三步创建的一致):

  • 数据库名:wordpress
  • 用户名:wp_user
  • 密码:your_strong_password
  • 数据库主机:localhost(✅ 不要填 127.0.0.1,因 MySQL 8.0 默认禁用 localhost 的 socket 映射,localhost 会走 Unix socket,更安全高效)
  • 表前缀:保持默认 wp_ 或自定义(如 wp2024_

✅ 若提示“建立数据库连接时出错”,请检查:

  • MySQL 是否运行:sudo systemctl status mysql
  • 用户密码是否正确、是否只允许 localhost
  • wp_user 是否对 wordpress 库有权限(重新 GRANT 并 FLUSH PRIVILEGES;

3️⃣ 设置站点信息(标题、管理员账号、邮箱等)→ 完成安装!


🛡️ 第八步(可选但强烈推荐):安全加固

项目 操作
禁用 XML-RPC wp-config.php 中添加:
define('DISABLE_XMLRPC', true);
隐藏 WordPress 版本 在主题 functions.php 加:
remove_action('wp_head', 'wp_generator');
限制登录尝试 安装插件:Login Security Solution 或 Wordfence
自动更新 wp-config.php 加:
define('WP_AUTO_UPDATE_CORE', 'minor');
定期备份 使用插件(UpdraftPlus)或阿里云快照策略

🧹 附:常用维护命令

# 查看服务状态
sudo systemctl status nginx mysql php8.1-fpm

# 查看错误日志(快速定位问题)
sudo tail -f /var/log/nginx/wordpress_error.log
sudo tail -f /var/log/mysql/error.log

# WordPress 升级(命令行方式,需 wp-cli)
sudo apt install -y wp-cli
sudo -u www-data wp core update --path=/var/www/wordpress

✅ 最终验证清单

✅ 检查项 方法
✔️ 网站可访问(HTTPS) https://example.com
✔️ WordPress 后台可登录 https://example.com/wp-admin
✔️ 图片/JS/CSS 正常加载 浏览器开发者工具 Network 标签页
✔️ 文章发布/媒体上传正常 后台测试
✔️ SSL 证书有效 https://www.sslshopper.com/ssl-checker.html
✔️ 数据库连接稳定 sudo mysql -u wp_user -p -D wordpress

📌 温馨提示(阿里云专属)

  • ECS 实例建议开启 云监控 + 自动快照策略(每日备份系统盘)
  • 生产环境务必关闭 root 密码登录,改用 SSH 密钥对(ECS 控制台可一键更换)
  • 如需更高性能,可搭配 阿里云 RDS MySQL(替代自建 MySQL),并配置内网连接(更安全稳定)

需要我为你:

  • ✅ 生成完整的 wp-config.php 安全模板?
  • ✅ 编写一键部署 Shell 脚本?
  • ✅ 配置阿里云 RDS + 内网连接 WordPress?
  • ✅ 添加 Redis 缓存提速(Object Cache)?
  • ✅ 配置宝塔面板(非推荐,但可选)?

欢迎随时告诉我,我可以继续为你定制 👇

祝你建站顺利,流量长虹!🚀

云服务器