在阿里云 ECS 上跑 Ubuntu + LNMP (Linux, Nginx, MySQL/MariaDB, PHP) + WordPress,是互联网建站最经典、也最稳妥的组合之一。Ubuntu 的包管理 apt 比 CentOS 的 yum 更直观,Nginx 在高并发下的表现也比 Apache 更轻盈。
下面是一份经过实战验证的操作指南,按逻辑顺序执行即可。假设你已经通过 SSH 登录到了服务器(root 用户或具有 sudo 权限的用户)。
第一阶段:环境准备与系统更新
不要直接装软件,先确保系统是最新的,避免依赖冲突。
# 更新软件源列表
sudo apt update
# 升级已安装的软件包
sudo apt upgrade -y
# 安装必要的构建工具和基础组件
sudo apt install -y build-essential libssl-dev zlib1g-dev
第二阶段:安装 Nginx
Nginx 作为反向XX和静态资源服务器。
# 安装 Nginx
sudo apt install nginx -y
# 启动并设置开机自启
sudo systemctl start nginx
sudo systemctl enable nginx
# 检查状态
sudo systemctl status nginx
关键点:
此时浏览器访问你的 ECS 公网 IP,应该能看到 Nginx 的欢迎页面。如果看不到,请检查阿里云安全组是否放行了 80 和 443 端口。
第三阶段:安装 MariaDB (MySQL 分支)
MariaDB 是 MySQL 的一个开源分支,性能更好,且完全兼容 MySQL 命令。WordPress 推荐用 MySQL 5.7+ 或 8.0+。
# 安装 MariaDB 服务器
sudo apt install mariadb-server mariadb-client -y
# 启动服务
sudo systemctl start mariadb
sudo systemctl enable mariadb
# 运行安全脚本(强烈建议执行)
sudo mysql_secure_installation
执行 mysql_secure_installation 时:
- 输入当前 root 密码(首次安装通常为空,直接回车)。
Set root password? [Y/n]-> 输入 y,设置一个强密码。Remove anonymous users? [Y/n]-> 输入 y。Disallow root login remotely? [Y/n]-> 输入 y(禁止远程 root 登录,安全)。Remove test database and access to it? [Y/n]-> 输入 y。Reload privilege tables now? [Y/n]-> 输入 y。
创建 WordPress 数据库和用户:
# 登录数据库
sudo mysql
# 在 MariaDB 命令行中执行以下 SQL:
CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wp_user'@'localhost' IDENTIFIED BY 'YourStrongPassword123!';
GRANT ALL ON wordpress.* TO 'wp_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
注意:将 YourStrongPassword123! 替换为你自己的复杂密码。
第四阶段:安装 PHP 及必要扩展
Ubuntu 默认的 PHP 版本可能较老,建议安装 PHP 8.1 或 8.2(目前主流稳定版)。
# 添加 Ondrej PHP PPA 源(获取最新 PHP 版本的关键步骤)
sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt update
# 安装 PHP 8.2 及常用扩展
sudo apt install php8.2-fpm php8.2-mysql php8.2-curl php8.2-gd php8.2-mbstring php8.2-xml php8.2-xmlrpc php8.2-soap php8.2-zip php8.2-intl -y
配置 PHP-FPM 以配合 Nginx:
编辑 /etc/php/8.2/fpm/pool.d/www.conf,确保 user 和 group 设置为 www-data(默认通常就是,但需确认):
user = www-data
group = www-data
重启 PHP-FPM 服务:
sudo systemctl restart php8.2-fpm
第五阶段:配置 Nginx 虚拟主机
这是最容易出错的地方。我们需要告诉 Nginx 如何把 .php 请求交给 PHP-FPM 处理。
-
创建网站根目录:
sudo mkdir -p /var/www/html sudo chown -R $USER:$USER /var/www/html sudo chmod -R 755 /var/www/html -
创建配置文件:
sudo nano /etc/nginx/sites-available/wordpress -
粘贴以下内容(请将
your_domain.com替换为你的域名或 IP):server { listen 80; server_name your_domain.com www.your_domain.com; # 如果是IP,这里写IP或留空 root /var/www/html; index index.php index.html index.htm; # 日志路径 access_log /var/log/nginx/wordpress.access.log; error_log /var/log/nginx/wordpress.error.log; client_max_body_size 100M; # 允许上传较大文件,适合媒体库 location / { try_files $uri $uri/ /index.php?$args; } # 处理 PHP 文件 location ~ .php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php8.2-fpm.sock; # 注意 sock 路径要与实际一致 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } # 禁止访问隐藏文件 location ~ /. { deny all; } # 禁止访问 wp-config.php location ~* /wp-config.php { deny all; } } -
启用站点并测试配置:
sudo ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/ sudo nginx -t如果显示
syntax is ok和test is successful,则继续。 -
重启 Nginx:
sudo systemctl reload nginx
第六阶段:部署 WordPress
-
下载最新版 WordPress:
cd /tmp wget https://wordpress.org/latest.tar.gz tar xzvf latest.tar.gz -
移动文件到网站根目录:
sudo cp -r wordpress/* /var/www/html/ sudo chown -R www-data:www-data /var/www/html/ sudo find /var/www/html/ -type d -exec chmod 755 {} ; sudo find /var/www/html/ -type f -exec chmod 644 {} ; -
生成密钥(可选,但推荐):
访问 https://api.wordpress.org/secret-key/1.1/salt/ 复制生成的密钥串。 -
打开浏览器,访问
http://你的ECS公网IP或http://你的域名。- 选择语言。
- 输入之前创建的数据库名 (
wordpress)、用户名 (wp_user)、密码。 - 主机填
localhost。 - 点击“提交”,然后“运行安装程序”。
- 填写站点标题、管理员账号和密码。
第七阶段:后续优化与安全加固(重要)
刚装好的 WordPress 虽然能用,但要上线,还需要做以下几件事:
1. 配置固定链接 (Permalinks)
进入 WordPress 后台 -> 设置 -> 固定链接 -> 选择“文章名” -> 保存。
这会触发 Nginx 重写规则生效。如果你发现刷新页面出现 404,通常是 Nginx 配置中的 try_files 没生效,或者需要重载 Nginx。
2. 安装 SSL 证书 (HTTPS)
使用 Let’s Encrypt 免费证书。
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d your_domain.com
按照提示操作,Certbot 会自动修改 Nginx 配置并重定向 HTTP 到 HTTPS。
3. 调整 PHP 内存限制
编辑 /etc/php/8.2/fpm/php.ini:
memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300
重启 PHP-FPM:sudo systemctl restart php8.2-fpm
4. 安装缓存插件
在 WordPress 后台安装 WP Super Cache 或 W3 Total Cache,能显著提升加载速度。
5. 备份策略
- 数据库备份:可以使用
mysqldump编写脚本定时备份,或使用宝塔面板等工具(如果你装了的话)。 - 文件备份:利用阿里云 OSS 或本地定期打包
/var/www/html和/etc/nginx。 - 快照:在阿里云控制台,对 ECS 磁盘创建定期快照,这是最底层的灾难恢复手段。
常见问题排查
-
502 Bad Gateway:
- 检查 PHP-FPM 是否运行:
sudo systemctl status php8.2-fpm - 检查 Nginx 错误日志:
tail -f /var/log/nginx/error.log - 常见原因:PHP-FPM 未启动,或 socket 路径不匹配。
- 检查 PHP-FPM 是否运行:
-
403 Forbidden:
- 检查文件权限:确保
/var/www/html下的文件所有者是www-data。 - 检查 SELinux(Ubuntu 默认关闭,但如果开了,需要调整上下文)。
- 检查文件权限:确保
-
无法上传图片:
- 检查
wp-content/uploads目录权限是否为755或775,所有者为www-data。
- 检查
这套流程涵盖了从底层系统到应用层的核心步骤。对于生产环境,建议后续再引入 Redis 做对象缓存,并使用云盾或 WAF 进行安全防护。
云技术博客