ubuntu

Apache2在Ubuntu上如何进行故障排查

小樊
40
2025-11-25 07:35:55
栏目: 智能运维

Ubuntu 上 Apache2 故障排查流程

一 快速定位与系统状态检查

二 常见故障与修复对照表

症状 快速检查 修复建议
服务启动失败,提示 Address already in use ss -tulpen grep ‘:80’ 查看占用;结束冲突进程或调整 /etc/apache2/ports.conf 的 Listen 端口,并同步虚拟主机端口;重启服务
启动报错 Invalid command ‘SSLEngine’ apachectl configtest 启用 SSL 模块:sudo a2enmod ssl;如未安装 OpenSSL:sudo apt install openssl;重启服务
403 Forbidden 检查目录权限与 Directory 配置 网站目录权限建议 755,文件 644;确保 DocumentRoot 的 包含 Require all granted;检查 .htaccess 与所有权
500 Internal Server Error tail -f error.log 定位模块/脚本错误 依据日志修复语法或后端错误;必要时开启更详细日志级别以排查
无法访问网站(浏览器超时/拒绝) ss -tulpen grep ‘:80’;ufw/云安全组;确认 Listen/虚拟主机端口一致
AH00558 Could not reliably determine the server’s fully qualified domain name 查看 apache2 启动输出 在 /etc/apache2/apache2.conf 或虚拟主机中添加 ServerName localhost 或实际域名

以上检查与修复要点涵盖端口冲突、模块缺失、权限配置、语法校验与网络放行等常见场景。

三 配置语法与虚拟主机检查

四 日志分析与持续监控

五 一键排查脚本示例

#!/usr/bin/env bash
set -Eeuo pipefail

echo "=== Apache2 故障排查 ==="
echo

echo "[1/7] 服务状态"
sudo systemctl status apache2 -l --no-pager || true
echo

echo "[2/7] 最新错误日志(最近20行)"
sudo tail -n20 /var/log/apache2/error.log || echo "无法读取 /var/log/apache2/error.log"
echo

echo "[3/7] 端口监听(80/443)"
ss -tulpen | grep -E ':80|:443' || echo "未检测到 80/443 监听"
echo

echo "[4/7] 配置语法"
sudo apachectl configtest
echo

echo "[5/7] UFW 防火墙状态"
sudo ufw status || echo "未安装或未启用 UFW"
echo

echo "[6/7] 站点启用情况"
ls -1 /etc/apache2/sites-enabled/ 2>/dev/null || echo "无启用站点"
echo

echo "[7/7] 模块启用情况(ssl rewrite proxy proxy_http)"
for m in ssl rewrite proxy proxy_http; do
  if a2query -m "$m" &>/dev/null; then
    echo "  [OK] $m 已启用"
  else
    echo "  [MISS] $m 未启用(可运行:sudo a2enmod $m)"
  fi
done
echo

echo "排查完成。根据上方提示修复后,执行:sudo systemctl restart apache2"

0
看了该问题的人还看了