Apache Ubuntu故障排查技巧
导读:Apache Ubuntu 故障排查技巧 一 快速定位流程 服务状态与系统日志 查看服务状态:sudo systemctl status apache2 -l --no-pager 查看服务日志:sudo journalctl -u a...
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:LISTEN或sudo fuser -n tcp 80
- 监听端口:
- 日志与访问
- 错误日志:
sudo tail -f /var/log/apache2/error.log - 访问日志:
/var/log/apache2/access.log
- 错误日志:
- 资源与文件系统
- 资源:
uptime、free -h、df -h - 变更生效:
sudo systemctl reload apache2(热加载)或sudo systemctl restart apache2(重启)
- 资源:
二 常见症状与处理要点
| 症状 | 优先检查 | 快速修复 |
|---|---|---|
| 服务无法启动 | systemctl status apache2、journalctl -u apache2、apache2ctl configtest |
修正语法错误;若端口冲突,释放端口或调整监听;必要时 systemctl restart apache2 |
| 端口被占用(80/443) | `ss -tulpen | grep -E ':80 |
| 403 Forbidden | 目录权限与 Directory 配置、AllowOverride、Require all granted |
目录权限一般为 755、文件 644;确保 www-data 可读;检查 .htaccess 与 AllowOverride |
| 404 Not Found | DocumentRoot 路径、DirectoryIndex、实际文件是否存在 |
修正 DocumentRoot 与 Directory 路径;补充缺失索引文件;核对站点启用状态 |
| 500 Internal Server Error | error.log 首行报错、.htaccess/PHP 语法、模块缺失 |
依据日志定位文件/模块;注释可疑 .htaccess;安装缺失模块并 a2enmod <
模块名>
|
| 网站变慢或卡顿 | top/htop、free -h、ss -s、数据库慢查询 |
优化代码与查询;调整 KeepAlive 与 MPM 参数;必要时扩容或做缓存 |
| PHP 页面空白/报错 | PHP 错误日志(如 /var/log/php8.x-fpm.log)、phpinfo() |
打开错误显示或查看 PHP-FPM 日志;修正语法/路径/权限问题 |
| HTTPS/证书问题 | 证书路径、权限、SSLEngine on、端口 443 监听 |
校正证书与私钥路径与权限(通常为 600/644);确认 a2enmod ssl 与站点启用 |
| SELinux/AppArmor 拒绝 | `dmesg | grep -i denied、journalctl |
| 防火墙阻断 | sudo ufw status、sudo iptables -S、sudo nft list ruleset |
放行 80/443:sudo ufw allow 80,443/tcp 或相应防火墙规则放行 |
| 以上要点对应的命令与路径均为 Ubuntu 上 Apache 的常用实践,可快速定位并修复大多数常见问题。 |
三 日志与诊断命令速查
- 服务与系统日志
sudo systemctl status apache2 -l --no-pagersudo journalctl -u apache2 --since today --no-pager
- 配置与语法
sudo apache2ctl configtestls /etc/apache2/sites-enabled/(核对启用的站点)
- 端口与进程
sudo ss -tulpen | grep -E ':80|:443'sudo lsof -iTCP:80 -sTCP:LISTEN或sudo 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
- 实时查看错误:
- 资源与健康
uptime、free -h、df -htop/htop、iotop、vmstat 1 10
- 网络连通与路由
ping、traceroute、curl -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,确认无异常再对外恢复全量流量
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Apache Ubuntu故障排查技巧
本文地址: https://pptw.com/jishu/776198.html
