温馨提示×

Apache Ubuntu故障排查技巧

小樊
37
2025-12-19 00:58:37
栏目: 智能运维

Apache Ubuntu 故障排查技巧

一 快速定位流程

  • 服务状态与系统日志
    • 查看服务状态:sudo systemctl status apache2 -l --no-pager
    • 查看服务日志:sudo journalctl -u apache2 -n 50 --no-pager
  • 配置语法与虚拟主机
    • 语法检查:sudo apache2ctl configtest(或 apachectl configtest
    • 配置目录:/etc/apache2/apache2.conf,站点配置在 /etc/apache2/sites-available/,启用站点使用 a2ensite <站点名>a2dissite <旧站点名> 切换
  • 端口与进程
    • 监听端口:sudo ss -tulpen | grep -E ':80|:443'
    • 占用定位:sudo lsof -iTCP:80 -sTCP:LISTENsudo fuser -n tcp 80
  • 日志与访问
    • 错误日志:sudo tail -f /var/log/apache2/error.log
    • 访问日志:/var/log/apache2/access.log
  • 资源与文件系统
    • 资源:uptimefree -hdf -h
    • 变更生效:sudo systemctl reload apache2(热加载)或 sudo systemctl restart apache2(重启)

二 常见症状与处理要点

症状 优先检查 快速修复
服务无法启动 systemctl status apache2journalctl -u apache2apache2ctl configtest 修正语法错误;若端口冲突,释放端口或调整监听;必要时 systemctl restart apache2
端口被占用(80/443) `ss -tulpen grep -E ':80
403 Forbidden 目录权限与 Directory 配置、AllowOverrideRequire all granted 目录权限一般为 755、文件 644;确保 www-data 可读;检查 .htaccessAllowOverride
404 Not Found DocumentRoot 路径、DirectoryIndex、实际文件是否存在 修正 DocumentRootDirectory 路径;补充缺失索引文件;核对站点启用状态
500 Internal Server Error error.log 首行报错、.htaccess/PHP 语法、模块缺失 依据日志定位文件/模块;注释可疑 .htaccess;安装缺失模块并 a2enmod <模块名>
网站变慢或卡顿 top/htopfree -hss -s、数据库慢查询 优化代码与查询;调整 KeepAliveMPM 参数;必要时扩容或做缓存
PHP 页面空白/报错 PHP 错误日志(如 /var/log/php8.x-fpm.log)、phpinfo() 打开错误显示或查看 PHP-FPM 日志;修正语法/路径/权限问题
HTTPS/证书问题 证书路径、权限、SSLEngine on、端口 443 监听 校正证书与私钥路径与权限(通常为 600/644);确认 a2enmod ssl 与站点启用
SELinux/AppArmor 拒绝 `dmesg grep -i deniedjournalctl
防火墙阻断 sudo ufw statussudo iptables -Ssudo nft list ruleset 放行 80/443sudo ufw allow 80,443/tcp 或相应防火墙规则放行
以上要点对应的命令与路径均为 Ubuntu 上 Apache 的常用实践,可快速定位并修复大多数常见问题。

三 日志与诊断命令速查

  • 服务与系统日志
    • sudo systemctl status apache2 -l --no-pager
    • sudo journalctl -u apache2 --since today --no-pager
  • 配置与语法
    • sudo apache2ctl configtest
    • ls /etc/apache2/sites-enabled/(核对启用的站点)
  • 端口与进程
    • sudo ss -tulpen | grep -E ':80|:443'
    • sudo lsof -iTCP:80 -sTCP:LISTENsudo fuser -n tcp 80
  • 日志分析
    • 实时查看错误:sudo tail -f /var/log/apache2/error.log
    • 按关键字检索:grep -i "error\|fail\|denied" /var/log/apache2/error.log | tail -50
    • 访问统计:awk '{print $9}' /var/log/apache2/access.log | sort | uniq -c | sort -nr
  • 资源与健康
    • uptimefree -hdf -h
    • top/htopiotopvmstat 1 10
  • 网络连通与路由
    • pingtraceroutecurl -Iv https://你的域名

四 变更与回滚的安全做法

  • 配置版本控制:对 /etc/apache2/ 使用 Git 管理,变更前 git commit -a -m "描述",便于快速回滚
  • 操作留痕:排查会话记录 script -a ~/troubleshooting_$(date +%F_%H%M%S).log
  • 配置测试与灰度:每次修改先 apache2ctl configtest,再 systemctl reload 验证;必要时先 a2dissite 旧站点、a2ensite 新站点并观察日志
  • 备份关键文件:如 cp /etc/apache2/sites-available/000-default.conf{,.bak-$(date +%F)}
  • 变更后观察:持续 tail -f /var/log/apache2/error.log,确认无异常再对外恢复全量流量

0