当前位置: 首页 > news >正文

基于 CentOS 7.9 分离部署 LAMP+NFS — 常见报错查询手册

本篇文档由AI生成,仅供随便看看(◍⬮⩋⬮◍)

一、所有服务器基础环境报错

1. yum 安装软件失败,提示Cannot find a valid baseurl for repo

现象
yum makecache或安装时报错 “Could not resolve host” 或 “No more mirrors to try”。

原因

  • 阿里源配置不正确或网络不通。

  • 服务器 DNS 未配置导致无法解析mirrors.aliyun.com

解决

# 检查网络连通性 ping mirrors.aliyun.com # 若不通,先配置 DNS echo "nameserver 114.114.114.114" >> /etc/resolv.conf # 重新下载 repo 文件 curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo yum clean all && yum makecache

2. 基础依赖包安装提示 “No package xxx available”

现象
yum -y install gcc pcre-devel ...时某个包找不到,例如libpng-devel

原因

  • 未安装 EPEL 源或 EPEL 源未启用。

  • 包名在 CentOS 7 中略有不同。

解决

# 确保 EPEL 已配置 yum install -y epel-release # 查找包的正确名称 yum search libpng # 常见包名修正(CentOS 7): # libpng-devel → libpng-devel (存在) # 若缺失 freetype-devel,尝试 freetype-devel yum install -y freetype-devel

二、NFS 服务器端报错

1. 执行exportfs -rav报错:exportfs: No host name given

现象
exportfs: /etc/exports:1: bad option list

原因
/etc/exports格式错误,常见是 IP 地址与选项之间缺少空格,或使用了中文符号。

解决

检查 /etc/exports,确保每行格式为:

<共享目录> <客户端IP>(选项) [客户端IP(选项)]

示例正确写法:

/nfs_share/www 11.11.11.3(rw,sync,no_root_squash) 11.11.11.4(rw,sync,no_root_squash)

2. 客户端挂载时提示mount.nfs: access denied by server

现象
mount -t nfs 11.11.11.6:/nfs_share/www /mnt失败。

原因

  • NFS 服务器/etc/exports中未授权该客户端 IP。

  • 客户端 IP 与服务器 exports 中填写的 IP 不一致。

  • NFS 服务未启动或 rpcbind 未运行。

解决
NFS 服务器上:

# 确认服务状态 systemctl status rpcbind nfs-server # 重新加载配置 exportfs -rav # 查看实际共享列表 showmount -e 11.11.11.6

在客户端再次尝试挂载,若仍失败,检查服务器防火墙(若未关闭)。

3. 挂载后,客户端写入文件提示Permission denied

现象
Apache/PHP 服务器在挂载目录/usr/local/apache/htdocs/下创建文件时权限不足。

原因

  • NFS 服务器上共享目录的属主 UID/GID 与客户端运行进程的 UID/GID 不匹配。

  • 客户端挂载时使用了root_squash(将 root 映射为 nobody),而操作者为 root。

  • 未按文章统一apache用户的 UID/GID(需为 48/48)。

解决
步骤1:在所有服务器上统一 apache 用户 UID/GID

# 在每台服务器上检查 id apache # 应显示 uid=48(apache) gid=48(apache) groups=48(apache) # 如果不存在或不一致,按以下方式重建或修改 groupadd -g 48 apache useradd -r -u 48 -g 48 -M -s /sbin/nologin apache

步骤2:在 NFS 服务器上修正目录权限

chown -R apache:apache /nfs_share/www chmod -R 755 /nfs_share/www

步骤3:在客户端重新挂载

umount /usr/local/apache/htdocs mount -t nfs 11.11.11.6:/nfs_share/www /usr/local/apache/htdocs

4. 客户端挂载时提示mount.nfs: requested NFS version or transport protocol is not supported

原因
NFS 服务器只支持较高版本,客户端未指定版本或内核不兼容。

解决
指定 NFS 版本挂载(CentOS 7 通常用 nfs4):

mount -t nfs4 11.11.11.6:/nfs_share/www /usr/local/apache/htdocs 或尝试 -o vers=4。

