跳到主要内容

个人技术博客 · Linux 运维 / 自动化 / 可观测性

LNMP + WordPress 完整搭建指南

,

约 7 分钟阅读

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.php
  • location / 里的 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

第九章:验证成功#

登录后台后,能看到仪表盘,说明大功告成。


这个流程你掌握了什么?#

组件作用你学会了什么
NginxWeb 服务器接收请求、处理静态文件、转发 PHP 请求
MySQL数据库存储数据、用户权限管理
PHP-FPMPHP 处理器解析 PHP 代码、连接数据库
WordPress网站程序内容管理、插件主题
权限安全基础文件所有者、目录权限、SELinux
排错核心能力看日志、查状态、定位问题

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注