zoukankan      html  css  js  c++  java
  • 读书笔记之深入理解Nginx:模块开发与结构解析

    前言

    我现在看书一般都是看自己能看懂的地方,看不懂就先略过,回头再看,下面就写自己看得懂的地方吧,并且把自己的理解也放到里面。

    第一部分 Nginx能帮我们做什么

    编译安装各个命令解释

    configure命令主要是根据咱们的参数检查操作系统内核和软件啥的,然后生成一些C源码文件,主要是生成Makefile文件,configure本身是一个shell脚本。
    make命令根据configure命令生成的Makefile文件编译Nginx工程,并生成目标文件,最终的二进制文件。
    make install命令根据configure执行时的参数将Nginx部署到指定的安装目录,包括相关目录的建立和二进制文件,配置文件的复制。
    下面举一个例子:

    useradd www #默认也会建一个www的group
    yum install -y pcre-devel openssl-devel gcc glibc# 安装软件依赖包
    ./configure --user=www --group=www --prefix=/usr/local/nginx-1.10.1/ --with-http_stub_status_module --with-http_ssl_module
    

    从上面可以看出configure命令是最重要的,configure命令中除了少量核心代码之外,Nginx是由很多模块组成的。这些模块可以分成5大类:

    • 事件模块
    • 默认编译进Nginx的HTTP模块
    • 默认不会编译进Nginx的HTTP模块
    • 邮件代理服务器的相关mail模块
    • 其他模块

    Nginx的命令行控制

    这里面主要是起停控制,一般是修改完配置后先检查配置再启动
    /usr/local/nginx/sbin/nginx -t
    /usr/local/nginx/sbin/nginx
    停止
    /usr/local/nginx/sbin/nginx -s stop

    其实停止也可以用kill命令向nginx master进程发送TREM或者INT信号,下面是linux下 kill -l的输出

    [root@Zabbix-sever ~]# kill -l
     1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
     6) SIGABRT      7) SIGBUS       8) SIGFPE       9) SIGKILL     10) SIGUSR1
    11) SIGSEGV     12) SIGUSR2     13) SIGPIPE     14) SIGALRM     15) SIGTERM
    16) SIGSTKFLT   17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP
    21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ
    26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGIO       30) SIGPWR
    31) SIGSYS      34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
    38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
    43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
    48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
    53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
    58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
    63) SIGRTMAX-1  64) SIGRTMAX
    

    我们用 kill -s SIGINT PIDnginx -s stop是一样的。还有就是nginx -s reloadkill -s SIGHUP PID也是一样的

    这里我就扩展写一下信号这个知识点吧,

    信号

    Unix型号(signal)提供了把系统事件报告给进程的一种机制。每种事件都有自己的信号编号,通常用一个符号常量来表示,例如SIGTERM。
    我记得我有次看到一个进程执行出了问题,lsof看到进程使用的文件是delete状态,然后用kill -s SIGHUP PID重载一下配置文件,当时文件已经恢复回原来的位置了,结果这个进程挂了,后来看书才知道这个信号要进程支持才能重载配置文件的。
    进程接到信号后有三种选择:

    1. 忽略该信号(nohup就是让进程忽略父进程的停止子进程的信号来实现退出终端子进程还能在后台运行)
    2. 异步的执行一个指定过程(这个过程是代码里写好的)
    3. 按照信号编号执行一个默认操作
  • 相关阅读:
    美女程序员是如何将QQ转换成题目中那串数字的--读博文《找女神要QQ号码》
    C#微信开发-微信JS-SDK(1)之通过config接口注入权限验证配置
    AjaxUpload.3.5.js之ASP.NET 文件上传
    web开发常用的js验证,利用正则表达式验证邮箱、手机、身份证等输入
    HNU_结对项目_小初高数学学习软件_功能说明
    转载:alpha测试和beta测试的区别;黑盒测试和白盒测试的区别;
    HNU_个人项目_中小学数学卷子自动生成程序_简要分析HnuLyx代码
    文件与磁盘空间管理---外存分配方式、存储空间管理
    Java程序设计——不一样的开始 IP地址判定
    Java编程思想—八皇后问题(数组法、堆栈法)
  • 原文地址:https://www.cnblogs.com/WisWang/p/6194598.html
Copyright © 2011-2022 走看看