自用LNMP-Redis-NFS-Discuz5.0部署指南-脚本版

LNMP-Redis-NFS-Discuz5.0 部署指南 - 小白详细版

适用环境 :openEuler 24.03
部署方式 :分布式部署(两种方法可选)
生成时间:2026年4月15日


📖 目录

  • [第一章 前期准备工作](#第一章 前期准备工作)
  • [第二章 两种部署方法对比](#第二章 两种部署方法对比)
  • [第三章 方法一:4台服务器部署](#第三章 方法一:4台服务器部署)
  • [第四章 方法二:5台服务器+NFS部署](#第四章 方法二:5台服务器+NFS部署)
  • [第五章 验证与测试](#第五章 验证与测试)
  • [第六章 常见问题排查](#第六章 常见问题排查)
  • 附录
    • [附录 F:一键部署脚本](#附录 F:一键部署脚本)

第一章 前期准备工作

1.1 📚 为什么要做前期准备?

在正式部署之前,需要确保所有服务器都处于"干净、统一、可访问"的状态。这就像盖房子前要先把地平整好、材料准备好一样。前期准备工作做得好,后面部署就会顺利很多。

1.2 🖥️ 服务器要求

最低配置(测试环境)
组件 CPU 内存 磁盘 数量(方法一) 数量(方法二)
MySQL 2核 2GB 20GB 1台 1台
Redis 1核 1GB 10GB 1台 1台
PHP-FPM 2核 2GB 20GB 1台 1台
Nginx 1核 1GB 10GB 1台 1台
NFS 2核 2GB 50GB+ - 1台

💡 小白提示:如果资源有限,可以适当降低配置,但内存不建议低于 1GB。

1.3 🌐 网络规划

IP 地址规划表

方法一(4台服务器):

服务器名称 IP 地址 用途
mysql 192.168.100.157 数据库服务
redis 192.168.100.160 缓存服务
php 192.168.100.149 PHP 应用处理
nginx 192.168.100.192 Web 前端

方法二(5台服务器+NFS):

服务器名称 IP 地址 用途
mysql 192.168.100.157 数据库服务
redis 192.168.100.160 缓存服务
nfs 192.168.100.190 共享存储
php 192.168.100.149 PHP 应用处理
nginx 192.168.100.192 Web 前端

💡 小白提示:请根据实际网络环境修改 IP 地址,确保所有服务器在同一网段且能互相通信。

1.4 📦 准备安装包

需要准备的文件
文件名 说明 获取方式
Discuz_X5.0_20260410.zip Discuz 安装包 官网下载:discuz.vip

下载方法:

bash 复制代码
# 方法一:使用 wget 直接下载
wget https://dl.discuz.vip/Discuz_X5.0_20260410.zip

# 方法二:从官网下载后上传到服务器
# 访问 https://discuz.vip 下载最新版本
# 使用 rz 或 scp 上传到服务器

1.5 ✅ 前期检查清单

在开始部署前,请确认以下事项:

  • 所有服务器已安装 openEuler 24.03 系统
  • 所有服务器网络互通(可以互相 ping 通)
  • 已准备好 Discuz 安装包
  • 已规划好各服务器 IP 地址
  • SSH 连接工具已准备(SecureCRT、Xshell 等)

第二章 两种部署方法对比

2.1 🤔 如何选择部署方法?

在开始之前,先了解两种方法的区别,根据实际情况选择。

2.2 📊 方法对比表

对比项 方法一(4台服务器) 方法二(5台+NFS)
服务器数量 4 台 5 台
文件存储 各服务器独立存储 NFS 集中存储
代码同步 需手动 scp 传输 自动同步
扩展性 添加节点需手动复制 仅需挂载 NFS
单点故障 风险低(各服务器独立) NFS 故障影响 Web 服务
部署难度 ⭐⭐ 简单 ⭐⭐⭐ 中等
适用场景 测试环境、学习练习 生产环境、多节点扩展

2.3 🎯 选择建议

选择方法一,如果你:

  • 刚开始学习分布式部署
  • 只是想测试一下 Discuz
  • 服务器资源有限(只有 4 台)
  • 不需要频繁扩展 Web 服务器

选择方法二,如果你:

  • 需要部署生产环境
  • 未来可能添加更多 Web 服务器
  • 希望统一管理网站文件
  • 对代码同步效率有要求

2.4 🔍 核心区别图解


🗺️ 方法一:4台服务器架构拓扑图

复制代码
┌─────────────────────────────────────────────────────────────────────────────┐
│                              用户访问论坛                                      │
│                         http://192.168.100.192/upload                        │
└─────────────────────────────────────────────────────────────────────────────┘
                                      │
                                      ▼
┌─────────────────────────────────────────────────────────────────────────────┐
│                           【Nginx 服务器】                                    │
│                           192.168.100.192                                    │
│  ┌─────────────────────────────────────────────────────────────────────┐    │
│  │  功能:接收用户请求,转发 PHP 请求给 PHP-FPM 服务器                      │    │
│  │  软件:Nginx + php-fpm                                               │    │
│  │  文件:/usr/share/nginx/html/upload/ (Discuz 程序文件)                │    │
│  │  端口:80 (HTTP)                                                      │    │
│  └─────────────────────────────────────────────────────────────────────┘    │
└─────────────────────────────────────────────────────────────────────────────┘
         │                                    │
         │ FastCGI 请求                        │ 静态文件
         │ (PHP 代码执行)                       │ (图片/CSS/JS)
         ▼                                    │
┌──────────────────────────────┐              │
│     【PHP-FPM 服务器】        │              │
│     192.168.100.149          │              │
│  ┌────────────────────────┐  │              │
│  │ 功能:执行 PHP 代码      │  │              │
│  │ 软件:PHP + PHP-FPM    │  │              │
│  │ 文件:upload/ 目录      │  │              │
│  │ 端口:9000             │  │              │
│  └────────────────────────┘  │              │
└──────────────────────────────┘              │
         │                    │               │
         │ 查询数据            │ 读写缓存       │
         ▼                    ▼               │
┌──────────────────────┐  ┌──────────────────────┐
│   【MySQL 服务器】    │  │   【Redis 服务器】   │
│   192.168.100.157    │  │   192.168.100.160   │
│  ┌────────────────┐  │  │  ┌────────────────┐ │
│  │ 功能:存储数据   │  │  │  │ 功能:高速缓存   │ │
│  │ 软件:MySQL     │  │  │  │ 软件:Redis     │ │
│  │ 数据库:discuz  │  │  │  │ 端口:6379      │ │
│  │ 端口:3306      │  │  │  └────────────────┘ │
│  └────────────────┘  │  └──────────────────────┘
└──────────────────────┘

📦 文件同步方式:
┌─────────────────────────────────────────────────────────────────────────────┐
│  PHP-FPM 服务器打包 upload 目录 ──scp传输──▶ Nginx 服务器解压                │
│                                                                             │
│  tar zcvf upload.tar.gz upload/                                             │
│  scp upload.tar.gz 192.168.100.192:/opt                                     │
└─────────────────────────────────────────────────────────────────────────────┘

🗺️ 方法二:5台服务器+NFS架构拓扑图

复制代码
┌─────────────────────────────────────────────────────────────────────────────┐
│                              用户访问论坛                                      │
│                         http://192.168.100.192/upload                        │
└─────────────────────────────────────────────────────────────────────────────┘
                                      │
                                      ▼
┌─────────────────────────────────────────────────────────────────────────────┐
│                           【Nginx 服务器】                                    │
│                           192.168.100.192                                    │
│  ┌─────────────────────────────────────────────────────────────────────┐    │
│  │  功能:接收用户请求,转发 PHP 请求给 PHP-FPM 服务器                      │    │
│  │  软件:Nginx + php-fpm + nfs-utils                                   │    │
│  │  端口:80 (HTTP)                                                      │    │
│  └─────────────────────────────────────────────────────────────────────┘    │
│                              │                                               │
│                              │ NFS 挂载                                      │
│                              ▼                                               │
└─────────────────────────────────────────────────────────────────────────────┘
                                      │
         ┌────────────────────────────┴────────────────────────────┐
         │                                                         │
         │ NFS 挂载                                                │ FastCGI 请求
         ▼                                                         ▼
┌────────────────────────────────────────┐        ┌──────────────────────────────┐
│           【NFS 服务器】                │        │     【PHP-FPM 服务器】        │
│           192.168.100.190              │        │     192.168.100.149          │
│  ┌──────────────────────────────────┐  │        │  ┌────────────────────────┐  │
│  │ 功能:集中存储 Discuz 文件        │  │        │  │ 功能:执行 PHP 代码      │  │
│  │ 软件:NFS Server                 │  │        │  │ 软件:PHP + PHP-FPM    │  │
│  │ 共享目录:/data/                  │  │        │  │ 端口:9000             │  │
│  │   └── upload/ (Discuz程序)       │  │        │  └────────────────────────┘  │
│  │   └── index.php                  │  │        └──────────────────────────────┘
│  └──────────────────────────────────┘  │                     │
└────────────────────────────────────────┘                     │
                     ▲                    │                    │
                     │                    │                    │
                     └────────────────────┘                    │
                     共享同一份文件                              │
                                                               │
                                          ┌────────────────────┴────────────────────┐
                                          │                                         │
                                          │ 查询数据                                 │ 读写缓存
                                          ▼                                         ▼
                              ┌──────────────────────┐             ┌──────────────────────┐
                              │   【MySQL 服务器】    │             │   【Redis 服务器】   │
                              │   192.168.100.157    │             │   192.168.100.160   │
                              │  ┌────────────────┐  │             │  ┌────────────────┐  │
                              │  │ 功能:存储数据   │  │             │  │ 功能:高速缓存   │  │
                              │  │ 软件:MySQL     │  │             │  │ 软件:Redis     │  │
                              │  │ 数据库:discuz  │  │             │  │ 端口:6379      │  │
                              │  │ 端口:3306      │  │             │  └────────────────┘  │
                              │  └────────────────┘  │             └──────────────────────┘
                              └──────────────────────┘

📦 文件共享方式:
┌─────────────────────────────────────────────────────────────────────────────┐
│                    NFS 服务器统一管理 Discuz 文件                             │
│                                                                             │
│   NFS 服务器:/data/upload/  ◀════共享════▶  Nginx:/usr/share/nginx/html/   │
│   NFS 服务器:/data/upload/  ◀════共享════▶  PHP-FPM:/usr/share/nginx/html/ │
│                                                                             │
│   ✅ 无需手动传输文件,自动同步!                                              │
│   ✅ 添加新服务器只需挂载 NFS 即可!                                           │
└─────────────────────────────────────────────────────────────────────────────┘

2.5 🔄 数据流向详解

用户访问论坛时的数据流向
复制代码
1. 用户在浏览器输入 http://192.168.100.192/upload
                    │
                    ▼
2. 请求到达 Nginx 服务器 (192.168.100.192:80)
                    │
                    ├──▶ 如果是静态文件(图片/CSS/JS)
                    │         │
                    │         └──▶ 直接从 NFS 挂载目录返回文件
                    │
                    └──▶ 如果是 PHP 文件
                              │
                              ▼
3. Nginx 通过 FastCGI 转发请求给 PHP-FPM 服务器 (192.168.100.149:9000)
                    │
                    ▼
4. PHP-FPM 执行 PHP 代码
                    │
                    ├──▶ 需要读取数据
                    │         │
                    │         └──▶ 连接 MySQL 服务器 (192.168.100.157:3306)
                    │
                    └──▶ 需要读写缓存
                              │
                              └──▶ 连接 Redis 服务器 (192.168.100.160:6379)
                    │
                    ▼
5. PHP 处理完成后返回 HTML 给 Nginx
                    │
                    ▼
6. Nginx 返回 HTML 给用户浏览器
                    │
                    ▼
7. 用户看到论坛页面

第三章 方法一:4台服务器部署

3.1 📋 部署概述

部署顺序:

  1. MySQL 服务器 - 数据库是基础
  2. Redis 服务器 - 缓存服务
  3. PHP-FPM 服务器 - 应用处理
  4. Nginx 服务器 - Web 前端

⏱️ 预计耗时: 约 30 分钟


3.2 ① MySQL 服务器部署 (192.168.100.157)

①-① 设置主机名
bash 复制代码
hostnamectl set-hostname mysql && bash

📖 命令解释:

参数 含义
hostnamectl set-hostname mysql 将主机名设置为 mysql
&& 前一条命令执行成功后执行下一条
bash 重新加载 shell 使主机名生效

✅ 预期结果: 命令行提示符变为 [root@mysql ~]#


①-② 安装 MySQL Server
bash 复制代码
yum install -y mysql-server

📖 命令解释:

参数 含义
yum openEuler 的包管理器(类似应用商店)
install 安装软件
-y 自动回答 yes,无需手动确认
mysql-server MySQL 数据库服务器软件包

⏱️ 预计耗时: 约 2-5 分钟(取决于网络速度)

✅ 预期结果: 看到 "Complete!" 表示安装成功


①-③ 启动 MySQL 服务
bash 复制代码
systemctl start mysqld

📖 命令解释:

参数 含义
systemctl 系统服务管理命令
start 启动服务
mysqld MySQL 服务名称

💡 小白提示mysqld 最后的 d 表示 daemon(守护进程),是服务的命名习惯。

✅ 验证服务状态:

bash 复制代码
systemctl status mysqld

看到 active (running) 表示服务正在运行。


①-④ 创建 Discuz 数据库用户
bash 复制代码
mysql

进入 MySQL 命令行后,执行以下 SQL 语句:

sql 复制代码
-- 创建 discuz 用户,允许从 192.168.100.* 网段访问
create user discuz@'192.168.100.%' identified by '123.com';

-- 授予 discuz 数据库的所有权限
grant all on discuz.* to discuz@'192.168.100.%';

-- 刷新权限使配置生效
flush privileges;

-- 退出 MySQL
exit

📖 SQL 语句解释:

语句 含义
create user 创建新用户
discuz@'192.168.100.%' 用户名@允许访问的IP范围(%表示任意)
identified by '123.com' 设置密码为 123.com
grant all 授予所有权限
on discuz.* 针对 discuz 数据库的所有表
flush privileges 刷新权限,使修改立即生效

🏠 生活类比:

  • 创建用户 = 给新员工办入职
  • 设置密码 = 给员工发门禁卡
  • 授权 = 告诉员工可以进入哪些房间
  • flush privileges = 生效门禁系统

①-⑤ 验证数据库连接
bash 复制代码
mysql -h 192.168.100.157 -u discuz -p

输入密码:123.com

📖 参数解释:

参数 含义
-h 192.168.100.157 指定连接的主机地址
-u discuz 指定用户名
-p 提示输入密码

✅ 预期结果: 成功进入 MySQL 命令行,看到 mysql> 提示符


3.3 ② Redis 服务器部署 (192.168.100.160)

②-① 设置主机名并安装 Redis
bash 复制代码
hostnamectl set-hostname redis && bash
yum install -y redis

②-② 修改 Redis 配置文件
bash 复制代码
vim /etc/redis.conf

📖 Vim 操作指南:

操作 按键 说明
进入编辑模式 i 可以修改内容
搜索内容 /bind 然后回车 搜索 bind 关键字
退出编辑模式 Esc 返回命令模式
保存并退出 :wq 然后回车 Write + Quit

需要修改的内容:

找到这一行(约第 50 行):

conf 复制代码
bind 127.0.0.1 -::1

修改为:

conf 复制代码
# bind 127.0.0.1 -::1
bind 192.168.100.160

找到这一行(约第 87 行):

conf 复制代码
protected-mode yes

修改为:

conf 复制代码
protected-mode no

📖 配置解释:

配置项 原值 新值 原因
bind 127.0.0.1 192.168.100.160 绑定本机 IP,允许其他服务器连接
protected-mode yes no 关闭保护模式,允许远程连接

⚠️ 注意事项:

  • protected-mode no 仅适用于测试环境
  • 生产环境应设置密码并保持保护模式开启

②-③ 启动 Redis 服务
bash 复制代码
systemctl start redis

②-④ 验证 Redis 连接
bash 复制代码
redis-cli -h 192.168.100.160 ping

✅ 预期结果:

复制代码
PONG

🏠 生活类比: 就像打电话问"在吗?",对方回"在!",说明通信正常。


3.4 ③ PHP-FPM 服务器部署 (192.168.100.149)

③-① 设置主机名并安装 PHP 核心
bash 复制代码
hostnamectl set-hostname php && bash

# 安装 PHP 核心组件
yum install -y php php-mysqlnd php-fpm php-xml

📖 软件包说明:

软件包 作用
php PHP 语言核心
php-mysqlnd PHP 连接 MySQL 的驱动
php-fpm PHP FastCGI 进程管理器
php-xml PHP XML 处理扩展

③-② 安装 PHP Redis 扩展
bash 复制代码
# 安装编译工具和依赖
yum install -y php-devel php-pear gcc make

# 安装 Redis 扩展
pecl install redis
# 安装过程中一路按回车即可

# 启用 Redis 扩展
echo "extension=redis.so" >> /etc/php.ini

📖 命令解释:

命令/参数 含义
php-devel PHP 开发包,编译扩展需要
php-pear PHP 扩展仓库管理工具
gcc make 编译工具
pecl install redis 从 PECL 仓库安装 Redis 扩展
>> /etc/php.ini 追加写入到 PHP 配置文件

💡 小白提示pecl install redis 过程中会问几个问题,直接按回车使用默认值即可。


③-③ 安装其他工具并创建目录
bash 复制代码
yum install -y lrzsz redis mysql

mkdir /usr/share/nginx/html -p
cd /usr/share/nginx/html/

📖 工具说明:

工具 作用
lrzsz 支持 rz/sz 命令上传下载文件
redis Redis 客户端工具
mysql MySQL 客户端工具

③-④ 上传并解压 Discuz 安装包
bash 复制代码
# 使用 rz 上传文件(在 SecureCRT/Xshell 中)
rz

# 解压安装包
unzip Discuz_X5.0_20260410.zip

# 设置 upload 目录权限
chown apache:apache upload -R

📖 命令解释:

命令 含义
rz 接收文件(Receive ZModem),在终端上传文件
unzip 解压 zip 文件
chown apache:apache 设置文件所有者为 apache 用户和组
-R 递归处理,包括子目录和文件

💡 小白提示:Discuz 的 upload 目录需要 web 服务器用户(apache)有写入权限。


③-⑤ 修改 PHP-FPM 配置文件
bash 复制代码
vim /etc/php-fpm.d/www.conf

需要修改的内容:

找到(约第 24 行):

conf 复制代码
listen = /run/php-fpm/www.sock

修改为:

conf 复制代码
;listen = /run/php-fpm/www.sock
listen = 192.168.100.149:9000

找到(约第 48 行):

conf 复制代码
listen.allowed_clients = 127.0.0.1

注释掉:

conf 复制代码
;listen.allowed_clients = 127.0.0.1

📖 配置解释:

配置项 原值 新值 原因
listen Unix socket IP:端口 允许远程服务器连接
listen.allowed_clients 127.0.0.1 注释掉 允许任何客户端连接

🏠 生活类比:

  • 原来:只接听固定号码的电话(Unix socket)
  • 现在:公开办公室电话号码,任何人都可拨打(IP:端口)

③-⑥ 启动 PHP-FPM 服务
bash 复制代码
systemctl start php-fpm

③-⑦ 验证 PHP-FPM 监听状态
bash 复制代码
netstat -tlnp | grep 9000

✅ 预期结果:

复制代码
tcp   0   0 192.168.100.149:9000   0.0.0.0:*   LISTEN   进程号/php-fpm

📖 输出解释:

  • 192.168.100.149:9000 - 正在监听的地址和端口
  • LISTEN - 等待连接状态

③-⑧ 创建测试页面
bash 复制代码
vim /usr/share/nginx/html/index.php

输入以下内容:

php 复制代码
<?php
    phpinfo();
?>

💡 小白提示:这个页面会显示 PHP 的配置信息,方便确认 PHP 是否正常工作。


③-⑨ 验证连接 MySQL 和 Redis
bash 复制代码
# 测试 Redis 连接
redis-cli -h 192.168.100.160 keys *
exit

# 测试 MySQL 连接
mysql -h 192.168.100.157 -u discuz -p
# 输入密码:123.com
exit

✅ 预期结果:

  • Redis 连接成功,无报错
  • MySQL 连接成功,看到 mysql> 提示符

③-⑩ 打包并传输 upload 目录到 Nginx 服务器
bash 复制代码
cd /usr/share/nginx/html

# 打包 upload 目录
tar zcvf upload.tar.gz upload/

# 传输到 Nginx 服务器
scp upload.tar.gz 192.168.100.192:/opt

📖 命令解释:

参数 含义
tar 打包工具
z 使用 gzip 压缩
c 创建新归档
v 显示过程
f 指定文件名
scp 安全复制命令(通过 SSH)

传输时需要输入:

  • yes - 确认连接新主机
  • 密码:q1w2e3@123!!!!!(Nginx 服务器 root 密码)

💡 小白提示:因为 Nginx 和 PHP-FPM 在不同服务器上,需要把 Discuz 文件传过去。


3.5 ④ Nginx 服务器部署 (192.168.100.192)

④-① 设置主机名并安装软件
bash 复制代码
hostnamectl set-hostname nginx && bash
yum install -y nginx php-fpm lrzsz

💡 小白提示:Nginx 服务器也安装 php-fpm,主要是为了依赖关系,实际 PHP 处理由 PHP-FPM 服务器完成。


④-② 配置 Nginx FastCGI 代理
bash 复制代码
# 删除默认的 PHP-FPM 配置
cd /etc/nginx/conf.d
rm -rf php-fpm.conf

# 编辑 PHP 处理配置
vim /etc/nginx/default.d/php.conf

找到 fastcgi_pass 这一行,修改为:

conf 复制代码
fastcgi_pass 192.168.100.149:9000;

📖 配置解释:

配置项 原值 新值 原因
fastcgi_pass 127.0.0.1:9000 或 unix socket 192.168.100.149:9000 指向远程 PHP-FPM 服务器

🏠 生活类比:

  • 原来:在自己办公室处理 PHP 请求
  • 现在:把 PHP 请求转交给专业团队(PHP-FPM 服务器)处理

④-③ 启动 Nginx 服务
bash 复制代码
systemctl start nginx

④-④ 清空 Web 根目录
bash 复制代码
cd /usr/share/nginx/html/
rm -rf ./*

⚠️ 注意rm -rf ./* 会删除目录下所有内容,请确认在正确目录。


④-⑤ 上传并解压 Discuz 安装包
bash 复制代码
rz  # 上传 Discuz_X5.0_20260410.zip
unzip Discuz_X5.0_20260410.zip

④-⑥ 浏览器安装 Discuz

访问地址:

复制代码
http://192.168.100.192/upload/install

安装向导配置:

配置项 填写内容 说明
数据库服务器 192.168.100.157 MySQL 服务器 IP
数据库名 discuz 数据库名称
数据库用户 discuz 数据库用户名
数据库密码 123.com 数据库密码
管理员用户 自行设置 论坛管理员账号
管理员密码 自行设置 论坛管理员密码

⚠️ 重要提示: 数据库地址、用户名、密码必须与 MySQL 服务器上创建的一致!


④-⑦ 替换为完整 upload 目录

安装完成后,需要用从 PHP-FPM 服务器传输过来的完整目录:

bash 复制代码
# 删除安装时的 upload 目录
rm -rf upload/

# 解压从 PHP-FPM 服务器传来的压缩包
cd /opt
tar xf upload.tar.gz -C /usr/share/nginx/html/

# 设置权限
cd /usr/share/nginx/html
chown apache:apache upload -R

💡 小白提示:安装过程中生成的配置文件需要同步到 PHP-FPM 服务器,所以要用那边打包传来的版本。


④-⑧ 访问论坛

浏览器访问:

复制代码
http://192.168.100.192/upload

✅ 预期结果: 看到 Discuz 论坛首页,可以正常浏览。


第四章 方法二:5台服务器+NFS部署

4.1 📋 部署概述

与方法一的区别:

  • 新增 NFS 服务器统一管理 Discuz 文件
  • Nginx 和 PHP-FPM 通过 NFS 挂载共享同一份代码
  • 无需手动 scp 传输文件

部署顺序:

  1. MySQL 服务器 - 与方法一相同
  2. Redis 服务器 - 与方法一相同
  3. NFS 服务器 - 共享存储
  4. PHP-FPM 服务器 - 挂载 NFS
  5. Nginx 服务器 - 挂载 NFS

4.2 ① MySQL 服务器部署

与方法一完全相同,请参考第三章 3.2 节。


4.3 ② Redis 服务器部署

与方法一完全相同,请参考第三章 3.3 节。


4.4 ③ NFS 服务器部署 (192.168.100.190)

③-① 设置主机名并安装 NFS
bash 复制代码
hostnamectl set-hostname nfs && bash
yum install -y nfs-utils lrzsz

③-② 配置 NFS 共享目录
bash 复制代码
vim /etc/exports

写入以下内容:

conf 复制代码
/data/ 192.168.100.0/24(rw,sync,no_root_squash)

📖 配置解释:

参数 含义
/data/ 要共享的目录
192.168.100.0/24 允许访问的网段(192.168.100.x)
rw 读写权限
sync 同步写入磁盘
no_root_squash root 用户保持权限,不降级

🏠 生活类比:

  • NFS 就像一个共享网盘
  • 配置 exports 就像设置"哪些人可以访问这个网盘"

③-③ 创建共享目录并应用配置
bash 复制代码
mkdir /data
exportfs -arv

✅ 预期结果:

复制代码
exporting 192.168.100.0/24:/data

📖 命令解释:

参数 含义
exportfs NFS 共享管理命令
-a 导出所有目录
-r 重新导出
-v 显示详细信息

③-④ 上传 Discuz 安装包到共享目录
bash 复制代码
rz  # 上传 Discuz_X5.0_20260410.zip
mv Discuz_X5.0_20260410.zip /data/
cd /data/
unzip Discuz_X5.0_20260410.zip
chown apache:apache upload -R

💡 小白提示:上传后,Nginx 和 PHP-FPM 挂载 NFS 就能直接看到这些文件。


4.5 ④ PHP-FPM 服务器部署 (192.168.100.149)

④-① 安装软件(与方法一相同)
bash 复制代码
hostnamectl set-hostname php && bash
yum install -y php php-mysqlnd php-fpm php-xml
yum install -y php-devel php-pear gcc make
pecl install redis  # 一路回车
echo "extension=redis.so" >> /etc/php.ini
yum install -y lrzsz redis mysql nfs-utils  # 注意多了 nfs-utils

④-② 创建目录并挂载 NFS
bash 复制代码
mkdir /usr/share/nginx/html -p
mount 192.168.100.190:/data /usr/share/nginx/html/

📖 命令解释:

参数 含义
mount 挂载命令
192.168.100.190:/data NFS 服务器地址:共享目录
/usr/share/nginx/html/ 本地挂载点

💡 小白提示 :挂载后,本地的 /usr/share/nginx/html/ 目录内容就是 NFS 服务器 /data/ 目录的内容。

✅ 验证挂载:

bash 复制代码
df -h | grep nfs
ls /usr/share/nginx/html/

④-③ 配置 PHP-FPM(与方法一相同)
bash 复制代码
vim /etc/php-fpm.d/www.conf

修改:

conf 复制代码
;listen = /run/php-fpm/www.sock
listen = 192.168.100.149:9000

;listen.allowed_clients = 127.0.0.1

④-④ 启动 PHP-FPM 并验证
bash 复制代码
systemctl start php-fpm

# 验证 MySQL 和 Redis 连接
redis-cli -h 192.168.100.160 keys *
exit
mysql -h 192.168.100.157 -u discuz -p
exit

4.6 ⑤ Nginx 服务器部署 (192.168.100.192)

⑤-① 安装软件
bash 复制代码
hostnamectl set-hostname nginx && bash
yum install -y nginx php-fpm lrzsz nfs-utils  # 注意 nfs-utils

⑤-② 挂载 NFS
bash 复制代码
mkdir /usr/share/nginx/html -p
mount 192.168.100.190:/data /usr/share/nginx/html/

💡 小白提示:Nginx 和 PHP-FPM 挂载同一个 NFS 目录,共享同一份 Discuz 文件,无需手动传输!


⑤-③ 配置 Nginx(与方法一相同)
bash 复制代码
cd /etc/nginx/conf.d
rm -rf php-fpm.conf
vim /etc/nginx/default.d/php.conf

修改:

conf 复制代码
fastcgi_pass 192.168.100.149:9000;

⑤-④ 启动 Nginx
bash 复制代码
systemctl start nginx

⑤-⑤ 浏览器安装 Discuz

访问地址:

复制代码
http://192.168.100.192/upload/install

填写配置:

  • 数据库服务器:192.168.100.157
  • 数据库名:discuz
  • 数据库用户:discuz
  • 数据库密码:123.com

💡 小白提示:安装完成后直接访问即可,无需像方法一那样替换 upload 目录,因为 NFS 已自动同步!


4.7 ⑥ 如之前已安装过(可选清理)

如果之前使用方法一安装过,需要清理数据库:

bash 复制代码
mysql

执行:

sql 复制代码
drop database discuz;
exit

第五章 验证与测试

5.1 各服务器验证命令汇总

服务器 验证命令 预期结果
MySQL systemctl status mysqld active (running)
Redis redis-cli -h 192.168.100.160 ping PONG
NFS showmount -e localhost /data 192.168.100.0/24
PHP-FPM `netstat -tlnp grep 9000`
Nginx systemctl status nginx active (running)

5.2 论坛功能测试

  1. 访问首页http://192.168.100.192/upload

  2. 登录管理员账号

  3. 测试发帖、回帖功能

  4. 验证 Redis 缓存

    bash 复制代码
    redis-cli -h 192.168.100.160 keys *

    应该看到缓存数据


第六章 常见问题排查

问题 1:无法连接 PHP-FPM (9000 端口)

症状: 浏览器访问 PHP 页面报错

排查步骤:

bash 复制代码
# 在 PHP-FPM 服务器检查
systemctl status php-fpm
netstat -tlnp | grep 9000

# 检查配置
grep "^listen" /etc/php-fpm.d/www.conf

解决方法:

  • 确保 listen = 192.168.100.149:9000
  • 确保 listen.allowed_clients 已注释
  • 重启服务:systemctl restart php-fpm

问题 2:数据库连接失败

症状: Discuz 安装时提示数据库连接失败

排查步骤:

bash 复制代码
# 在 MySQL 服务器检查用户权限
mysql -e "show grants for discuz@'192.168.100.%';"

# 测试远程连接
mysql -h 192.168.100.157 -u discuz -p

解决方法:

sql 复制代码
-- 重新授权
grant all on discuz.* to discuz@'192.168.100.%';
flush privileges;

问题 3:Redis 连接失败

症状: 缓存不生效或报错

排查步骤:

bash 复制代码
# 检查 Redis 配置
grep "^bind" /etc/redis.conf
grep "protected-mode" /etc/redis.conf

# 测试连接
redis-cli -h 192.168.100.160 ping

解决方法:

  • 确保 bind 192.168.100.160
  • 确保 protected-mode no
  • 重启服务:systemctl restart redis

问题 4:NFS 挂载失败

症状: 挂载时报错或看不到文件

排查步骤:

bash 复制代码
# 在 NFS 服务器检查
exportfs -v
showmount -e localhost

# 在客户端检查
showmount -e 192.168.100.190

解决方法:

  • 确保 NFS 服务防火墙已开放
  • 确保 /etc/exports 配置正确
  • 重新导出:exportfs -arv

附录

附录 A:关键信息汇总

项目
MySQL 服务器 IP 192.168.100.157
Redis 服务器 IP 192.168.100.160
NFS 服务器 IP 192.168.100.190(方法二)
PHP-FPM 服务器 IP 192.168.100.149
Nginx 服务器 IP 192.168.100.192
数据库名 discuz
数据库用户 discuz
数据库密码 123.com
PHP-FPM 端口 9000
NFS 共享目录 /data(方法二)

附录 B:端口说明

端口 服务 说明
80 Nginx HTTP 网页访问
9000 PHP-FPM FastCGI 通信
3306 MySQL 数据库连接
6379 Redis 缓存服务
2049 NFS 文件共享
111 RPC NFS 依赖服务

附录 C:常用命令速查

服务管理:

bash 复制代码
systemctl start 服务名    # 启动
systemctl stop 服务名     # 停止
systemctl restart 服务名  # 重启
systemctl status 服务名   # 查看状态
systemctl enable 服务名   # 开机自启

日志查看:

bash 复制代码
journalctl -u 服务名 -f   # 实时查看日志

网络测试:

bash 复制代码
netstat -tlnp             # 查看监听端口
ss -tlnp                  # 同上(推荐)
telnet IP 端口             # 测试端口连通性

NFS 相关:

bash 复制代码
showmount -e 服务器IP     # 查看共享目录
mount -t nfs 服务器:/路径 /本地路径  # 挂载 NFS
umount /本地路径          # 卸载 NFS

附录 D:部署检查清单

方法一(4台服务器):

  • MySQL:服务启动,用户创建完成
  • Redis:服务启动,可远程连接
  • PHP-FPM:服务启动,监听 9000 端口
  • PHP-FPM:upload 目录已传输到 Nginx
  • Nginx:服务启动,FastCGI 配置正确
  • Discuz:安装完成,可正常访问

方法二(5台服务器):

  • MySQL:服务启动,用户创建完成
  • Redis:服务启动,可远程连接
  • NFS:共享目录配置完成,Discuz 文件已上传
  • PHP-FPM:已挂载 NFS,服务启动
  • Nginx:已挂载 NFS,服务启动
  • Discuz:安装完成,可正常访问

附录 E:设置开机自启和自动挂载

方法一(4台服务器):

bash 复制代码
# 各服务器设置服务开机自启
systemctl enable mysqld   # MySQL 服务器
systemctl enable redis    # Redis 服务器
systemctl enable php-fpm  # PHP-FPM 服务器
systemctl enable nginx    # Nginx 服务器

方法二(5台服务器):

bash 复制代码
# 服务开机自启
systemctl enable mysqld redis nfs-server php-fpm nginx

# PHP-FPM 和 Nginx 服务器设置 NFS 开机自动挂载
echo "192.168.100.190:/data /usr/share/nginx/html nfs defaults 0 0" >> /etc/fstab

# 验证 fstab 配置
mount -a

附录 F:一键部署脚本

📖 脚本使用说明

⚠️ 使用前请注意:

  1. 脚本需要在各服务器上分别执行
  2. 请根据实际 IP 地址修改脚本中的变量
  3. 确保服务器之间网络互通
  4. Discuz 安装包需要提前准备好

🚀 脚本特点:

  • 带颜色输出,进度清晰
  • 自动检测错误并提示
  • 自动设置开机自启
  • 部署完成后自动验证

F.1 方法一:MySQL 服务器一键部署脚本

文件名: deploy_mysql.sh

bash 复制代码
#!/bin/bash
#======================================
# MySQL 服务器一键部署脚本
# 适用于方法一(4台服务器)
#======================================

set -e  # 遇到错误立即停止

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color

# 配置变量(请根据实际情况修改)
MYSQL_IP="192.168.100.157"
DB_NAME="discuz"
DB_USER="discuz"
DB_PASS="123.com"
ALLOW_NETWORK="192.168.100.%"

echo -e "${GREEN}======================================${NC}"
echo -e "${GREEN}  MySQL 服务器一键部署脚本${NC}"
echo -e "${GREEN}======================================${NC}"

# 1. 设置主机名
echo -e "${YELLOW}[1/5] 设置主机名为 mysql...${NC}"
hostnamectl set-hostname mysql

# 2. 安装 MySQL
echo -e "${YELLOW}[2/5] 安装 MySQL Server...${NC}"
yum install -y mysql-server

# 3. 启动 MySQL 服务
echo -e "${YELLOW}[3/5] 启动 MySQL 服务...${NC}"
systemctl start mysqld
systemctl enable mysqld

# 4. 创建数据库用户
echo -e "${YELLOW}[4/5] 创建 Discuz 数据库用户...${NC}"
mysql <<EOF
CREATE USER '${DB_USER}'@'${ALLOW_NETWORK}' IDENTIFIED BY '${DB_PASS}';
GRANT ALL ON ${DB_NAME}.* TO '${DB_USER}'@'${ALLOW_NETWORK}';
FLUSH PRIVILEGES;
EOF

# 5. 验证
echo -e "${YELLOW}[5/5] 验证部署结果...${NC}"
if systemctl is-active --quiet mysqld; then
    echo -e "${GREEN}✅ MySQL 服务运行正常${NC}"
else
    echo -e "${RED}❌ MySQL 服务启动失败${NC}"
    exit 1
fi

echo ""
echo -e "${GREEN}======================================${NC}"
echo -e "${GREEN}  MySQL 服务器部署完成!${NC}"
echo -e "${GREEN}======================================${NC}"
echo -e "数据库地址: ${MYSQL_IP}"
echo -e "数据库名: ${DB_NAME}"
echo -e "数据库用户: ${DB_USER}"
echo -e "数据库密码: ${DB_PASS}"
echo ""
echo -e "${YELLOW}验证命令: mysql -h ${MYSQL_IP} -u ${DB_USER} -p${NC}"

F.2 方法一:Redis 服务器一键部署脚本

文件名: deploy_redis.sh

bash 复制代码
#!/bin/bash
#======================================
# Redis 服务器一键部署脚本
# 适用于方法一(4台服务器)
#======================================

set -e

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'

# 配置变量
REDIS_IP="192.168.100.160"

echo -e "${GREEN}======================================${NC}"
echo -e "${GREEN}  Redis 服务器一键部署脚本${NC}"
echo -e "${GREEN}======================================${NC}"

# 1. 设置主机名
echo -e "${YELLOW}[1/4] 设置主机名为 redis...${NC}"
hostnamectl set-hostname redis

# 2. 安装 Redis
echo -e "${YELLOW}[2/4] 安装 Redis...${NC}"
yum install -y redis

# 3. 修改配置文件
echo -e "${YELLOW}[3/4] 配置 Redis 允许远程连接...${NC}"
# 备份配置文件
cp /etc/redis.conf /etc/redis.conf.bak

# 修改 bind 地址
sed -i "s/^bind 127.0.0.1 -::1/bind ${REDIS_IP}/" /etc/redis.conf

# 关闭保护模式
sed -i "s/^protected-mode yes/protected-mode no/" /etc/redis.conf

# 4. 启动服务
echo -e "${YELLOW}[4/4] 启动 Redis 服务...${NC}"
systemctl start redis
systemctl enable redis

# 验证
echo -e "${YELLOW}验证 Redis 连接...${NC}"
if redis-cli -h ${REDIS_IP} ping | grep -q "PONG"; then
    echo -e "${GREEN}✅ Redis 服务运行正常${NC}"
else
    echo -e "${RED}❌ Redis 服务异常${NC}"
    exit 1
fi

echo ""
echo -e "${GREEN}======================================${NC}"
echo -e "${GREEN}  Redis 服务器部署完成!${NC}"
echo -e "${GREEN}======================================${NC}"
echo -e "Redis 地址: ${REDIS_IP}:6379"
echo ""
echo -e "${YELLOW}验证命令: redis-cli -h ${REDIS_IP} ping${NC}"

F.3 方法一:PHP-FPM 服务器一键部署脚本

文件名: deploy_php.sh

bash 复制代码
#!/bin/bash
#======================================
# PHP-FPM 服务器一键部署脚本
# 适用于方法一(4台服务器)
#======================================

set -e

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'

# 配置变量
PHP_IP="192.168.100.149"
MYSQL_IP="192.168.100.157"
REDIS_IP="192.168.100.160"
NGINX_IP="192.168.100.192"
DB_USER="discuz"
DB_PASS="123.com"
NGINX_PASS="q1w2e3@123!!!!!"

echo -e "${GREEN}======================================${NC}"
echo -e "${GREEN}  PHP-FPM 服务器一键部署脚本${NC}"
echo -e "${GREEN}======================================${NC}"

# 1. 设置主机名
echo -e "${YELLOW}[1/8] 设置主机名为 php...${NC}"
hostnamectl set-hostname php

# 2. 安装 PHP 核心组件
echo -e "${YELLOW}[2/8] 安装 PHP 核心组件...${NC}"
yum install -y php php-mysqlnd php-fpm php-xml

# 3. 安装 PHP Redis 扩展
echo -e "${YELLOW}[3/8] 安装 PHP Redis 扩展...${NC}"
yum install -y php-devel php-pear gcc make
yes "" | pecl install redis
echo "extension=redis.so" >> /etc/php.ini

# 4. 安装其他工具
echo -e "${YELLOW}[4/8] 安装其他工具...${NC}"
yum install -y lrzsz redis mysql

# 5. 创建 Web 目录
echo -e "${YELLOW}[5/8] 创建 Web 目录...${NC}"
mkdir -p /usr/share/nginx/html

# 6. 配置 PHP-FPM
echo -e "${YELLOW}[6/8] 配置 PHP-FPM 监听远程端口...${NC}"
cp /etc/php-fpm.d/www.conf /etc/php-fpm.d/www.conf.bak
sed -i "s|^listen = /run/php-fpm/www.sock|;listen = /run/php-fpm/www.sock\nlisten = ${PHP_IP}:9000|" /etc/php-fpm.d/www.conf
sed -i "s|^listen.allowed_clients = 127.0.0.1|;listen.allowed_clients = 127.0.0.1|" /etc/php-fpm.d/www.conf

# 7. 启动 PHP-FPM
echo -e "${YELLOW}[7/8] 启动 PHP-FPM 服务...${NC}"
systemctl start php-fpm
systemctl enable php-fpm

# 8. 验证连接
echo -e "${YELLOW}[8/8] 验证 MySQL 和 Redis 连接...${NC}"
echo -e "测试 MySQL 连接..."
if mysql -h ${MYSQL_IP} -u ${DB_USER} -p${DB_PASS} -e "exit" 2>/dev/null; then
    echo -e "${GREEN}✅ MySQL 连接成功${NC}"
else
    echo -e "${RED}⚠️ MySQL 连接失败,请检查配置${NC}"
fi

echo -e "测试 Redis 连接..."
if redis-cli -h ${REDIS_IP} ping | grep -q "PONG"; then
    echo -e "${GREEN}✅ Redis 连接成功${NC}"
else
    echo -e "${RED}⚠️ Redis 连接失败,请检查配置${NC}"
fi

echo ""
echo -e "${GREEN}======================================${NC}"
echo -e "${GREEN}  PHP-FPM 服务器部署完成!${NC}"
echo -e "${GREEN}======================================${NC}"
echo -e "PHP-FPM 监听: ${PHP_IP}:9000"
echo ""
echo -e "${YELLOW}⚠️ 请手动上传 Discuz 安装包到 /usr/share/nginx/html/${NC}"
echo -e "${YELLOW}⚠️ 解压后执行以下命令传输到 Nginx 服务器:${NC}"
echo -e "   cd /usr/share/nginx/html"
echo -e "   chown apache:apache upload -R"
echo -e "   tar zcvf upload.tar.gz upload/"
echo -e "   scp upload.tar.gz ${NGINX_IP}:/opt"

F.4 方法一:Nginx 服务器一键部署脚本

文件名: deploy_nginx.sh

bash 复制代码
#!/bin/bash
#======================================
# Nginx 服务器一键部署脚本
# 适用于方法一(4台服务器)
#======================================

set -e

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'

# 配置变量
NGINX_IP="192.168.100.192"
PHP_IP="192.168.100.149"

echo -e "${GREEN}======================================${NC}"
echo -e "${GREEN}  Nginx 服务器一键部署脚本${NC}"
echo -e "${GREEN}======================================${NC}"

# 1. 设置主机名
echo -e "${YELLOW}[1/5] 设置主机名为 nginx...${NC}"
hostnamectl set-hostname nginx

# 2. 安装软件
echo -e "${YELLOW}[2/5] 安装 Nginx 和相关软件...${NC}"
yum install -y nginx php-fpm lrzsz

# 3. 配置 Nginx
echo -e "${YELLOW}[3/5] 配置 Nginx FastCGI 代理...${NC}"
rm -f /etc/nginx/conf.d/php-fpm.conf
# 修改 fastcgi_pass 指向 PHP-FPM 服务器
sed -i "s|fastcgi_pass.*|fastcgi_pass ${PHP_IP}:9000;|" /etc/nginx/default.d/php.conf 2>/dev/null || \
echo -e "${YELLOW}⚠️ 请手动检查 /etc/nginx/default.d/php.conf 配置${NC}"

# 4. 启动服务
echo -e "${YELLOW}[4/5] 启动 Nginx 服务...${NC}"
systemctl start nginx
systemctl enable nginx

# 5. 创建 Web 目录
echo -e "${YELLOW}[5/5] 创建 Web 目录...${NC}"
mkdir -p /usr/share/nginx/html

# 验证
if systemctl is-active --quiet nginx; then
    echo -e "${GREEN}✅ Nginx 服务运行正常${NC}"
else
    echo -e "${RED}❌ Nginx 服务启动失败${NC}"
    exit 1
fi

echo ""
echo -e "${GREEN}======================================${NC}"
echo -e "${GREEN}  Nginx 服务器部署完成!${NC}"
echo -e "${GREEN}======================================${NC}"
echo -e "访问地址: http://${NGINX_IP}/upload"
echo ""
echo -e "${YELLOW}⚠️ 后续步骤:${NC}"
echo -e "1. 上传 Discuz 安装包到 /usr/share/nginx/html/ 并解压"
echo -e "2. 或从 PHP-FPM 服务器接收 upload.tar.gz:"
echo -e "   cd /opt && tar xf upload.tar.gz -C /usr/share/nginx/html/"
echo -e "3. 浏览器访问 http://${NGINX_IP}/upload/install 进行安装"

F.5 方法二:NFS 服务器一键部署脚本

文件名: deploy_nfs.sh

bash 复制代码
#!/bin/bash
#======================================
# NFS 服务器一键部署脚本
# 适用于方法二(5台服务器)
#======================================

set -e

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'

# 配置变量
NFS_IP="192.168.100.190"
SHARE_DIR="/data"
ALLOW_NETWORK="192.168.100.0/24"

echo -e "${GREEN}======================================${NC}"
echo -e "${GREEN}  NFS 服务器一键部署脚本${NC}"
echo -e "${GREEN}======================================${NC}"

# 1. 设置主机名
echo -e "${YELLOW}[1/5] 设置主机名为 nfs...${NC}"
hostnamectl set-hostname nfs

# 2. 安装 NFS
echo -e "${YELLOW}[2/5] 安装 NFS 服务...${NC}"
yum install -y nfs-utils lrzsz

# 3. 配置共享目录
echo -e "${YELLOW}[3/5] 配置 NFS 共享目录...${NC}"
mkdir -p ${SHARE_DIR}
echo "${SHARE_DIR}/ ${ALLOW_NETWORK}(rw,sync,no_root_squash)" > /etc/exports

# 4. 启动服务
echo -e "${YELLOW}[4/5] 启动 NFS 服务...${NC}"
systemctl start nfs-server
systemctl enable nfs-server
exportfs -arv

# 5. 验证
echo -e "${YELLOW}[5/5] 验证 NFS 配置...${NC}"
if showmount -e localhost | grep -q "${SHARE_DIR}"; then
    echo -e "${GREEN}✅ NFS 共享配置成功${NC}"
else
    echo -e "${RED}❌ NFS 共享配置失败${NC}"
    exit 1
fi

echo ""
echo -e "${GREEN}======================================${NC}"
echo -e "${GREEN}  NFS 服务器部署完成!${NC}"
echo -e "${GREEN}======================================${NC}"
echo -e "共享目录: ${SHARE_DIR}"
echo -e "允许网段: ${ALLOW_NETWORK}"
echo ""
echo -e "${YELLOW}⚠️ 后续步骤:${NC}"
echo -e "1. 上传 Discuz 安装包到 ${SHARE_DIR}/"
echo -e "   rz  # 上传 Discuz_X5.0_20260410.zip"
echo -e "   unzip Discuz_X5.0_20260410.zip"
echo -e "   chown apache:apache upload -R"
echo ""
echo -e "${YELLOW}客户端挂载命令:${NC}"
echo -e "   mount ${NFS_IP}:${SHARE_DIR} /usr/share/nginx/html/"

F.6 方法二:PHP-FPM+Nginx 挂载 NFS 一键配置脚本

文件名: mount_nfs.sh

bash 复制代码
#!/bin/bash
#======================================
# PHP-FPM/Nginx 服务器挂载 NFS 脚本
# 适用于方法二(5台服务器)
# 需要在 PHP-FPM 和 Nginx 服务器上分别执行
#======================================

set -e

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'

# 配置变量
NFS_SERVER="192.168.100.190"
NFS_DIR="/data"
LOCAL_DIR="/usr/share/nginx/html"

echo -e "${GREEN}======================================${NC}"
echo -e "${GREEN}  NFS 客户端挂载脚本${NC}"
echo -e "${GREEN}======================================${NC}"

# 1. 安装 NFS 客户端
echo -e "${YELLOW}[1/3] 安装 NFS 客户端工具...${NC}"
yum install -y nfs-utils

# 2. 创建挂载点
echo -e "${YELLOW}[2/3] 创建挂载目录...${NC}"
mkdir -p ${LOCAL_DIR}

# 3. 挂载 NFS
echo -e "${YELLOW}[3/3] 挂载 NFS 共享目录...${NC}"
mount ${NFS_SERVER}:${NFS_DIR} ${LOCAL_DIR}

# 验证
if df -h | grep -q "${NFS_SERVER}:${NFS_DIR}"; then
    echo -e "${GREEN}✅ NFS 挂载成功${NC}"
    echo ""
    df -h | grep "${NFS_SERVER}"
else
    echo -e "${RED}❌ NFS 挂载失败${NC}"
    exit 1
fi

# 设置开机自动挂载
echo ""
echo -e "${YELLOW}是否设置开机自动挂载?(y/n)${NC}"
read -r answer
if [ "$answer" = "y" ] || [ "$answer" = "Y" ]; then
    echo "${NFS_SERVER}:${NFS_DIR} ${LOCAL_DIR} nfs defaults 0 0" >> /etc/fstab
    echo -e "${GREEN}✅ 已添加到 /etc/fstab${NC}"
fi

echo ""
echo -e "${GREEN}======================================${NC}"
echo -e "${GREEN}  NFS 挂载完成!${NC}"
echo -e "${GREEN}======================================${NC}"
echo -e "挂载点: ${LOCAL_DIR}"
echo -e "查看文件: ls ${LOCAL_DIR}/"

F.7 脚本使用方法

方法一(4台服务器)部署顺序:

bash 复制代码
# 1. 在 MySQL 服务器 (192.168.100.157) 执行
chmod +x deploy_mysql.sh
./deploy_mysql.sh

# 2. 在 Redis 服务器 (192.168.100.160) 执行
chmod +x deploy_redis.sh
./deploy_redis.sh

# 3. 在 PHP-FPM 服务器 (192.168.100.149) 执行
chmod +x deploy_php.sh
./deploy_php.sh
# 然后手动上传 Discuz 安装包

# 4. 在 Nginx 服务器 (192.168.100.192) 执行
chmod +x deploy_nginx.sh
./deploy_nginx.sh

方法二(5台服务器)部署顺序:

bash 复制代码
# 1. 在 MySQL 服务器执行 deploy_mysql.sh
# 2. 在 Redis 服务器执行 deploy_redis.sh
# 3. 在 NFS 服务器执行
chmod +x deploy_nfs.sh
./deploy_nfs.sh
# 然后上传 Discuz 安装包到 /data/

# 4. 在 PHP-FPM 服务器执行
chmod +x deploy_php.sh
./deploy_php.sh  # 注意:需要修改此脚本去掉上传步骤
chmod +x mount_nfs.sh
./mount_nfs.sh

# 5. 在 Nginx 服务器执行
chmod +x deploy_nginx.sh
./deploy_nginx.sh
chmod +x mount_nfs.sh
./mount_nfs.sh

文档版本 :v1.0
最后更新:2026年4月15日

相关推荐
阿火~2 小时前
docker完整镜像迁移【亲测有效】
linux·运维·服务器·docker·容器
网硕互联的小客服2 小时前
Linux root用户密码输入错误锁定策略,使用旧密码失败如何处理?
linux·服务器·网络·centos·自动化
vegetablec2 小时前
如何进行SQL数学计算_运用ROUND与CEIL处理数值精度
jvm·数据库·python
YXXY3132 小时前
基础IO的介绍(四)
linux
石小千2 小时前
部署Nextcloud与Onlyoffice(一)安装Nextcloud
linux·运维
coderlin_2 小时前
Langgraph项目 一(mysql,es,qdrant,embedding模块)
mysql·elasticsearch·embedding
倔强的石头1062 小时前
【Linux指南】基础IO系列(五):重定向原理与 dup2 系统调用 —— 改变 IO 流向的魔法
linux·运维·服务器
qq_189807032 小时前
c++怎么解决ifstream在读取UTF-16文件时的乱码_imbue用法【避坑】
jvm·数据库·python
吴烦恼的博客2 小时前
RK3588-kernel BringUp记录(二)
linux·kernel