Debian LAMP服务器故障排查技巧
系统日志是定位故障的“第一现场”,可通过以下命令查看实时或历史日志:
tail -f /var/log/syslog(涵盖系统启动、服务启停及错误信息);dmesg(诊断硬件驱动、内核级错误);journalctl -u servicename(如journalctl -u apache2查看Apache日志)。 通过日志中的错误关键词(如“Permission denied”“Port already in use”),可快速定位问题根源。使用systemctl命令确认LAMP核心服务(Apache、MySQL/MariaDB、PHP-FPM)的运行状态:
sudo systemctl status apache2 # 检查Apache状态 sudo systemctl status mysql # 检查MySQL状态(Debian默认) sudo systemctl status mariadb # 检查MariaDB状态(若使用) sudo systemctl status php7.x-fpm # 检查PHP-FPM状态(如php7.4-fpm) 若服务未运行,可使用sudo systemctl start servicename启动;若频繁崩溃,需结合日志分析具体原因。
使用以下命令查看系统资源占用情况,判断是否存在瓶颈:
top(按CPU使用率排序)、htop(更直观的交互式监控);df -h(查看磁盘使用率,避免根分区满导致服务崩溃);free -m(查看内存及Swap使用情况,内存不足会导致服务异常)。 资源占用过高(如CPU 100%、内存耗尽)可能导致服务无法响应,需及时清理或扩容。网络问题是导致服务器无法访问的常见原因,可通过以下命令排查:
ping google.com(检查服务器是否能访问外网);netstat -tulnp | grep -E '80|443|3306'(查看Apache(80/443)、MySQL(3306)端口是否监听);telnet localhost 80(从服务器本地测试端口是否可达);sudo ufw status(Debian默认防火墙),确保HTTP(80)、HTTPS(443)端口开放:sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw enable tail -f /var/log/apache2/error.log(获取具体错误信息,如配置文件语法错误、模块缺失);apachectl configtest(验证Apache配置文件的正确性,若有错误需修正后重启);sudo lsof -i :80找到占用进程,终止或更改端口:sudo kill -9 <PID> # 终止占用进程 sudo systemctl restart apache2 /var/www/html)的所有权和权限正确:sudo chown -R www-data:www-data /var/www/html # 所有权设为Apache用户 sudo find /var/www/html -type d -exec chmod 755 {} \; # 目录权限755 sudo find /var/www/html -type f -exec chmod 644 {} \; # 文件权限644 tail -f /var/log/mysql/error.log(诊断启动失败、连接问题,如密码错误、InnoDB损坏);mysqld --validate-config(验证/etc/mysql/my.cnf或/etc/my.cnf的配置正确性);sudo systemctl restart mysql(解决临时故障,如内存不足导致的崩溃);mysqlcheck工具修复:sudo mysqlcheck --all-databases --repair --optimize --user=root --password sudo systemctl stop mysql;sudo mysqld_safe --skip-grant-tables &;mysql -u root;FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码'; EXIT; sudo systemctl restart mysql。tail -f /var/log/php7.x-fpm.log(或/var/log/apache2/error.log,若PHP运行在Apache模块模式下);php -i | grep "Loaded Configuration File"(确认加载的php.ini文件路径),修改后重启PHP-FPM:sudo systemctl restart php7.x-fpm a2enmod启用:sudo a2enmod php7.x # 启用PHP模块 sudo systemctl restart apache2 info.php文件(<?php phpinfo(); ?>)并放置在网站根目录(如/var/www/html),通过浏览器访问http://服务器IP/info.php,确认PHP是否能正常解析。cron + rsync或Deja Dup工具每日备份网站数据及数据库;sudo apt update && sudo apt upgrade,安装安全补丁;Nagios、Zabbix等工具监控服务器资源(CPU、内存、磁盘),及时预警异常;mysql_secure_installation设置MySQL强密码,禁止远程root登录;配置防火墙限制访问来源。