系统环境centos7.5everything版

设置Nginx开机自启

进入到/lib/systemd/system/目录
[root@iz2z init.d]# cd /lib/systemd/system/
创建nginx.service文件,并编辑
#vim nginx.service 内如如下:

[Unit]
Description=nginx service
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true

[Install]
WantedBy=multi-user.target

Unit]:服务的说明
Description:描述服务
After:描述服务类别
[Service]服务运行参数的设置
Type=forking是后台运行的形式
ExecStart为服务的具体运行命令
ExecReload为重启命令
ExecStop为停止命令
PrivateTmp=True表示给服务分配独立的临时空间
注意:
[Service]的启动、重启、停止命令全部要求使用绝对路径
[Install]运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为3 保存退出。
加入开机自启动
systemctl enable nginx
如果不想开机自启动了,可以使用下面的命令取消开机自启动
systemctl disable nginx
服务的启动/停止/刷新配置文件/查看状态 复制代码
systemctl start nginx.service 启动nginx服务
systemctl stop nginx.service 停止服务
systemctl restart nginx.service 重新启动服务
systemctl list-units --type=service 查看所有已启动的服务
systemctl status nginx.service 查看服务当前状态
systemctl enable nginx.service 设置开机自启动
systemctl disable nginx.service 停止开机自启动
一个常见的错误
Warning: nginx.service changed on disk. Run ‘systemctl daemon-reload’ to reload units.
直接按照提示执行命令systemctl daemon-reload 即可。
systemctl daemon-reload

配置nginx访问日志

  • Nginx 访问日志介绍

Nginx 软件会把每个用户访问网站的日志信息记录到指定的日志文件里,供网站提供者分析用户的浏览行为等,此功能由 ngx_http_log_module 模块负责。

  • 语法及默认值

语法:
access_log path [format [buffer=size]];
access_log off;
默认值:
access_log logs/access.log combined;
#“combined”日志格式:
log_format combined '$remote_addr - Nginx启停命令 nginx启停日志_运维time_local] ’
‘"$request" $status KaTeX parse error: Double superscript at position 39: … '̲"http_referer" “$http_user_agent”’;
为访问日志设置路径,格式和缓冲区大小(nginx访问日志支持缓存)。 在同一个配置层级里可以指定多个日志。 特定值off会取消当前配置层级里的所有access_log指令。 如果没有指定日志格式则会使用预定义的“combined”格式。

  • 配置实战
    修改配置文件
[root@localhost conf]# cat nginx.conf
worker_processes  1;
error_log  logs/error.log  error;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    include     vhosts/*.conf;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '   # 先定义日志格式,main是日志格式的名字
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  logs/access.log  main;                                          # 使用日志格式,也可以把这一行放到想记录访问日志的虚拟主机配置文件中去
}
  • 日志变量说明

$remote_addr :记录访问网站的客户端地址
$remote_user :记录远程客户端用户名称
$time_local :记录访问时间与时区
$request :记录用户的 http 请求起始行信息
$status :记录 http 状态码,即请求返回的状态,例如 200 、404 、502 等
$body_bytes_sent :记录服务器发送给客户端的响应 body 字节数
$http_referer :记录此次请求是从哪个链接访问过来的,可以根据 referer 进行防盗链设置
$http_user_agent :记录客户端访问信息,如浏览器、手机客户端等
$http_x_forwarded_for :当前端有代理服务器时,设置 Web 节点记录客户端地址的配置,此参数生效的前提是代理服务器上也进行了相关的 x_forwarded_for 设置
3.真实日志分析
access.log中的真实日志:
192.168.5.1 - - [25/May/2017:18:27:51 +0800] “GET / HTTP/1.1” 200 12 “-” “Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E)” “-”
对上面的日志进行分析:
$remote_addr 对应的是 192.168.5.1 ,即客户端的 IP 地址
$remote_user 对应的是 ‘-’ ,没有远程用户,所以用 ‘-’ 填充
$time_local 对应的是 [25/May/2017:18:27:51 +0800]
$request 对应的是 “GET / HTTP/1.1”
$status 对应的是状态码 200 ,表示访问正常
$body_bytes_sent 对应的是 12 字节,即响应 body 的大小
$http_referer 对应的是 “-” ,由于是直接打开域名浏览的,因此 referer 没有值
$http_user_agent 对应的是 “Mozilla/4.0 (compatible; MSIE…)”
$http_x_forwarded_for 对应的是 “-” ,因为 Web 服务没有使用代理,所以用 “-” 填充

日志文件定时清理

  • 手动清理nginx日志方式

mv /usr/local/nginx/logs/access.log /usr/local/nginx/logs/access.log.bak #重命名日志文件
mv /usr/local/nginx/logs/error.log /usr/local/nginx/logs/error.log.bak #重命名日志文件
/usr/local/nginx/sbin/nginx -s reopen #重执行生成日志文件
rm -rf /usr/local/nginx/logs/access.log.bak #删除旧文件
rm -rf /usr/local/nginx/logs/error.log.bak #删除旧文件

  • nginx日志定时清理方式

cd /usr/local/nginx/logs/

vim del_logs.sh

#写入下面内容

#!/bin/bash

#先复制原来的错误日志文件,请根据自己实际的日志路径填写

cp /usr/local/nginx/logs/error.log /usr/local/nginx/logs/error-KaTeX parse error: Expected 'EOF', got '#' at position 37: …+"%Y%m%d").log #̲清空错误日志文件 cat /d…(date -d “yesterday” +"%Y%m%d").log

#清空原来的正常访问日志

cat /dev/null > /usr/local/nginx/logs/access.log

#定期删除七天前的日志文件

find /usr/local/nginx/logs -mtime 7 -type f -name *.log | xargs rm -rf

添加可执行权限

chmod +x del_logs.sh

添加Linux计划任务

crontab -e

写入下面内容

#每天0点执行日志清理脚本

0 0 * * * /usr/local/nginx/logs/del_logs.sh

保存后退出。

重启crond服务

systemctl restart crond

查看调度计划

crontab -l

Nginx启停命令 nginx启停日志_运维_02