LNMP(Linux+Nginx+MySQL/MariaDB+PHP)环境下,Debian系统的日志管理主要涵盖查看、轮转、自定义、监控及分析五大环节,以下是具体操作方法:
首先需明确各组件的默认日志路径,便于后续操作:
/var/log/nginx/access.log)、错误日志(/var/log/nginx/error.log);/var/log/php-fpm/目录下,文件名包含进程ID和日期(如www-data-*.log);/var/log/mysql/error.log)、通用查询日志(/var/log/mysql/general.log,需手动开启)。常用命令实现实时或定向查看:
tail -f命令跟踪日志更新(如Nginx访问日志:tail -f /var/log/nginx/access.log;PHP-FPM日志:tail -f /var/log/php-fpm/www-data-*.log);grep筛选关键词(如查找Nginx错误日志中的“500”错误:grep "500" /var/log/nginx/error.log);less命令逐页浏览(如less /var/log/nginx/error.log,按q退出);journalctl查看服务日志(如Nginx:journalctl -u nginx -f;MySQL:journalctl -u mysql -f)。使用系统自带的logrotate工具自动切割、压缩日志,避免磁盘空间耗尽:
/etc/logrotate.d/nginx文件,添加如下规则(示例为每天切割、保留30天、压缩旧日志):/var/log/nginx/*.log {
daily
missingok
rotate 30
compress
delaycompress
notifempty
create 0644 root adm
sharedscripts
postrotate
if [ -f /var/run/nginx.pid ]; then
kill -USR1 $(cat /var/run/nginx.pid)
fi
endscript
}
sudo logrotate -d /etc/logrotate.conf测试配置语法(无错误则执行sudo logrotate -f /etc/logrotate.conf强制执行)。通过自定义日志格式,可记录更详细的请求信息,便于后续分析:
/etc/nginx/nginx.conf,在http块中定义格式(如my_custom_format),并在server或location块中引用:http {
log_format my_custom_format '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" "$request_time"';
server {
access_log /var/log/nginx/access.log my_custom_format;
error_log /var/log/nginx/error.log;
}
}
/etc/php/7.x/fpm/php-fpm.conf(版本号替换为实际版本),修改error_log指令(如开启详细日志):error_log = /var/log/php-fpm/php-fpm.log
log_level = notice
修改后需重启PHP-FPM服务(sudo systemctl restart php7.x-fpm)。tail -f或journalctl持续跟踪关键日志(如Nginx错误日志、MySQL慢查询日志);goaccess /var/log/nginx/access.log --log-format=COMBINED -o /var/www/html/report.html);定期备份重要日志,避免数据丢失:
tar命令打包日志(如tar -czvf nginx_logs_$(date +%F).tar.gz /var/log/nginx/);find命令删除30天前的压缩日志(如find /var/log/nginx/ -type f -name "access.log.*.gz" -mtime +30 -exec rm {} \;)。通过以上步骤,可实现Debian环境下LNMP日志的有效管理,保障系统稳定性和可维护性。