zoukankan      html  css  js  c++  java
  • 了解并安装Nginx

    公司使用nginx作为请求分发服务器,发现本人在查看nginx配置上存在些许困难,故仔细阅读了陶辉的《深入理解nginx模块开发与框架》第一部分,并作此记录。

    了解

    我根据书上的思路来了解nginx的作用及配置,首先回答提出的问题:

    什么是Nginx?它有哪些特点?我们选择Nginx的理由是什么?如何编译安装Nginx?这种安装方式背后隐藏的又是什么样的思想呢?

    1. 什么是Ngnix?

    Nignx是一个跨平台的,支持高效处理大规模并发连接,高性能Web服务器。

    2. 它有哪些特点?

    1)快:单机响应更快,高并发响应快

    2)高扩展性:它由耦合度极低的模块组成,对某一模块进行修复和升级时只需要关注模块自身

    3)高可靠性:其核心框架代码的优秀设计、模块设计的简单性;每个worker进程相对独立,master进程在1个worker进程出错时可以快速“拉起”新的worker子进程提供服务。

    4)低内存消耗

    5)单机10w以上并发

    6)热部署:master管理进程与worker工作进程的分离设计,保证在不间断服务的情况下,升级Nginx的可执行文件,更新配置项、更换日志文件等功能。

    7)最自由的BSD许可协议:它还允许用户在自己的项目中直接使用或修改Nginx源码

    3. 我们选择Nginx的理由是什么?

    Nginx先天的事件驱动型设计、全异步的网络I/O处理机制、极少的进程间切换以及许多优化设计,都使得Nginx天生善于处理高并发压力下的互联网请求,同时Nginx降低了资源消耗,可以把服务器硬件资源“压榨”到极致。

    编译安装

    1. 首先我们需要一个内核为Linux 2.6及以上版本的操作系统,查看linux内核版本

    [root@localhost ~]# uname -a

    2. 安装GCC、PCRE、zlib、OpenSSL库

    3. 磁盘目录

    1)Nginx源码存放目录

    2)Nginx编译阶段产生的中间文件存放目录(默认情况下,configure命令会将该目录命名为objs,并放在Nginx源代码目录下)

    3) 部署目录
    该目录存放实际Nginx服务运行期间所需要的二进制文件、配置文件等。默认情况下,该目录为/usr/local/nginx。

     

    4) 日志文件存放目录

    4. Linux内核参数的优化(不做了解)

    5. 编译安装nginx

    安装Nginx最简单的方式是,进入nginx-1.0.14目录后执行以下3行命令:

    ./configure
    make
    make install

    1)configure命令做了大量的“幕后”工作,包括检测操作系统内核和已经安装的软件,参数的解析,中间目录的生成以及根据各种参数生成一些C源码文件、Makefile文件等。

    a. 当configure执行成功时会生成objs目录,并在该目录下产生以下目录和文件:

    2)make命令根据configure命令生成的Makefile文件编译Nginx工程,并生成目标文件、最终的二进制文件。
    3)make install命令根据configure执行时的参数将Nginx部署到指定的安装目录,包括相关目录的建立和二进制文件、配置文件的复制。

    Nginx命令行

    1. 默认方式启动(这时会读取默认路径下的配置文件:usr/local/nginx/conf/nginx.conf,实际上,在没有显式指定nginx.conf配置文件路径时,将打开在configure命令执行时使用--conf -path=PATH指定的nginx.conf文件)

    2. 在不启动Nginx的情况下,测试配置信息是否有错误

    [root@localhost ~]# /usr/local/nginx/sbin/nginx -t

     

    3. 显示版本信息

    [root@localhost ~]# /usr/local/nginx/sbin/nginx -v

    4. 显示编译阶段的参数

    [root@localhost ~]# /usr/local/nginx/sbin/nginx -V

     

    5. 快速地停止服务

    使用-s stop可以强制停止Nginx服务。-s参数其实是告诉Nginx程序向正在运行的Nginx服务发送信号量,Nginx程序通过nginx.pid文件中得到master进程的进程ID,再向运行中的master进程发送TERM信号来快速地关闭Nginx服务。

    [root@localhost nginx]# /usr/local/nginx/sbin/nginx -s stop

    实际上,如果通过kill命令直接向nginx master进程发送TERM或者INT信号,效果是一样的。例如:

    kill -s SIGTERM 10800
    kill -s SIGINT 10800

    6. “优雅”地停止服务

    当快速停止服务时,worker进程与master进程在收到信号后会立刻跳出循环,退出进程。而“优雅”地停止服务时,首先会关闭监听端口,停止接收新的连接,然后把当前正在处理的连接全部处理完,最后再退出进程。

    [root@localhost nginx]# /usr/local/nginx/sbin/nginx -s quit

    7. 使运行中的Nginx重读配置项并生效

    使Nginx服务重新加载nginx.conf文件。
    [root@localhost nginx]# /usr/local/nginx/sbin/nginx -s reload

    事实上,Nginx会先检查新的配置项是否有误,如果全部正确就以“优雅”的方式关闭,再重新启动Nginx来实现这个目的。

    8. 查看帮助命令

    [root@localhost nginx]# /usr/local/nginx/sbin/nginx -h

    学到这有个灵感,当进入服务器怎么找到相应的配置文件呢:

    1. 查看nginx进程

    我们知道,nginx默认启动的是configure命令中 -conf -path=PATH中PATH路径的配置文件

    2. 查看configure命令的参数

    诺,找到配置文件的位置了,其他的配置也可以同过相同的方法找到

  • 相关阅读:
    抓包工具 Fiddler 使用介绍
    HTTP 协议常见首部字段
    HTTP 协议服务器相关概念
    HTTP 协议常见的状态码
    HTTP 协议中 GET 和 POST 方法详解
    设置html title标题左侧的小图标
    HTML页面如何判断是手机访问还是电脑访问
    使用Java的Frame类编写的QQ登录界面
    swing中JTable的使用方法
    采用MVC模式JDBC演示案例
  • 原文地址:https://www.cnblogs.com/gengsc/p/7248662.html
Copyright © 2011-2022 走看看