如何在 Alpine Linux 中安装和配置 logrotate
我安装了 Alpine Linux 作为 LXD(“Linux 容器”)。如何安装 logrotate 来配置 Nginx 服务器的日志轮换?
您需要使用apk 命令来安装 logrotate。这是一个易于使用的系统管理工具,可管理大量日志文件。您可以执行自动轮换、压缩、删除等操作。本教程向您展示如何在 lxd 或 VM 或任何其他云服务中运行的 Alpine Linux 上使用 logrotate 管理日志文件。
您需要使用apk 命令来安装 logrotate。这是一个易于使用的系统管理工具,可管理大量日志文件。您可以执行自动轮换、压缩、删除等操作。本教程向您展示如何在 lxd 或 VM 或任何其他云服务中运行的 Alpine Linux 上使用 logrotate 管理日志文件。
教程详细信息 | |
---|---|
难度等级 | 简单的 |
Root 权限 | 是的 |
要求 | Linux 终端 |
类别 | 系统管理 |
操作系统兼容性 | Alpine • Linux |
预计阅读时间 | 2 分钟 |
在 Alpine Linux 中安装和配置 logrotate
键入以下命令:
# apk add logrotate
示例输出:
fetch http://dl-cdn.alpinelinux.org/alpine/v3.8/main/x86_64/APKINDEX.tar.gz fetch http://dl-cdn.alpinelinux.org/alpine/v3.8/community/x86_64/APKINDEX.tar.gz (1/2) Installing popt (1.16-r7) (2/2) Installing logrotate (3.14.0-r0) Executing busybox-1.28.4-r3.trigger OK: 90 MiB in 82 packages
配置
你的 logrotate 将会通过 cron job每天被调用。下面是一个默认的 cronjob:
# cat /etc/periodic/daily/logrotate
示例输出:
#!/bin/sh if [ -f /etc/conf.d/logrotate ]; then . /etc/conf.d/logrotate fi if [ -x /usr/bin/cpulimit ] && [ -n "$CPULIMIT" ]; then _cpulimit="/usr/bin/cpulimit --limit=$CPULIMIT" fi $_cpulimit /usr/sbin/logrotate /etc/logrotate.conf EXITVALUE=$? if [ $EXITVALUE != 0 ]; then /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]" fi exit 0
默认 logrotate 文件位于 /etc/logrotate.conf:
# cat /etc/logrotate.conf
示例输出:
# see "man logrotate" for details # rotate log files weekly weekly # keep 4 weeks worth of backlogs rotate 4 # create new (empty) log files after rotating old ones create # use date as a suffix of the rotated file dateext # exclude alpine files tabooext + .apk-new # uncomment this if you want your log files compressed compress # main log file /var/log/messages {} # apk packages drop log rotation information into this directory include /etc/logrotate.d # system-specific logs may be also be configured here.
对于 nginx 服务器,创建/更新 /etc/logrotate.d/nginx 文件如下:
# cat /etc/logrotate.d/nginx
示例输出:
/var/log/nginx/*.log { missingok sharedscripts postrotate /etc/init.d/nginx --quiet --ifstarted reopen endscript }
这意味着:
- /var/log/nginx/*.log– 处理 /var/log/nginx/ 目录中的所有日志文件。
- missingok– 不要因任何错误而停止并继续处理下一个日志文件。
- sharedscripts– sharedscripts 意味着 postrotate 脚本只会运行一次(在旧日志被压缩之后),而不是对每个被轮换的日志运行一次。
- postrotate ... script ... endscript– 压缩旧日志后运行此脚本。在这种情况下,重新打开 nginx 的日志文件。
总结
这将每周轮换日志文件。有关更多信息,请通过键入以下 man 命令查看手册页:
$ man logrotate
您可能需要在 Alpine Linux 中添加/安装手册页,以便 man 命令可以正常工作。查看本系列的其余内容:
本条目是“在Alpine Linux 中安装 Linux、Nginx、MySQL/MariaDB、PHP(LEMP 堆栈)”系列中的第 3 篇(共4 篇)。继续阅读本系列的其余部分: