lnmp架构分离
文档参考:
- CentOS7 源码安装MySQL 8.0
- CentOS7 源码安装Nginx
- CentOS7 源码安装PHP
一、前提需求
- 至少准备三台机器,分别安装好nginx、mysql、php
- 各自网络互通
二、实现效果
使用lnmp架构分离来搭建wordpress博客网站,实现当访问博客网站时,nginx接受请求,若是静态资源则由nginx服务器直接处理并返回结果,若是动态资源,则将请求转发至php服务器处理,若是数据库文件则由php服务器向mysql服务器请求

三、mysql服务器配置
3.1 创建 WordPress 数据库和专用用户
-- 创建数据库(名称可自定义,比如 wordpress)CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 创建用户CREATE USER 'wordpress'@'%' IDENTIFIED BY 'wordpress';
-- 授权该用户操作 wordpress 数据库的所有权限GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'%';
-- 刷新权限FLUSH PRIVILEGES;
-- 退出 MySQLEXIT;3.2 修改 MySQL 配置,允许远程访问
修改编辑 MySQL 配置文件:
vim /data/mysql/mysql/my.cnf # 此为自定义的文件,具体位置根据自身机器决定 # 修改如下行,# 允许所有IP访问 bind-address = 0.0.0.0
systemctl restart mysqld四、php服务器配置
4.1 配置 PHP-FPM 监听ip
vim /usr/local/software/php/etc/php-fpm.d/www.conf
# 修改如listen行,监听所有ip或指定监听网段# listen = 10.1.1.35:9000listen = 0.0.0.0:9000
# (可选)在 listen 行下方添加 Nginx 服务器的 IP 白名单listen.allowed_clients = 10.1.1.34
systemctl restart php-fpm4.2 下载wordpress源码
cd /usr/local/src
wget https://wordpress.org/wordpress-6.8.3.tar.gz
tar -xzf wordpress-6.8.3.tar.gz -C /usr/local/software
# 修改目录属主和属组,改为与php的www.conf配置里面的user用户一致chown -R php:php /usr/local/software/wordpress
# 修改文件权限find /usr/local/software/wordpress -type d -exec chmod 755 {} \;find /usr/local/software/wordpress -type f -exec chmod 644 {} \;4.3 创建测试文件
# 创建测试文件用于后续测试php与mysql的联通性cd /usr/local/software/wordpress
vim mysql_test.php
# 粘贴如下内容
<?php// 替换为你创建的 MySQL 用户名和密码及数据库$conn = mysqli_connect('10.1.1.30', 'wordpress', 'wordpress', 'wordpress');if ($conn) { echo "PHP 连接 MySQL 成功!"; mysqli_close($conn);} else { echo "连接失败:" . mysqli_connect_error();}?>五、修改nginx服务器配置
5.1 创建 Nginx 虚拟主机配置文件
cd /opt/nginx/conf/conf.d
# 粘贴如下配置#####################################server { listen 10000; server_name wp.laixianshen.com; # 若有域名可替换,比如 blog.example.com
# 静态文件目录(Nginx 本机,可放 WordPress 静态资源,也可空) root /usr/local/software/wordpress; index index.php index.html index.htm; access_log /opt/nginx/logs/wordpress_access.log; error_log /opt/nginx/logs/wordpress_error.log warn;
# 新增全局 try_files 规则(核心修复) # 无论访问根路径还是其他路径,只要找不到对应文件 / 目录,就自动转发到 index.php try_files $uri $uri/ /index.php$is_args$args;
# 静态文件缓存,提升速度 location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ { expires 30d; # 缓存30天 add_header Cache-Control "public, max-age=2592000"; }
# 核心:转发 PHP 请求到 PHP 服务器 location ~ \.php$ { # 指向 PHP 服务器的 IP 和端口 fastcgi_pass 10.1.1.35:9000; fastcgi_index index.php; # 注意:这里的 SCRIPT_FILENAME 是 PHP 服务器上的路径(/var/www/html),不是 Nginx 本机 fastcgi_param SCRIPT_FILENAME /usr/local/software/wordpress$fastcgi_script_name; include fastcgi_params; }
# 禁止访问隐藏文件(比如 .htaccess) location ~ /\.ht { deny all; }}###################################################
nginx -t # 检查语法,无报错再重启systemctl restart nginx5.2 telnet测试连通性
使用telnet来测试 Nginx服务器 到 PHP服务器 的连通性
telnet 10.1.1.35 9000六、网站测试
使用浏览器访问nginx的ip10.1.1.34:10000
发现可以正常访问到wordpress的安装页面,但样式不对,这是因为nginx没有转发CSS、JS 等静态文件请求到php服务器上
1. 解决方案一:在 Nginx 服务器上部署静态资源
同步代码:将 PHP 服务器(10.1.1.35)上的 WordPress 代码,完整复制到 Nginx 服务器(10.1.1.34)的
/usr/local/software/wordpress目录下。Terminal window # 在 Nginx 服务器 (10.1.1.34) 上执行scp -r root@10.1.1.35:/usr/local/software/wordpress /usr/local/software/这样当需要静态文件资源时,会从nginx服务器本地获取,但问题是需要经常同步两台机器的目录,因此不推荐
2. 解决方案二:修改 Nginx 配置,转发静态资源请求到 PHP 服务器
修改虚拟主机配置,修改如下参数,其余保持不变
Terminal window # 全局 try_files 规则,所有找不到的文件都转发给 PHP-FPMlocation / {try_files $uri /index.php?$args;}# 静态文件缓存规则(保留)location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {# 转发静态资源请求到 PHP 服务器proxy_pass http://10.1.1.35;expires 30d;add_header Cache-Control "public, max-age=2592000";}这样nginx就可以将静态文件资源请求转发到php服务器上,但需要注意的是使用的是proxy_pass参数,所以php服务器也需要安装nginx。
3. 使用共享存储,将存储文件分离(推荐)
将wordpress目录分离出来,存放至nfs服务器中,nginx和php服务器通过nfs协议从nfs服务器中获取资源
3.1 配置步骤
一台可以正常使用的nfs服务器
- 配置nfs服务器
Terminal window # 创建共享目录mkdir /wordpress# 将php服务器的wordpress目录复制到nfs服务器上scp -r root@10.1.1.35:/usr/local/software/wordpress/* /wordpress# 修改nfs配置文件vim /etc/exports# 添加如下配置/wordpress *(rw,sync,no_root_squash)# 刷新配置exportfs -ra#查看已共享目录showmount -e
- nginx和php服务器进行挂载
Terminal window # 安装nfs客户端yum install -y nfs-utils# nginx服务器挂载[root@web-34 ~]#mount -t nfs 10.1.1.28:/wordpress /usr/local/software/wordpress/#php服务器挂载[root@php-35 ~]#mount -t nfs 10.1.1.28:/wordpress /usr/local/software/wordpress/# (可选)永久挂载,将以下文件写入到/etc/fstab10.1.1.28:/wordpress /usr/local/software/wordpress nfs defaults,_netdev,auto 0 0
- nginx和php服务器对于共享目录的权限配置
nginx和php服务器对于推荐改为一样的uid,这样在不同的机器中所看到的文件所属人都是他们自己,利于文件读写
以下为不同服务器显示的文件所属人
nginx 服务器:
image-20260305102833374 php服务器:
image-20260305102904130 nfs服务器:
image-20260305103231054
使用解决方案三后,即可正常显示wordpress中的静态文件资源及用户上传的图片资源。即使php后端修改了静态资源文件,nginx也能实时读取到
6.1 进入安装页面配置mysql
打开浏览器,访问 http://10.1.1.34:10000(Nginx 服务器 IP),会进入 WordPress 安装向导;
选择 “简体中文”,点击 “现在就开始”;
填写数据库信息:
- 数据库名:
wordpress(第一步创建的) - 用户名:
wordpress - 密码:
wordpress(你自定义的) - 数据库主机:
10.1.1.30(MySQL 服务器 IP) - 表前缀:默认
wp_即可
点击 “提交”→“运行安装程序”;
填写博客标题、管理员账号 / 密码 / 邮箱,点击 “安装 WordPress”;
安装完成后,登录后台即可使用。
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!



赣公网安备36072602000131号