LNMP + WordPress 完整搭建指南(含每一步的原理)#
基于你刚成功部署的经验,我把整个过程重新梳理一遍。这次不仅告诉你敲什么,更告诉你为什么。
第一章:系统准备#
1.1 更新系统#
dnf update -y
为什么要做:新装的系统软件包可能不是最新,更新可以避免因为版本太旧导致的依赖冲突或安装失败。
有什么用:确保软件源里的包都是最新稳定版,减少莫名其妙的问题。
1.2 关闭 SELinux(学习环境用)#
setenforce 0
为什么要做:SELinux 是安全增强模块,会限制进程的访问权限。学习阶段先关闭,减少干扰。
有什么用:避免因为 SELinux 导致的权限问题(你遇到的 502 很多与此相关)。
注意:生产环境要按需配置,不能直接关。
第二章:Nginx(Web 服务器)#
2.1 安装 Nginx#
dnf install nginx -y
为什么要做:Nginx 是 Web 服务器,负责接收用户的 HTTP 请求,返回网页内容。
有什么用:没有它,用户无法访问你的网站。
2.2 启动并设置开机自启#
systemctl start nginx
systemctl enable nginx
为什么要做:start 立即启动,enable 让服务器重启后自动启动。
有什么用:不用每次重启都手动启动 Nginx。
2.3 检查状态#
systemctl status nginx
为什么要做:确认服务正常运行。
有什么用:看到 active (running) 才说明启动成功。
2.4 配置防火墙#
firewall-cmd --permanent --add-service=http
firewall-cmd --reload
为什么要做:防火墙默认会阻挡外部访问,需要放行 HTTP(80 端口)。
有什么用:允许用户通过浏览器访问你的网站。
2.5 测试 Nginx#
浏览器访问 http://你的IP,看到欢迎页说明成功。
第三章:MySQL(数据库)#
3.1 安装 MySQL#
dnf install mysql-server -y
为什么要做:MySQL 是数据库,存 WordPress 的所有数据(文章、用户、设置)。
有什么用:没有它,WordPress 无法保存任何内容。
3.2 启动并设置开机自启#
systemctl start mysqld
systemctl enable mysqld
3.3 安全初始化#
mysql_secure_installation
为什么要做:新装的 MySQL 有默认匿名用户、空密码、测试数据库,不安全。
有什么用:设置 root 密码、删除匿名用户、禁止远程 root 登录、删除测试库。
注意:密码策略默认要求强密码(大小写+数字+特殊字符),你可以用 MyDB@2026pass 这种。
3.4 登录 MySQL#
mysql -u root -p
输入刚才设置的 root 密码。
3.5 创建 WordPress 专用数据库和用户#
CREATE DATABASE wp_db;
CREATE USER 'wp_user'@'localhost' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON wp_db.* TO 'wp_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
为什么要做:为了安全,不用 root 连接 WordPress,而是创建一个专用用户,只给这一个数据库的权限。
有什么用:即使 WordPress 被攻破,攻击者也拿不到数据库 root 权限。
第四章:PHP(动态语言支持)#
4.1 安装 PHP 及相关模块#
dnf install php php-fpm php-mysqlnd -y
为什么要做:WordPress 是 PHP 写的,需要 PHP 解释器。php-fpm 是进程管理器,php-mysqlnd 是连接 MySQL 的驱动。
有什么用:没有 PHP,WordPress 只是一堆文本文件,跑不起来。
4.2 启动 PHP-FPM#
systemctl start php-fpm
systemctl enable php-fpm
4.3 检查 PHP-FPM 状态#
systemctl status php-fpm
4.4 查看 PHP-FPM 监听方式#
grep '^listen' /etc/php-fpm.d/www.conf
为什么要做:PHP-FPM 可以监听端口(如 9000)或 socket 文件。默认 Rocky Linux 用的是 socket。
有什么用:后面配置 Nginx 时,fastcgi_pass 必须和这里一致。
第五章:配置 Nginx 支持 PHP#
5.1 编辑 Nginx 配置文件#
vim /etc/nginx/nginx.conf
5.2 找到 server 块,修改为完整配置#
server {
listen 80;
listen [::]:80;
server_name _;
root /usr/share/nginx/html;
index index.php index.html index.htm;
include /etc/nginx/default.d/*.conf;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
root /usr/share/nginx/html;
try_files $uri =404;
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
error_page 404 /404.html;
location = /404.html {}
error_page 500 502 503 504 /50x.html;
location = /50x.html {}
}
关键配置解释:
index index.php:告诉 Nginx 默认找 index.phplocation /里的try_files:实现 WordPress 伪静态location ~ \.php$:处理所有 .php 结尾的请求fastcgi_pass:用 socket 方式连接 PHP-FPM(和你刚才查的一致)fastcgi_param SCRIPT_FILENAME:告诉 PHP-FPM 要执行哪个文件
5.3 测试配置并重启#
nginx -t
systemctl restart nginx
5.4 创建 PHP 测试文件#
echo "<?php phpinfo(); ?>" > /usr/share/nginx/html/info.php
浏览器访问 http://你的IP/info.php,看到 PHP 信息页说明 PHP 解析成功。
第六章:下载部署 WordPress#
6.1 进入网站目录#
cd /usr/share/nginx/html
6.2 下载 WordPress#
wget https://wordpress.org/latest.tar.gz
如果慢可以用国内镜像。
6.3 解压并移动文件#
tar -zxvf latest.tar.gz
mv wordpress/* .
rmdir wordpress
rm -f latest.tar.gz
6.4 设置正确的权限#
chown -R nginx:nginx /usr/share/nginx/html
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;
为什么要做:Nginx 和 PHP-FPM 都以 nginx 用户运行,必须让这个用户有读写权限,否则无法上传文件、安装插件。
有什么用:避免你遇到的”无法创建目录”错误。
6.5 创建 wp-config.php#
cp wp-config-sample.php wp-config.php
chown nginx:nginx wp-config.php
6.6 编辑 wp-config.php#
vim wp-config.php
修改数据库配置:
define( 'DB_NAME', 'wp_db' );
define( 'DB_USER', 'wp_user' );
define( 'DB_PASSWORD', '123456' );
define( 'DB_HOST', '127.0.0.1' );
在 /* That's all, stop editing! */ 之前添加:
define('FS_METHOD', 'direct');
为什么要做:FS_METHOD 告诉 WordPress 直接用文件系统写入,不走 FTP,避免你遇到的弹窗问题。
第七章:浏览器安装#
7.1 访问安装页面#
浏览器打开 http://你的IP/wp-admin/install.php
7.2 填写信息#
- 站点标题:随便写
- 用户名:不要用 admin,比如
yourname - 密码:设置一个强密码并记住
- 邮箱:你的邮箱
7.3 点击安装#
成功后就会跳转到登录页面,用刚才设置的用户名密码登录。
第八章:解决常见问题(你踩过的坑)#
8.1 502 Bad Gateway#
- 检查 PHP-FPM 是否运行:
systemctl status php-fpm - 检查 Nginx 的
fastcgi_pass是否和 PHP-FPM 的listen一致 - 检查 PHP-FPM 日志:
tail -f /var/log/php-fpm/error.log
8.2 数据库连接失败#
- 用命令行测试:
mysql -u wp_user -p123456 -h 127.0.0.1 - 检查 wp-config.php 的 DB_HOST 是
localhost还是127.0.0.1 - 检查密码是否有隐藏字符:
cat -A wp-config.php
8.3 无法创建目录/文件#
- 检查目录所有者:
ls -l /usr/share/nginx/html/wp-content - 修复权限:
chown -R nginx:nginx+chmod 755 - 检查 SELinux:
getenforce,如果是 Enforcing 先临时关闭测试
8.4 FTP 弹窗#
- 添加
define('FS_METHOD', 'direct')到 wp-config.php
第九章:验证成功#
登录后台后,能看到仪表盘,说明大功告成。
这个流程你掌握了什么?#
| 组件 | 作用 | 你学会了什么 |
|---|---|---|
| Nginx | Web 服务器 | 接收请求、处理静态文件、转发 PHP 请求 |
| MySQL | 数据库 | 存储数据、用户权限管理 |
| PHP-FPM | PHP 处理器 | 解析 PHP 代码、连接数据库 |
| WordPress | 网站程序 | 内容管理、插件主题 |
| 权限 | 安全基础 | 文件所有者、目录权限、SELinux |
| 排错 | 核心能力 | 看日志、查状态、定位问题 |
发表回复