在 Ubuntu 上,Apache(通常是 Apache2)的日志主要用于排查错误、分析访问情况和做安全审计。下面从位置、查看方式、常用命令、日志格式、轮转和分析几个方面说明。
Ubuntu 上 Apache2 的日志默认在:
/var/log/apache2/
常见日志文件:
| 文件 | 作用 |
|---|---|
access.log |
访问日志(谁访问了什么) |
error.log |
错误日志(PHP 报错、502、权限问题等) |
other_vhosts_access.log |
虚拟主机访问日志(多站点时) |
sudo tail -f /var/log/apache2/access.log
sudo tail -f /var/log/apache2/error.log
按
Ctrl + C退出
sudo tail -n 100 /var/log/apache2/error.log
sudo grep "500" /var/log/apache2/error.log
sudo grep "PHP" /var/log/apache2/error.log
awk '{print $1}' /var/log/apache2/access.log | sort | uniq -c | sort -nr | head
192.168.1.10 - - [10/Oct/2024:12:00:00 +0800] "GET /index.php HTTP/1.1" 200 1234
含义:
192.168.1.10:客户端 IP- -:用户身份(通常空)[时间]"请求方法 URL 协议"200:HTTP 状态码1234:返回字节数如果你配置了多个站点:
sudo tail -f /var/log/apache2/other_vhosts_access.log
或在站点配置中指定:
CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined
ErrorLog ${APACHE_LOG_DIR}/example.com-error.log
Ubuntu 用 logrotate 自动管理:
cat /etc/logrotate.d/apache2
一般:
手动执行:
sudo logrotate -f /etc/logrotate.d/apache2
sudo tail -f /var/log/apache2/error.log
Permission denied: /var/www/html
→ 检查目录权限和 www-data
→ 检查 DocumentRoot、.htaccess、Rewrite 规则
goaccess 可视化分析访问日志fail2ban 防暴力破解如果你愿意,可以告诉我:
我可以直接给你针对性命令。