温馨提示×

centos lnmp常见问题及解决方案

小樊
49
2025-10-13 09:19:36
栏目: 智能运维

CentOS LNMP常见问题及解决方案

1. 502 Bad Gateway错误

原因:Nginx无法连接到PHP-FPM进程,常见于PHP-FPM服务未启动、fastcgi_pass地址错误或进程数不足。
解决方案

  • 检查PHP-FPM服务状态:systemctl status php-fpm,若未运行则启动:systemctl start php-fpm
  • 确认Nginx配置中的fastcgi_pass指向正确(如Unix socket:unix:/var/run/php-fpm/php-fpm.sock或IP端口:127.0.0.1:9000),并与PHP-FPM配置(/usr/local/php/etc/php-fpm.conf/etc/php-fpm.d/www.conf)一致;
  • 调整PHP-FPM进程数:在PHP-FPM配置的pool段中增加pm.max_children(如设为50,根据服务器内存调整),避免进程数不足导致连接失败。

2. Nginx配置语法错误

原因:Nginx配置文件(如/etc/nginx/nginx.conf或站点配置文件)存在语法错误,导致服务无法启动或重载。
解决方案

  • 使用命令检查语法:nginx -t,若报错会提示错误位置(如“invalid parameter”或“unexpected ‘}’”);
  • 根据提示修复错误(如遗漏分号、括号不匹配),修复后重新加载配置:systemctl reload nginx

3. 权限问题(403 Forbidden/502错误)

原因:Nginx进程用户(如nginx)与PHP-FPM进程用户不一致,或网站文件/目录权限不足(如root所有导致Nginx无法读取)。
解决方案

  • 统一用户:修改Nginx配置(/etc/nginx/nginx.conf)中的userwww-data(或nginx),并在PHP-FPM配置(/usr/local/php/etc/php-fpm.conf/etc/php-fpm.d/www.conf)中设置user = www-datagroup = www-data,重启服务:systemctl restart nginx php-fpm
  • 调整权限:将网站目录(如/var/www/html)所有者设为www-data:www-data,文件权限设为644chmod 644 /var/www/html/*),目录权限设为755chmod 755 /var/www/html)。

4. 防火墙/SELinux阻止访问

原因:防火墙未开放HTTP(80)/HTTPS(443)端口,或SELinux处于Enforcing模式阻止Nginx/PHP-FPM进程访问文件。
解决方案

  • 开放防火墙端口:firewall-cmd --permanent --zone=public --add-service=httpfirewall-cmd --permanent --zone=public --add-service=https,然后重载:firewall-cmd --reload
  • 调整SELinux:临时设置为Permissive模式测试(setenforce 0),若问题解决则永久修改:编辑/etc/selinux/config,将SELINUX=enforcing改为SELINUX=permissive,重启系统;或添加SELinux布尔值允许Nginx访问数据库:setsebool -P httpd_can_network_connect_db 1

5. PHP-FPM进程无法启动

原因:配置文件语法错误、端口冲突(如9000端口被占用)、依赖库缺失(如libevent)。
解决方案

  • 检查配置语法:php-fpm -t,修复报错(如listen地址格式错误);
  • 检查端口占用:netstat -tuln | grep 9000,若被占用则修改PHP-FPM配置中的listen端口(如9001);
  • 安装依赖:yum install libevent libevent-devel -y,重新编译PHP-FPM。

6. MySQL/MariaDB无法启动

原因:配置文件错误(如/etc/my.cnfdatadir路径不存在)、端口冲突(3306被占用)、数据目录权限问题。
解决方案

  • 检查配置语法:mysqld --validate-config,修复datadir等参数错误;
  • 检查端口占用:netstat -tuln | grep 3306,修改my.cnf中的port为其他端口(如3307);
  • 调整数据目录权限:chown -R mysql:mysql /var/lib/mysql(默认数据目录),重启服务:systemctl restart mariadb

7. PHP扩展缺失(如fileinfoimagick

原因:安装PHP时未启用扩展,或扩展未正确安装。
解决方案

  • 编译安装时启用:修改LNMP安装脚本中的php.sh(如将with_fileinfo='--disable-fileinfo'改为--enable-fileinfo),重新运行脚本;
  • 后期添加扩展:使用LNMP的addons.sh脚本(如./addons.sh install fileinfo),或手动编译安装(如imagickyum install ImageMagick-devel -y,然后/usr/local/php/bin/phpize./configure --with-php-config=/usr/local/php/bin/php-configmake && make install,最后在php.ini中添加extension="imagick.so")。

8. 网站无法访问(无法连接)

原因:Nginx服务未启动、域名未解析到服务器IP、防火墙阻止访问。
解决方案

  • 检查Nginx状态:systemctl status nginx,若未运行则启动:systemctl start nginx
  • 检查域名解析:通过nslookup yourdomain.com确认解析到服务器IP;
  • 检查防火墙:firewall-cmd --list-all,确保httphttps服务已添加,若未添加则执行firewall-cmd --permanent --zone=public --add-service=httpfirewall-cmd --permanent --zone=public --add-service=https,然后重载。

0