Nginx基础知识学习(安装/进程模型/事件处理机制/详细配置/定时切割日志)
一、Linux下Nginx的安装
1.去官网 http://nginx.org/download/下载对应的Nginx安装包,推荐使用稳定版本。
2.上传Nginx到Linux服务器。
3.安装依赖环境
(1)安装gcc环境
yum install gcc-c++
(2)安装PCRE库,用于解析正则表达式
yum install -y pcre pcre-devel
(3)安装zlib压缩和解压缩依赖
yum install -y zlib zlib-devel
(4)SSL安全的加密套接字协议层,用于HTTP安全传输,即HTTPS
yum install -y openssl openssl-devel
4.解压,注意:解压后得到的是源码,需要编译后才可以安装
tar -zxvf nginx-1.19.0.tar.gz
5.编译前,先创建Nginx临时目录,不然在启动nginx的过程中会报错
mkdir /var/temp/nginx -p
6.在nginx目录下面输入如下命令进行配置,目的是为了生成mckefile文件
./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi
配置命令解释:
7.make编译
make
8.安装
make install
9.进入sbin目录启动nginx
./nginx
##停止
./nginx -s stop
##优雅停止(等客户端没连接了再停止)
./nginx -s exit
##重新加载
./nginx -s reload
二、Nginx的进程模型
三、Nginx的事件处理机制
1.传统服务器的事件处理机制为一个客户请求后,Master为其创建一个whrker去处理,当发生阻塞时Master又得继续创建新的worker去处理,这样处理效率,并发程度都非常的低。
2.Nginx的事件处理机制为:当用户的请求阻塞时,这个worker还可以异步的继续处理其他用户请求,并发程度大大增加,开销也变得更小了
四、nginx.conf核心配置文件
1. 设置worker进程的用户,指的linux中的用户,会涉及到nginx操作目录或文件的一些权限,默认为nobody
user root;
2. worker进程工作数设置,一般来说CPU有几个,就设置几个,或者有多个应用设置为N-1也行
worker_processes 1;
3. nginx 日志级别debug | info | notice | warn | error | crit | alert | emerg,错误级别从左到右越来越大
4. 设置nginx进程 pid
pid logs/nginx.pid;
5. 设置工作模式
events {
# 默认使用epoll
use epoll;
# 每个worker允许连接的客户端最大连接数
worker_connections 10240;
}
6. http 是指令块,针对http网络传输的一些指令配置
7. include 引入外部配置,提高可读性,避免单个配置文件过大(比如可以通过include引入server)
include mime.types;
8. 设定日志格式,main为定义的格式名称,如此 access_log 就可以直接使用这个变量了
各参数的具体意义:
$remote_addr 客户端ip
$remote_user 远程客户端用户名,一般为:’-’
$time_local 时间和时区
$request 请求的url以及method
$status 响应状态码
$body_bytes_send 响应客户端内容字节数
$http_referer 记录用户从哪个链接跳转过来的
$http_user_agent 用户所使用的代理,一般来时都是浏览器
$http_x_forwarded_for 通过代理服务器来记录客户端的ip
9. sendfile使用高效文件传输,提升传输性能。启用后才能使用tcp_nopush,是指当数据表累积一定大小后才发送,提高了效率。
sendfile on;
tcp_nopush on;
10. keepalive_timeout设置客户端与服务端请求的超时时间,保证客户端多次请求的时候不会重复建立新的连接,节约资源损耗。
#keepalive_timeout 0;
keepalive_timeout 65;
11. gzip启用压缩,html/js/css压缩后传输会更快
gzip on;
12. server可以在http指令块中设置多个虚拟主机
server {
listen 88;
server_name localhost; location / {
root html;
index index.html index.htm;
}
}
listen 监听端口
server_name localhost、ip、域名
location 请求路由映射,匹配拦截
root 请求位置
index 首页设置
五、利用定时脚本实现日志的切割
Nginx目前的日志都存在access.log文件中,但是随着时间的推移,这个文件的内容会越来越多,体积也会越来越大,不便于查看,所以可以通过把这个大的日志文件切割为多分不同的小文件,切割可以以天、小时、分钟等为单位按需要进行切割
步骤:
A.创建可执行脚本
1.创建一个shell可执行的文件:cut_my_log.sh,内容为:
#!/bin/bash
LOG_PATH="/var/log/nginx/"
RECORD_TIME=$(date -d "yesterday" +%Y-%m-%d+%H:%M)
PID=/var/run/nginx/nginx.pid
mv ${LOG_PATH}/access.log ${LOG_PATH}/access.${RECORD_TIME}.log
mv ${LOG_PATH}/error.log ${LOG_PATH}/error.${RECORD_TIME}.log #向Nginx主进程发送信号,用于重新打开日志文件
kill -USR1 `cat $PID`
2.为脚本文件添加权限
chmod +x cut_my_log.sh
3.执行脚本文件(即进行一次切割:将原日志文件拷贝一份,并且重新打开原日志文件,可以理解为清空原日志文件)
./cut_my_log.sh
B.创建定时任务定期执行脚本
1.安装定时任务
yum install crontabs
2.编辑并添加新的定时任务(定为每分钟执行一次日志脚本)
crontab -e
*/1 * * * * /usr/local/nginx/sbin/cut_my_log.sh
3.重启定时任务
service crond restart
以上就完成了Nginx日志的定时切割
六、定时任务表达式:
Cron 表达式分为五个或者六个区域,每个区域表示一个含义,如下:
分 | 时 | 日 | 月 | 星期几 | 年(非必须) | |
取值范围 | 0-59 | 0-23 | 1-31 | 1-12 | 1-7 | 2021/2022..... |
常用表达式:
1.每分钟执行:
*/1 * * * *
2.每天凌晨(每天晚上23:59)执行:
59 23 * * *
3.每天凌晨1点执行:
0 1 * * *
Nginx基础知识学习(安装/进程模型/事件处理机制/详细配置/定时切割日志)的更多相关文章
- Nginx 基础知识学习
资料 基础 掘金-前端开发者必备的Nginx知识 介绍的比较综合,正向代理反向代理的区别.负载均衡等知识,都有介绍 静默虚空-Nginx 简易教程 博客园上的一篇推荐文章 简书-全面了解Nginx到底 ...
- (转)Linux基础知识学习
Linux基础知识学习 原文:http://blog.csdn.net/ye_wei_yang/article/details/52777499 一.Linux的磁盘分区及目录 Linux的配置是通过 ...
- Nginx基础知识介绍
Nginx基础知识介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Nginx概述 Nginx是免费的.开源的.高性能的HTTP和正向/反向代理服务器.邮件代理服务器.以及T ...
- Vue2基础知识学习
Vue2基础知识学习 01.初识 new Vue({ el: '#root', //用于指定当前Vue实例为哪个容器服务,值通常为css选择器符 data () { return { } } }); ...
- Greenplum入门——基础知识、安装、常用函数
Greenplum入门——基础知识.安装.常用函数 2017年10月08日 22:03:09 在咖啡里溺水的鱼 阅读数:8709 版权声明:本文为博主原创,允许非商业性质转载但请注明原作者和出处 ...
- day63:Linux:nginx基础知识&nginx基础模块
目录 1.nginx基础知识 1.1 什么是nginx 1.2 nginx应用场景 1.3 nginx组成结构 1.4 nginx安装部署 1.5 nginx目录结构 1.6 nginx配置文件 1. ...
- GCC基础知识学习
GCC基础知识学习 一.GCC编译选项解析 常用编译选项 命令格式:gcc [选项] [文件名] -E:仅执行编译预处理: -S:将C代码转换为汇编代码: -c:仅执行编译操作,不进行连接操作: -o ...
- Objective-c基础知识学习笔记
Objective-c基础知识学习笔记(一) 一直有记录笔记的习惯.但非常久没分享一些东西了,正好上半年開始学习IOS了,如今有空写点.因开发须要,公司特意为我们配置了几台新MAC.还让我们自学了2周 ...
- Windows内核基础知识-8-监听进程、线程和模块
Windows内核基础知识-8-监听进程.线程和模块 Windows内核有一种强大的机制,可以在重大事件发送时得到通知,比如这里的进程.线程和模块加载通知. 本次采用链表+自动快速互斥体来实现内核的主 ...
随机推荐
- 题解-Bombs
题解-Bombs 前置知识: 线段树 \(\color{orange}{\texttt{Bombs on luogu}}\) / \(\color{orange}{\texttt{Bombs on C ...
- Springboot 项目 无法读取resources下的mapper文件夹的.xml文件
之前学习的时候遇到的一个问题 org.springframework.beans.factory.BeanCreationException: Error creating bean with nam ...
- mysql 8.0忘记root密码
1.修改参数文件添加以下内容 skip-grant-tables 2.关闭数据库 [root@node01 ~]# /etc/init.d/mysqld8 stop Shutting down MyS ...
- JavaSE12-内部类&API
1. 参数传递 1.1 类名作为形参和返回值 1.类名作为方法的形参 方法的形参是类名,其实需要的是该类的对象 实际传递的是该对象的[地址值] 2.类名作为方法的返回值 方法的返回值是类名,其实返回的 ...
- 2020年3月16日第一天,今天计划学习:K8S Kubeadm 1.14的完美部署
------------恢复内容开始------------ 一.部署docker 1. 部署docker容器虚拟化平台并配置docker的环境 下载新的yum配置文件 wget http://m ...
- (三)文件的链接(ln)
一.链接的分类及特点 当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在 其它的目录下用ln命令链接(link ...
- iOS崩溃治理--开篇
去年我开始负责iOS崩溃治理的工作,从原来的万分之五崩溃率,一直到现在的万分之一左右的崩溃率,期间踩了很多坑,因此想和大家分享一下,希望能对大家有所帮助,也欢迎大家私信交流. 如果你打算开始治理崩溃的 ...
- [每日一题]ES6中为什么要使用Symbol?
关注「松宝写代码」,精选好文,每日面试题 加入我们一起学习,day day up 作者:saucxs | songEagle 来源:原创 一.前言 2020.12.23日刚立的flag,每日一题,题目 ...
- 多图详解Go的sync.Pool源码
转载请声明出处哦~,本篇文章发布于luozhiyun的博客:https://www.luozhiyun.com 本文使用的go的源码时14.4 Pool介绍 总所周知Go 是一个自动垃圾回收的编程语言 ...
- 什么是ZooKeeper?ZooKeeper分布式事务详解
前言 上一章我们了解了zookeeper到底是什么,这一章重点来看zookeeper当初到底面临什么问题? 而zookeeper又是如何解决这些问题的? 实际上zookeeper主要就是解决分布式环境 ...