三、MySQL 服务器报错

1. 初始化数据库时无输出或报错error while loading shared libraries: libaio.so.1

现象
执行mysqld --initialize报错 “libaio.so.1: cannot open shared object file”。

原因
未安装libaio依赖。

解决

yum install -y libaio # 重新初始化 /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/mysql3306

2. 初始化成功但忘记保存临时密码

现象
屏幕输出已滚过,未记录临时密码。

解决
临时密码保存在 MySQL 错误日志中:

grep 'temporary password' /data/mysql/mysql3306/*.err

或删除数据目录重新初始化(会清空数据,仅限新装):

rm -rf /data/mysql/mysql3306/* /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/mysql3306

3. 客户端连接报错ERROR 1130: Host '11.11.11.4' is not allowed to connect to this MySQL server

原因

  • MySQL 的bind-address未绑定正确 IP 或绑定了 127.0.0.1。

  • 用户discuzu未创建或仅允许 localhost 连接。

解决
检查/etc/my.cnf中的bind-address

bind-address=11.11.11.5 # 确保为本机真实 IP,不可为 127.0.0.1

然后登录 MySQL(本机)授权:

GRANT ALL PRIVILEGES ON discuzdb.* TO 'discuzu'@'11.11.11.4' IDENTIFIED BY '1'; FLUSH PRIVILEGES;

如果用户已存在但主机限制为localhost,可删除重建或更新mysql.user表。

4. 启动 MySQL 失败,systemctl start mysqld无反应或报错

现象
systemctl start mysqld后无进程,ss -tulanp | grep 3306为空。

排查

# 查看详细错误 journalctl -xe -u mysqld cat /data/mysql/mysql3306/*.err

常见错误:数据目录权限不对、my.cnf语法错误。

解决

chown -R mysql:mysql /data/mysql/mysql3306 # 校验配置文件 /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --validate-config

四、PHP‑FPM 服务器报错

1. 编译 PHP 时configure报错:configure: error: Please reinstall the libzip distribution

现象

checking for libzip... configure: error: Please reinstall the libzip distribution

原因
CentOS 7 默认 libzip 版本为 0.10,PHP 8.2 需要 ≥1.3。

解决
按博客步骤安装 Remi 源并提供新版 libzip:

yum -y install epel-release yum-utils yum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpm yum-config-manager --enable remi yum -y install libzip5-devel

若仍报错,检查 pkg-config 路径:

pkg-config --modversion libzip # 应显示 1.7.x 或更高

2. 编译make阶段报错,如virtual memory exhausted: Cannot allocate memory

原因
内存不足,-j $(nproc)导致并发编译消耗过多资源。

解决

make clean make -j 1 # 单线程编译 make install

3. PHP‑FPM 启动后,ss -tulanp | grep 9000无监听

现象
启动 php-fpm 无报错,但 9000 端口未监听。

排查
检查 php-fpm 配置错误:

/usr/local/php82/sbin/php-fpm -t

若报错如[pool www] user apache does not exist,则需创建 apache 用户(参考 NFS 章节统一 UID/GID)。
若报错listen.allowed_clients语法问题,请检查配置格式。

4. Apache 转发 .php 请求时返回 502 Bad Gateway

现象
访问 Discuz 或 PHP 页面出现 502。

原因

  • PHP‑FPM 未启动或 9000 端口无法通信。

  • listen.allowed_clients中未包含 Apache 的 IP(11.11.11.3)。

  • 防火墙阻挡(即使文章关闭,可能被误开启)。

解决
在 PHP 服务器上确认:

ss -tulanp | grep 9000 # 应显示 0.0.0.0:9000

检查/usr/local/php82/etc/php-fpm.d/www.conf

listen.allowed_clients = 11.11.11.3

如修改配置,需重启 php-fpm:

systemctl restart php-fpm

从 Apache 服务器测试连通性:

telnet 11.11.11.4 9000

5. 访问 .php 文件直接下载或显示源代码

原因
Apache 未配置代理转发或mod_proxy_fcgi模块未启用。

解决
在 Apache 服务器上检查:

/usr/local/apache/bin/httpd -M | grep proxy_fcgi

如果无输出,编辑httpd.conf取消注释(或确认已写入):

LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

并确保虚拟主机包含:

<FilesMatch \.php$> SetHandler "proxy:fcgi://11.11.11.4:9000" </FilesMatch>

重启 Apache:systemctl restart httpd


五、Apache 服务器报错

1. 编译 APR 或 Apache 时报error: APR not found

原因
未提前编译安装 APR 或路径指定错误。

解决
必须按顺序先安装 APR 和 APR-util,且 Apache./configure时正确指定:

--with-apr=/usr/local/apr \ --with-apr-util=/usr/local/apr-util

2. Apache 启动失败:Could not reliably determine the server's fully qualified domain name

解决
编辑httpd.conf,设置ServerName(博客已通过 sed 设置):

sed -i "s@#ServerName www.example.com:80@ServerName $(uname -n)@g" /usr/local/apache/conf/httpd.conf

3. Apache 启动后,虚拟主机不生效,访问站点出现默认页面或 404

排查

# 检查加载的虚拟主机 /usr/local/apache/bin/httpd -S

输出中应包含web1.Hanyj.com
若未包含,检查httpd.conf是否包含了虚拟主机配置文件:

grep 'httpd-vhosts.conf' /usr/local/apache/conf/httpd.conf

应有一行Include conf/extra/httpd-vhosts.conf(无注释符)。

4. 访问 Discuz 安装页面时提示No input file specified.

原因
NFS 挂载的站点目录内没有 PHP 文件或目录权限导致 Apache 无法读取。

解决
在 Apache 服务器上检查:

ls -l /usr/local/apache/htdocs/web1.Hanyj.com/ # 确保 upload 内容已被正确复制

检查 NFS 挂载是否正常:

df -h | grep htdocs

若为空,重新挂载 NFS。


六、挂载 NFS 及 Fstab 相关报错

1. 重启服务器后,挂载点丢失

原因
/etc/fstab配置错误或缺少_netdev选项,导致在网络服务启动前尝试挂载 NFS。

解决
确保 fstab 条目包含_netdevdefaults(博客已使用),另建议添加nofail避免挂载失败导致启动卡住:

11.11.11.6:/nfs_share/www /usr/local/apache/htdocs nfs defaults,_netdev,nofail 0 0

2. 卸载挂载点时提示umount: target is busy

解决

# 查看占用进程 lsof /usr/local/apache/htdocs # 停止相关服务(Apache/php-fpm),再卸载 systemctl stop httpd umount /usr/local/apache/htdocs

七、Discuz 部署与安装报错

1. 安装时数据库连接失败:Access denied for user 'discuzu'@'...'

排查

  • 检查 MySQL 上discuzu用户的主机是否为 PHP 服务器 IP(11.11.11.4)。

  • 密码是否正确(博客中为1)。

  • 在 PHP 服务器上测试连接:

/usr/local/php82/bin/php -r "new PDO('mysql:host=11.11.11.5;dbname=discuzdb','discuzu','1');"

若报错Could not connect,参考 MySQL 错误排查。

2. 安装过程中提示目录无写入权限

现象
config/config_global.php等文件无法写入。

原因
NFS 共享目录属主或权限不正确。必须在 NFS 服务器上将web1.Hanyj.com目录的属主设为apache:apache且权限 755,且所有服务器上apache的 UID/GID 一致为 48。

解决
在 NFS 服务器执行:

chown -R apache:apache /nfs_share/www/web1.Hanyj.com chmod -R 755 /nfs_share/www/web1.Hanyj.com

若修改后仍然无效,在 PHP/Apache 服务器上测试写入:

sudo -u apache touch /usr/local/apache/htdocs/web1.Hanyj.com/test.txt

若失败,则 NFS 权限映射仍有问题,重新检查 UID/GID 统一。

3. 安装完成后访问首页空白或 500 错误

排查

  • 检查 Apache 错误日志:/usr/local/apache/logs/web1-error_log

  • PHP 错误日志(需开启 display_errors 或查看 php-fpm 日志)。

  • 常见原因:PHP 缺少必要扩展(如mysqligd)。确认编译时已包含--with-mysqli--enable-gd


八、其他意外错误

1. 防火墙/SELinux 未完全关闭导致服务间通信失败

现象
Apache 转发 PHP 时超时,或 MySQL 连接被拒。

快速验证

# 所有机器执行 getenforce # 应显示 Disabled systemctl status firewalld # 应显示 inactive

若未关闭,执行:

setenforce 0 sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config systemctl stop firewalld systemctl disable firewalld

2. 时间不同步导致 NFS 文件时间戳混乱或 MySQL 连接异常

解决
所有服务器配置 NTP 同步:

yum install -y ntpdate ntpdate ntp.aliyun.com # 添加定时任务 echo "0 */6 * * * /usr/sbin/ntpdate ntp.aliyun.com" >> /var/spool/cron/root
http://www.zskr.cn/news/1486929.html

相关文章:

  • DSP56362 EVM到DSP56364的软件移植:硬件差异管理与开发实践
  • 2026年实测AI论文软件指南(高分定稿版)
  • 终极DDrawCompat指南:让经典游戏在现代Windows上完美运行的免费兼容性神器
  • 四川地区2026年6月8日成都市场盛世钢联建筑钢材价格行情 - 四川盛世钢联营销中心
  • 博士学位答辩PPT分享 | 数据驱动的跨声速气动弹性建模与复杂耦合模式分析
  • QuickBMS:游戏资源逆向工程与格式解析的瑞士军刀
  • 小说下载器完整指南:轻松保存100+网站小说,构建个人数字图书馆
  • MPC107 Rev 1.3与1.4深度对比:从100MHz到133MHz的硬件升级与避坑指南
  • DayZ社区离线模式完整指南:如何打造专属单机生存体验
  • 2026 年 6 月最新 | 自动化焊接生产线厂家推荐|靠谱焊接整线厂商,支持定制一站式焊接方案
  • Windows风扇控制终极指南:5分钟学会用FanControl告别电脑噪音烦恼
  • 终极Windows 11系统优化指南:5大模块深度解析与实战应用
  • 鸿蒙原生应用实战(四):收藏页面与底部导航实现——状态管理与跨页面交互
  • 2026广州黄金回收权威测评!优质品牌阶梯排名公示 - 开心测评
  • 图论最短路径:Dijkstra 与 A* 的工程应用对比与实现
  • 购买后想退款,亿企赢退款流程是什么 - 新闻快传
  • 2026.6长沙装修公司实地探访:从量房到售后的真实感受分享 - 奔跑123
  • # 2026九江免砸砖漏水维修全攻略|卫生间/阳台/厨房/屋顶根治方法+避坑指南|苏易修缮 - 苏易修缮
  • Linux 磁盘操作作业
  • 2026广州黄金回收深度测评!正规连锁品牌口碑夺冠 - 开心测评
  • 徐州SEO优化公司|官网收录与排名维护,徐州SEO托管服务商选择指南 - 招财兔数字员工
  • 猫抓资源嗅探扩展:全方位指南助你轻松下载网页媒体资源
  • 基于MR32微控制器的三相感应电机变频调速与PFC系统软件架构解析
  • 干皮用什么眼油淡化细纹?这3款深度润养改善干燥纹路 - 全网最美
  • 别再踩坑了!CentOS7上Oracle 12c保姆级安装避坑指南(附中文方块字解决方案)
  • 4岁AI玩具推荐:踩了半年坑,最后只有奇多多留下来了 - 新闻快传
  • Matlab PSO并行优化工具包:一键运行+多轮迭代结果+Simulink联动可视化
  • Azure上微调GPT-3.5-Turbo全流程实操指南
  • 构建高性能数据持久化层:XHS-Downloader异步存储架构设计
  • 九大网盘直链下载完整指南:如何一键获取真实下载地址的终极解决方案