Nginx 日志分割文档说明 ---谷营中西软件科技园

1、要解决问题描述:
当网站访问量大后,日志数据就会很多,如果全部写到一个日志文件中去,文件会变得越来越大。文件大速度就会慢下来,比如一个文件几百兆。写入日志的时候,会影响操作速度。
2、nignx没有自动分开文件存储日志的机制。由于nginx它不会帮你自动分文件保存。所以,需要自己编写脚本来实现。据说现在可以修改nginx的源码可以实现,但是太麻烦了。
3.首先我们需要创建名称为:nginx_log_xxx.sh 的shell脚本文件
4、编辑我们刚刚创建的脚本 vi nginx_log_xxx.log 并在脚本中输入一下文本

# /bin/bash
logs_path="/nas_iec/nginx_log/front/"
#以前的日志文件。
log_name="www_access_68.log"   
pid_path="/usr/local/nginx/logs/nginx.pid"
mv ${logs_path}${log_name} ${logs_path}${log_name}_$(date +%Y-%m-%d_%H%M%S).log
kill -USR1 `cat ${pid_path}`

解释一下脚本的内容:
    logs_path 就是我们日志存放的路径。
log_name 日志名称
pid_path  nginx.pid文件中保存的其实就是一个数字(自己可以打开看一下,我这里是24331),nginx 将其主进程的 pid (进程号)写入到了nginx.pid 文件中,所以可以通过cat命令直接拿到其主进程号,直接操作指定的进程号

Nginx 日志分割文档说明 ---谷营中西软件科技园_第1张图片
分割备份的原理就是将原来的文件移动并且重新命名,然后利用liunx的定时命令达到定时分割备份日志的目的。
当执行命令“kill -USR1 cat ${pid_path}”的时候,nginx.pid文件中保存的其实就是一个数字(自己可以打开看一下,我这里是24331),nginx 将其主进程的 pid (进程号)写入到了nginx.pid 文件中,所以可以通过cat命令直接拿到其主进程号,直接操作指定的进程号。

kill -USR1 cat ${pid_path} 就等同于
kill –USR1 894 #指定发信号(USR1)信号给这个进程编号。
5.编辑好内容之后—————保存。
6.为shell脚本赋权限可以让脚本执行。
Chmod u+x nginx_log_xxx.log
这样我们就可以执行我们的脚本命令了。
7.然后我们就定时执行脚本
设置上面的shell脚本文件加入到定时任务中去。crontab是linux下面一个定时任务进程。开机此进程会启动,它每隔一定时间会去自己的列表中看是否有需要执行的任务。

crontab  -e
 * 00 * * * /root /nginx_log_xxx.sh

会打开一个文件,加入上面的代码
格式为 “分 时 日 月 星期几 要执行的shell文件路径”。用*可以理解成“每”,每分钟,每个小时,每个月等等。
我设置是在每天的凌晨12点运行nginx_log_xxx.sh脚本,脚本的内容就是重新生成一个新的日志文件。
Nginx的日志的配置文件:
Nginx 日志分割文档说明 ---谷营中西软件科技园_第2张图片

你可能感兴趣的:(nginx,分割,日志备份,wanzuwodou,谷营中西)