Nginx学习(二)

继续学习Nginx~~

请求Nginx默认页面

进入conf/目录下的nginx.conf文件

Nginx的进程模型

  • master进程:主进程,引导者,管理worker进程;
  • worker进程:工作进程,工作者,初始nginx相关事务;

查看nginx进程

ps -ef|grep nginx

master进程唯一,worker进程默认情况下是一个(可以配多个)

改变工作进程数

默认为1

sudo vim conf/nginx.conf

改变nginx配置之后

#确认修改后nginx配置是否正确

…/sbin/nginx -t

#重新加载nginx配置

…/sbin/nginx -s reload

再次查看nginx进程

master给worker的信号:

./nginx -s stop

./nginx -s quit

./nginx -s reload

./nginx -t

Nginx的进程模型

Worker抢占机制

Nginx事件处理

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iLn8vhDA-1586360507128)(C:\Users\vleuschen\Desktop\Nginx的学习\image-20200401230859436.png)]

Nginx默认使用epoll模型;

异步多路复用器;

nginx.conf 配置文件

  • main: 全局配置:
    • worker_processes: 设置工作进程woker数目
    • event:配置工作模式以及连接数;
    • http:http模块相关配置;
      • server:虚拟主机配置,可以有多个;
        • location:路由规则,表达式;
        • upstream: 集群,内网服务器;
配置文件内容简单介绍
user  root;
#工作进程
worker_processes  1;

# 错误日志 debug info notice warn error crit
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#nginx pid进程
#pid        logs/nginx.pid;


events {
    # Linux默认使用epoll
    use epoll;
    # 每个worker允许连接的客户端的最大连接数,根据硬件配置来的
    worker_connections  1024;
}


http {
    # 导入外部文件,目的是为了提高配置文件的可读性,mime.types位于/usr/local/nginx/conf
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';
    
    #access_log  logs/access.log  main;
    #提高文件传输的性能
    sendfile        on;
    #文件数据包达到一定规模时才开始发送
    #tcp_nopush     on;
    
    #客户端连接服务端的时间
    #keepalive_timeout  0;
    keepalive_timeout  65;

    # 开启文件压缩,增加文件传输的效率
    #gzip  on;
    
    #虚拟主机
    server {
        # 监听的端口
        listen       88;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
        
        location / {
            root   html;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
    server {
        # 监听的端口
         listen       89;
         server_name  localhost;
        
         location / {
              root   html;
              index  hello.html index.htm;
         }
         
         error_page 500 502 503 504 /50x.html;
         location = /50x.html {
              root html;
         }


     }
}
nginx.pid打开失败以及失效的解决方案

问题复现:

在启动nginx时,出现以下问题

解决方案:

1、

mkdir /var/run/nginx

2、重新加载时:

发现没有nginx.pid文件

3、进入nginx的sbin目录

./nginx -c /usr/local/nginx/conf/nginx.conf

4、重新启动

./nginx -s reload

Nginx 常用命令

./nginx -s stop :暴力停止,不推荐

./nginx -s quit:优雅停止,主要是不接受额外的请求,现有的请求会知道请求结束

./nginx -t: 在修改完nginx.conf配置文件之后,使用此命令可检测配置文件是否配置有误

./nginx -v: 显示nginx版本

./nginx -V: 显示nginx具体的信息

./nginx : 启动nginx

./nginx -s reload/stop/reload

Nginx日志切割-手动

Nginx的日志默认保存在/var/log/nginx下边,这个是安装nginx时候设置的;

现有的日志文件都会保存在access.log文件中,但是随着时间的推移,这个文件的体积会逐渐庞大,不便开发或者运维人员去查看,所以可以通过把文件切割为多份不同的小文件作为日志,切割规则可以以为单位,如果每天有几百G或者几个T的日志,则可以按需以每半天或者每小时对日志进行切割;

具体步骤如下

1、创建一个可执行文件: 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、为cut_my_log.sh添加可执行的权限:

chmod +x cut_my_log.sh

3、测试日志切割后的结果:

./cut_my_log.sh

4、设置定时任务执行切割日志的操作(使用Linux自带的定时任务器)

​ 4.1 安装定时任务:

​ yum install crontabs

​ 4.2 crontab -e编辑并且添加一行新的定时任务

​ */1 * * * * /usr/local/nginx/sbin/cut_my_log.sh

​ 4.3 重启定时任务

​ service crond restart

  • 附:常用定时任务命令:

service crond start //启动服务
service crond stop //关闭服务
service crond restart //重启服务
service crond reload //重新载入配置
crontab -e // 编辑任务
crontab -l // 查看任务列表

  • 定时任务表达式

Cron表达式:分为5或6个域,每个域表示一个含义,如下所示:

星期几年(可选)
取值范围0~590~231~311~121~72019/2020/2021/…
  • 常用表达式

    每分钟执行:*/1 * * * *

    每日凌晨执行: 59 23 * * *

    每日凌晨一点执行: 0 1 * * *

参考博客:https://www.cnblogs.com/leechenxiang/p/7110382.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值