• nginx介绍和安装


    1.nginx的介绍

    1.1 nginx的优势

    1) 作为Web服务器,Nginx处理静态文件、索引文件,自动索引的效率非常高。

    2) 作为代理服务器,Nginx可以实现无缓存的反向代理加速,提高网站运行速度。

    3)作为负载均衡服务器,Nginx既可以在内部直接支持Rails和PHP,也可以支持HTTP代理服务器对外进行服务,同时还支持简单的容错和利用算法进行负载均衡。

    4) 在性能方面,Nginx是专门为性能优化而开发的,在实现上非常注重效率。它采用内核Poll模型,可以支持更多的并发连接,最大可以支持对50 000个并发连接数的响应,而且只占用很低的内存资源。

    5) 在稳定性方面,Nginx采取了分阶段资源分配技术,使得CPU与内存的占用率非常低。Nginx官方表示,Nginx保持10 000个没有活动的连接,而这些连接只占用2.5MB内存,因此,类似DOS这样的攻击对Nginx来说基本上是没有任何作用的。

    6) 在高可用性方面,Nginx支持热部署,启动速度特别迅速,因此可以在不间断服务的情况下,对软件版本或者配置进行升级,即使运行数月也无需重新启动,几乎可以做到24小时不间断地运行。

    1.2 nginx的模块和工作原理

     

    1) Nginx由内核和模块组成,其中,内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件将客户端请求映射到一个location block(location是Nginx配置中的一个指令,用于URL匹配),而在这个location中所配置的每个指令将会启动不同的模块去完成相应的工作。

    2) Nginx的模块从结构上分为核心模块、基础模块和第三方模块, HTTP模块、EVENT模块和MAIL模块等属于核心模块,HTTP Access模块、HTTP FastCGI模块、HTTP Proxy模块和HTTP Rewrite模块属于基础模块,而HTTP Upstream Request Hash模块、Notice模块和HTTP Access Key模块属于第三方模块,用户根据自己的需要开发的模块都属于第三方模块。正是有了这么多模块的支撑,Nginx的功能才会如此强大。

     

    3) Nginx的模块从功能上分为如下三类。

    Handlers(处理器模块)。此类模块直接处理请求,并进行输出内容和修改headers信息等操作。Handlers处理器模块一般只能有一个。

    Filters (过滤器模块)。此类模块主要对其他处理器模块输出的内容进行修改操作,最后由Nginx输出。

    Proxies (代理类模块)。此类模块是Nginx的HTTP Upstream之类的模块,这些模块主要与后端一些服务比如FastCGI等进行交互,实现服务代理和负载均衡等功能。

     

    3) 在工作方式上,Nginx分为单工作进程和多工作进程两种模式。在单工作进程模式下,除主进程外,还有一个工作进程,工作进程是单线程的;在多工作进程模式下,每个工作进程包含多个线程。Nginx默认为单工作进程模式。

    4) Nginx的模块直接被编译进Nginx,因此属于静态编译方式。启动Nginx后,Nginx的模块被自动加载,不像Apache,首先将模块编译为一个so文件,然后在配置文件中指定是否进行加载。在解析配置文件时,Nginx的每个模块都有可能去处理某个请求,但是同一个处理请求只能由一个模块来完成。

    2 nginx安装

    1) Nginx的的运行需要有pcre-devel和zlib-devel的支持,所以安装之前需要先把这两个包装上

    yum install pcre-devel zlib-devel -y

    2) 创建Nginx用户,便于权限管理

    useradd -M -s /sbin/nologin -u 48 nginx

    3) 解包,编译,安装

    cd /usr/src

    wget http://nginx.org/download/nginx-1.6.3.tar.gz

    tar zxf nginx-1.6.3.tar.gz 

    cd nginx-1.6.3

    ./configure --prefix=/usr/local/nginx-1.6.3 --user=nginx --group=nginx --with-http_stub_status_module --with-http_realip_module 

    make && make install

    4) 作链接,然后启动Nginx    

    cd /usr/local

    ln -s nginx-1.6.3 nginx 

    /usr/local/nginx/sbin/nginx

    [root@LNMP local]# netstat -anput | grep nginx 

    tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      3470/nginx

    [root@LNMP local]# ps -ef | grep nginx  | grep -v grep

    root       3470      1  0 20:50 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx

    nginx      3471   3470  0 20:50 ?        00:00:00 nginx: worker process

    3 nginx的启动脚本

    编写启动脚本,便于对Nginx进行管理。

    脚本内容: 

    #!/bin/bash
    
    #chkconfig: - 85 15
    
    #description: this is a script to control nginx
    
     
    
    #Source function library.
    
    . /etc/rc.d/init.d/functions
    
    # Source networking configuration. 
    
    . /etc/sysconfig/network
    
    # Check that networking is up. 
    
    [ "$NETWORKING" = "no" ] && exit 0 
    
    nginx=/usr/local/nginx/sbin/nginx
    
    pid=/usr/local/nginx/logs/nginx.pid
    
    start() {
    
     if  [ -e $pid ]
    
       then
    
        action "Nginx already running..." /bin/false && exit 1
    
      else
    
       $nginx 
    
      [ $? -eq 0 ] && {
    
            action "Nginx start is  OK..." /bin/true
    
     } || action "Nginx start is error..." /bin/false 
    
     fi
    
    }
    
    stop() {
    
      if [ ! -e $pid ]
    
       then
    
       action "Nginx is not  running..." /bin/false && exit 1
    
      else
    
       kill -s QUIT $(cat $pid)
    
      [ $? -eq 0 ] && action "Nginx stop is  OK..." /bin/true || action "Nginx stop is error..." /bin/false
    
      fi
    
    }
    
    restart() {
    
        $0 stop
    
        $0 start
    
    }
    
    reload() {
    
      if [ ! -e $pid ]
    
       then
    
       action "Nginx is not  running..." /bin/false && exit 1
    
      else
    
       kill -s HUP $(cat $pid)
    
      [ $? -eq 0 ] && action "Nginx reload is  OK..." /bin/true || action "Nginx reload is error..." /bin/false
    
      fi
    
    }
    
    usage() {
    
    echo "Usage: $0 {start|stop|status|restart|reload"
    
    }
    
    status() {
    
     if [ -e $pid ]
    
       then
    
       echo  "Nginx is running..." 
    
     else
    
       echo "Nginx is stop..."
    
     fi
    
    }
    
    case $1 in
    
    start)
    
      start
    
    ;;
    
    stop)
    
       stop
    
    ;;
    
    reload)
    
       reload
    
    ;;
    
    restart)
    
       restart
    
    ;;
    
    status)
    
       status
    
    ;;
    
    *)
    
     usage
    
    ;;
    
    esac

    把上面的脚本复制到/etc/init.d/nginx脚本中,并赋予执行权限,添加开机自启动

    chmod a+x /etc/init.d/nginx

    chkconfig --add nginx

    chkconfig nginx on

    4 nginx简单管理

    4.1 Nginx的启动、关闭和平滑重启

    1)检查文件正确性

    Nginx提供的配置文件调试功能非常有用,可以快速定位配置文件存在的问题。执行如下命令可检测配置文件的正确性

    /usr/local/nginx/sbin/nginx –t

    或 /usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf

    当出现下面的提示时,表示配置文件没有问题

    nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok

    nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

    2) 显示Nginx的版本以及相关编译信息

    显示Nginx版本信息

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

    nginx version: nginx/1.5.0

    显示Nginx的编译信息

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

    nginx version: nginx/1.5.0

    built by gcc 4.4.7 20120313 (Red Hat 4.4.7-3) (GCC) 

    configure arguments: --prefix=/usr/local/nginx-1.5.0 --user=nginx --group=nginx --with-http_stub_status_module

    3)Nginx的启动,关闭与重启

    Nginx对进程的控制能力非常强大,可以通过信号指令控制进程。常用的信号有:

    QUIT,表示处理完当前请求后,关闭进程。

    HUP,表示重新加载配置,也就是关闭原有的进程,并开启新的工作进程。此操作不会中断用户的访问请求,因此可以通过此信号平滑地重启Nginx。

    USR1,用于Nginx的日志切换,也就是重新打开一个日志文件,例如每天要生成一个新的日志文件时,可以使用这个信号来控制。

    USR2,用于平滑升级可执行程序。

    WINCH ,从容关闭工作进程。

     

    4)Nginx的启动

    直接执行/usr/local/nginx/sbin/nginx即可启动

    5)Nginx的关闭

    killall nginx

    或者:

    kill -9 pid号

    其中,XXX就是信号名,pid是Nginx的进程号,、

    6)Nginx的平滑重启

    kill -HUP `cat /usr/local/nginx/logs/nginx.pid`

    另外可以做个nginx启动脚本,方便管理, 

    4.2 Nginx常见的编译选项 使用 ./configure --help可获取

    --prefix=PATH                     定义安装路径

      --sbin-path=PATH                   设置可执行文件的路径

      --conf-path=PATH                   设置配置文件路径

      --error-log-path=PATH              设置错误日志文件路径

      --pid-path=PATH                    设置pid文件路径

      --lock-path=PATH                  设置 nginx.lock 文件路径

      --user=USER                        设置Nginx工作进程的用户

      --group=GROUP                      设置Nginx工作进程的组

    --with-http_ssl_module — 使用https协议模块。默认情况下,该模块没有被构建。建立并运行此模块的OpenSSL库是必需的。

    -with-pcre=path — 设置PCRE库的源码路径

    --with-http_ realip_module         启用realip模块
    --with-openssl               指定openssl代码库的位置
  • 相关阅读:
    10.28作业
    10.27作业
    10.26作业
    10.22作业
    10.20作业
    10.19作业
    10.16作业
    10.15作业
    10.14作业
    10.13作业
  • 原文地址:https://www.cnblogs.com/pycode/p/6566925.html
Copyright © 2020-2023  润新知