Debian如何解决LNMP问题
导读:Debian 上排查与修复 LNMP 的实用步骤 一 快速自检与恢复 更新索引并确认服务状态:sudo apt update;sudo systemctl status nginx php*-fpm mariadb。若未运行,使用 sud...
Debian 上排查与修复 LNMP 的实用步骤
一 快速自检与恢复
- 更新索引并确认服务状态:sudo apt update;sudo systemctl status nginx php*-fpm mariadb。若未运行,使用 sudo systemctl start 启动对应服务。
- 核对 PHP 版本与套接字路径:ls /run/php/ 常见为 php7.4-fpm.sock 或 php8.x-fpm.sock;Nginx 里 fastcgi_pass 必须与之完全一致。
- 语法与重载:sudo nginx -t & & sudo systemctl reload nginx;sudo systemctl restart php*-fpm。
- 权限与目录:确保网站根目录(如 /var/www/html)对 www-data 可读,PHP-FPM 池用户与组通常为 www-data。
- 防火墙放行:如使用 UFW,执行 sudo ufw allow ‘Nginx Full’。
- 快速连通性测试:在 /var/www/html 放置 ,访问 http://服务器IP/info.php 验证。
二 Nginx 无法访问或 502/504 错误
- 端口与进程:ss -tlnp | grep ‘:80|:443’ 确认 Nginx 监听;若端口被占用,停用占用者或修改 Nginx 监听端口。
- 配置语法与包含文件:sudo nginx -t;确认站点配置中 include snippets/fastcgi-php.conf; 存在且路径正确。
- PHP-FPM 通信与权限:
- 核对 fastcgi_pass unix:/run/php/phpX.Y-fpm.sock; 与 /etc/php/X.Y/fpm/pool.d/www.conf 中的 listen 一致;
- 若使用 TCP 方式:fastcgi_pass 127.0.0.1:9000; 需确保 php-fpm 监听该端口;
- 套接字权限:/run/php/ 目录与 .sock 文件应允许 www-data 访问(检查 pool 的 listen.owner/listen.group 与权限)。
- 资源与超时:502/504 常与上游无响应或超时有关,适当增加 fastcgi_read_timeout、fastcgi_send_timeout;检查系统资源(内存、CPU、磁盘)。
- 日志定位:tail -f /var/log/nginx/error.log,依据报错修正配置或恢复服务。
三 PHP 相关问题
- 安装与启用:sudo apt install php-fpm php-mysql;启动并设置开机自启:sudo systemctl start phpX.Y-fpm & & sudo systemctl enable phpX.Y-fpm。
- 安全与解析:编辑 /etc/php/X.Y/fpm/php.ini,设置 cgi.fix_pathinfo=0,防止路径解析漏洞。
- 与 Nginx 对接:确保 Nginx 的 location ~ .php$ 段包含 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 否则会报 “No input file specified”。
- 日志排查:tail -f /var/log/php/X.Y-fpm.log 或 /var/log/php/X.Y-fpm/error.log,定位语法错误、扩展缺失、权限不足等。
四 MariaDB MySQL 无法连接或权限错误
- 服务状态:sudo systemctl status mariadb;若未运行,sudo systemctl start mariadb 并设置开机自启。
- 安全初始化:sudo mysql_secure_installation,设置 root 密码、移除匿名用户、禁止远程 root 登录、删除测试库。
- 远程访问:仅在需要时开放,编辑 /etc/mysql/mariadb.conf.d/50-server.cnf,将 bind-address 改为 0.0.0.0(或注释掉该行),并在数据库中为应用创建专用用户并授予权限:
- CREATE USER ‘app’@‘%’ IDENTIFIED BY ‘强密码’;
- GRANT ALL ON appdb.* TO ‘app’@‘%’; FLUSH PRIVILEGES;
- 防火墙与云安全组:放行 3306/TCP(如确需远程);优先使用 SSH 隧道或内网访问提升安全性。
五 日志与常见修复命令清单
- 日志路径:
- Nginx:/var/log/nginx/error.log、access.log
- PHP-FPM:/var/log/php/X.Y-fpm.log 或 /var/log/php/X.Y-fpm/error.log
- MariaDB:/var/log/mysql/error.log
- 常用命令:
- 重载与重启:sudo nginx -t & & sudo systemctl reload nginx;sudo systemctl restart phpX.Y-fpm;sudo systemctl restart mariadb
- 版本与套接字:php -v;ls /run/php/;ss -lntp | grep php
- 防火墙:sudo ufw status;sudo ufw allow ‘Nginx Full’
- 高频修复:
- 配置变更后未生效:执行 sudo nginx -t & & sudo systemctl reload nginx
- PHP-FPM 启动失败:核对 listen 路径/端口与权限,必要时查看 PHP-FPM 日志
- 403 Forbidden:检查目录权限与 Nginx user 配置(常见为 www-data)
- 数据库连接失败:确认服务运行、用户权限、bind-address 与防火墙设置
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian如何解决LNMP问题
本文地址: https://pptw.com/jishu/748756.html
