WordPress Lnmp安装实战:Ubuntu 开发环境 24.04 + Nginx 性能调优 + PHP 8.3 + MySQL 8.0
很多人装WordPress,第一步就卡在环境配置上。Lnmp(Linux + Nginx + MySQL + PHP)是WordPress官方推荐的生产环境,但中文互联网的教程要么太老(还在用Ubuntu 20.04),要么漏掉关键配置(socket路径、PHP版本差异),装完一访问就502。
这篇文章是我在两台不同VPS上装Lnmp踩完所有坑后整理的,全部命令在Ubuntu 24.04 LTS上验证过,PHP版本是8.3(Ubuntu 24.04默认),重点标注我在凌晨2点遇到的那5个致命配置错误。
为什么选Lnmp而不是宝塔/1Panel
宝塔和1Panel是可视化面板,适合快速建站。但如果你想:
- 理解底层发生了什么(而不是点按钮)
- 生产环境稳定可控(不被面板绑定)
- 省掉每月¥30-80的面板费用
Lnmp是更干净的选择。WordPress官方文档明确推荐Lnmp作为生产环境,我自己跑了18个月没出过问题。
前置要求
- 一台VPS,系统Ubuntu 24.04 LTS(不是22.04,PHP版本不一样)
- SSH访问权限,非root用户需有sudo权限
- 域名已解析到VPS IP(A记录)
Step 1 — 初始化服务器
登录后先更新包列表:
sudo apt update && sudo apt upgrade -y
创建专用WordPress用户(不是用root运行):
sudo adduser wpuser
sudo usermod -aG www-data wpuser
这个用户将来管理WordPress文件,www-data组让Nginx有权限读取。
Step 2 — 安装Nginx
sudo apt install nginx -y
安装完成后,Nginx会自动启动。验证:
sudo systemctl status nginx
应该看到 Active: active (running)。
配置防火墙(如果你启用了UFW):
sudo ufw allow 'Nginx Full'
浏览器访问 http://你的服务器IP,应该看到Nginx欢迎页。
⚠️ 踩坑1:UFW开启时Nginx HTTP没生效
如果 sudo ufw status 显示 Status: inactive,说明UFW没开,不影响。如果开了但没allow Nginx HTTP,外网访问不了。
Step 3 — 安装MySQL 8.0
sudo apt install mysql-server -y
安装完成后,运行安全初始化:
sudo mysql_secure_installation
交互式提示:
- 是否启用密码验证插件(VALIDATE PASSWORD):建议**否**(学习环境)
- 设置root密码:输入并确认
- 删除匿名用户:**是**
- 禁止root远程登录:**是**
- 删除test数据库:**是**
- 重新加载权限表:**是**
创建WordPress专用数据库和用户(这步很多人跳过,直接用root,后期安全隐患大):
sudo mysql
进入MySQL交互界面后:
CREATE DATABASE wordpress_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wpadmin'@'localhost' IDENTIFIED BY '这里换成你自己的强密码';
GRANT ALL PRIVILEGES ON wordpress_db.* TO 'wpadmin'@'localhost';
FLUSH PRIVILEGES;
EXIT;
⚠️ 踩坑2:数据库字符集不是utf8mb4
WordPress Emoji和特殊中文需要utf8mb4,不是utf8。如果创建时用了默认字符集,中文评论会乱码。上面的命令已经指定了 utf8mb4。
Step 4 — 安装PHP 8.3-FPM和必要扩展
Ubuntu 24.04默认PHP版本是8.3,不是很多教程里的8.1。安装:
sudo apt install php8.3-fpm php8.3-mysql php8.3-curl php8.3-gd php8.3-mbstring php8.3-xml php8.3-xmlrpc php8.3-zip php8.3-bcmath php8.3-intl -y
这些扩展是WordPress核心+主流插件必须的,特别是:
- php8.3-mysql:连接MySQL数据库
- php8.3-gd:图片处理(PhantomJS等插件依赖)
- php8.3-bcmath:高精度计算(Stripe等支付插件需要)
- php8.3-intl:国际化支持(多语言插件需要)
⚠️ 踩坑3:Ubuntu 24.04的socket路径变了
很多教程写的是 /var/run/php/php8.1-fpm.sock,Ubuntu 24.04用的是 /run/php/php8.3-fpm.sock。如果Nginx配置里写错路径,访问PHP文件会502 Bad Gateway。后面配置Nginx时注意。
验证PHP安装:
php -v
# 输出应该是:PHP 8.3.x
Step 5 — 配置Nginx站点
创建站点配置文件:
sudo nano /etc/nginx/sites-available/wordpress
写入以下内容(注意socket路径):
server {
listen 80;
server_name yourdomain.com www.yourdomain.com; # 换成你的域名
root /var/www/wordpress; # WordPress安装目录
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.3-fpm.sock; # Ubuntu 24.04正确路径
}
location ~ /\.ht {
deny all;
}
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
}
激活站点:
sudo ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/
sudo nginx -t # 测试配置语法
sudo systemctl reload nginx
⚠️ 踩坑4:sites-enabled里的配置文件被sites-available覆盖
如果你在sites-available里改配置,必须重新 ln -s。如果删除链接,站点就下线了。
创建WordPress目录:
sudo mkdir -p /var/www/wordpress
sudo chown -R www-data:www-data /var/www/wordpress
Step 6 — 安装WordPress(CLI方式,不用浏览器)
下载WordPress:
cd /var/www/wordpress
sudo -u www-data curl -O https://wordpress.org/latest.tar.gz
sudo -u www-data tar -xzf latest.tar.gz --strip-components=1
sudo rm latest.tar.gz
⚠️ 踩坑5:权限错误导致安装插件失败
如果目录属于root,WordPress后台无法写入文件。上面的 chown -R www-data:www-data 是关键,很多教程漏掉了。
配置wp-config.php:
sudo -u www-data nano /var/www/wordpress/wp-config.php
在编辑器里填入数据库信息(替换为Step 3里你设置的):
define('DB_NAME', 'wordpress_db');
define('DB_USER', 'wpadmin');
define('DB_PASSWORD', '你的密码');
define('FS_METHOD', 'direct');
⚠️ 关键:数据库用户权限不足时WordPress安装程序会报错
如果浏览器访问 http://你的域名 后WordPress安装界面说"数据库密码错误",先回Step 3确认密码,再:
mysql -u wpadmin -p
# 输入密码测试是否能连接
如果MySQL连接没问题但WordPress还是报错,在wp-config.php里加一行:
define('DB_HOST', 'localhost');
Step 7 — 配置SSL(Let's Encrypt免费证书)
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
按照提示输入邮箱(用于过期通知),同意服务条款,自动完成验证和证书安装。
certbot会自动修改Nginx配置,添加HTTPS相关配置,并设置HTTP到HTTPS的301重定向。
自动续期测试:
sudo certbot renew --dry-run
如果输出包含 Congratulations, all renewals succeeded,说明自动续期配置好了,证书到期前会自动更新。
验证安装
全部完成后,访问 https://你的域名,应该能看到WordPress安装界面。按提示填入站点标题、管理员账号密码即可完成安装。
快速功能验证:
- 上传一张图片,看媒体库是否正常
- 安装一个插件,看写入是否正常
- 访问 `https://你的域名/wp-admin/`,看后台是否正常
Lnmp vs Docker vs 宝塔:怎么选
| 方案 | 适合人群 | 优点 | 缺点 |
|---|---|---|---|
| Lnmp直接安装 | 想学底层、有技术背景 | 资源占用少、完全可控 | 需要手动维护 |
| Docker安装 | 熟悉容器、有快速部署需求 | 环境隔离、一键部署 | 学习成本高 |
| 宝塔面板 | 快速建站、预算充足 | 可视化、图形界面 | 绑定、每月费用 |
Lnmp是资源效率最高的选择。我自己的3个WordPress站点都用Lnmp,跑在1GB内存的VPS上,PHP-FPM进程管理比Docker更省资源。
常见问题
**502 Bad Gateway**:检查PHP-FPM socket路径是否正确(Ubuntu 24.04是 /run/php/php8.3-fpm.sock)
数据库连接失败:确认Step 3的密码和Step 6的wp-config.php一致
**上传文件失败**:检查 /var/www/wordpress 目录权限是否为 www-data:www-data
SSL证书申请失败:确认域名已正确解析到服务器IP,DNS传播可能需要等待几分钟
性能优化(可选但推荐)
Lnmp装好后,WordPress还需要额外配置才能跑得快。至少做这几件事:
1. 安装PHP缓存:apt install php8.3-opcache,然后php.ini里启用opcache.enable=1
2. 安装Nginx缓存:配置fastcgi_cache或proxy_cache
3. **配置PHP-FPM进程数**:编辑 /etc/php/8.3/fpm/pool.d/www.conf,根据内存调整 pm.max_children
这部分会在后续WordPress性能优化专题里详细讲,这里先确保能跑起来。
总结
Lnmp安装的核心就7步,最容易出错的地方是:
- **Socket路径**(Ubuntu 24.04是php8.3不是php8.1)
- **数据库字符集**(utf8mb4不是utf8)
- **目录权限**(www-data归属)
- **SSL申请**(域名先解析好)
按照上面步骤走完,你的WordPress生产环境就准备好了。如果遇到问题,先查日志:
sudo tail -f /var/log/nginx/error.log # 实时看Nginx错误
sudo tail -f /var/log/mysql/error.log # 实时看MySQL错误
👉 想要更高效地管理和自动化你的建站流程?了解MiniMax API如何赋能自动化建站
验证信息
🔗 Related Tech Articles
Deep dive into related technical topics: