nginx之编译安装

一、认识nginx

常用的web服务有Apache、IIS(windows系统)、Lighttpd、Tomcat、Nginx等。Nginx是一个开源的,支持高性能、高并发的www服务和代理服务软件。它是由俄罗斯人Igor Sysoev开发的,最初被应用在俄罗斯的大型网站WWW.rambler.ru上。后来作者讲源码以类似BSD许可证的形式开源出来供全球使用。

Nginx因具有高并发(特别擅长于静态资源)、占用系统资源少等特性,且功能丰富而逐渐流行起来

二、nginx功能应用

  • 做web服务软件:Nginx是一个支持高性能、高并发的web服务软件,它具有很多优秀的特性,作为web服务器,与Apache相比,Nginx能够支持更多的并发连接访问,但占用的资源却很少,效率更高,在功能上也强大了很多,几乎不逊色与Apache
  • 反向代理或负载均衡服务:在方向代理或负载均衡服务方面,Nginx可以作为web服务、PHP等动态服务及Memcached等缓存的代理服务器,它具有类似专业反向代理软件(如Haproxy)的功能,同时也是一个优秀的邮件代理服务软件(最早开发这个产品的目的之一就是作为邮件代理服务),但是Nginx的代理功能还是相对简单了些,特别是不支持TCP的代理(Nginx1.90以上的版本已支持TCP代理)
  • 前端业务数据缓存服务:在web缓存服务方便,Nginx可通过自身的proxy_cache模块实现类Squid等专业缓存软件的功能。

特点及优势:

 

  支持高并发:能支持几万并发连接(特别是静态小文件业务环境)

 

  • 资源消耗少:在3万并发连接下,开启10个Nginx线程消耗的内存不到200MB
  • 可以做HTTP反向代理及加速缓存,即负载均衡功能,内置对RS(real server)节点服务器健康检查功能,这相当于专业的Haproxy软件或LVS的功能
  • 具备Squid等专业缓存软件等的缓存功能
  • 支持异步网络I/O事件模型epoll(linux 2.6)

注:

大并发写操作:先写内存,再将内存数据存储到硬盘中---保证访问效率

大并发读操作:先写磁盘,再将磁盘数据存储到内存中---保证数据安全

总结:高并发→资源消耗少→功能多样(web、负载均衡、支持缓存)→通讯模型先进(epoll)

三、安装编译安装nginx

本机环境:

[root@web ~]# cat /etc/redhat-release 
CentOS release 6.9 (Final)
[root@web ~]# uname -r
2.6.32-696.el6.x86_64

第一里程碑:安装nginx所需的(pcre-devel openssl-devel)库

[root@web ~]# yum install –y pcre-devel openssl-devel

第二里程碑:下载安装nginx

#下载软件包
Wget http://110.96.192.8:83/1Q2W3E4R5T6Y7U8I9O0P1Z2X3C4V5B/mirrors.sohu.com/nginx/nginx-1.10.2.tar.gz
#解压 tar zxf nginx-1.10.2.tar.gz useradd –s /sbin/nologin –M www #创建用户 cd ../nginx-1.10.2/ #进入解压后的目录
#编译并安装 .
/configure --prefix=/usr/local/nginx-1.10.2 --user=www --group=www --with-http_stub_status_module --with-http_ssl_module Make && make install 创建软连接 ln -s /usr/local/nginx-1.10.2/ /usr/local/nginx #方便后期使用或升级版本

注:本次下载使用的是搜狐镜像源,可以到官方镜像源下载。

Nginx官方网站:http://nginx.org/download/nginx-1.10.2.tar.gz
搜狐镜像源:http://mirrors.sohu.com/nginx/

第三里程碑:检查并启动服务

#检查安装情况
[root@web ~]# /usr/local/nginx/sbin/nginx -V nginx version: nginx/1.10.2 built by gcc 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC) built with OpenSSL 1.0.1e-fips 11 Feb 2013 TLS SNI support enabled configure arguments: --user=www --group=www --prefix=/usr/local/nginx-1.10.2/ --with-http_stub_status_module --with-http_ssl_module

#启动服务:
[root@web ~]# /usr/local/nginx/sbin/nginx

#测试访问
直接访问服务器IP,会显示nginx的页面。

第四里程碑:nginx相关启动参数

[root@web ~]# /usr/local/nginx/sbin/nginx -h
nginx version: nginx/1.10.2
Usage: nginx [-?hvVtTq] [-s signal] [-c filename] [-p prefix] [-g directives]

Options:
  -?,-h         : this help
  -v            : show version and exit
  -V            : show version and configure options then exit
  -t            : test configuration and exit
  -T            : test configuration, dump it and exit
  -q            : suppress non-error messages during configuration testing
  -s signal     : send signal to a master process: stop, quit, reopen, reload
  -p prefix     : set prefix path (default: /usr/local/nginx-1.10.2//)
  -c filename   : set configuration file (default: conf/nginx.conf)
  -g directives : set global directives out of configuration file

四、nginx程序目录结构及配置文件

1、nginx目录结构

[root@web local]# tree -L 1 nginx
nginx
├── conf          <-软件配置文件保存目录(fastcgi、scgi、uwsgi等)   
├── html          <-网站站点目录
├── logs          <-日志文件保存目录
└── sbin          <-Nginx命令保存目录

2、nginx配置文件

Conf文件夹中包含以下两个文件:
nginx.conf            <- nginx程序的主配置文件
nginx.conf.default    <- nginx配置备份文件

3、配置文件web服务常用参数

[root@web conf]# egrep -v "#|^$" nginx.conf.default    #去掉包含#号和空行的内容
worker_processes  1;                                   #worker进程的数量      
events {                                               #事件区块开始
    worker_connections  1024;                          #每个worker进程支持的最大连接数
}                                                      #事件区块结束
http {                                                 #HTTP区块开始
    include       mime.types;                          #nginx支持的媒体类型库文件
    default_type  local/octet-stream;                  #默认的媒体类型
    sendfile        on;                                #开启高效传输模式
    keepalive_timeout  65;                             #连接超时
    server {                                           #第一个server区块开始,表示一个独立的虚拟主机站点
        listen       80;                               #提供服务的端口,默认80
        server_name  localhost;                        #提供服务的域名主机名
        location / {                                   #第一个location区块开始
            root   html;                               #站点的根目录,相当于nginx的安装目录
            index  index.html index.htm;               #默认的首页文件,多个空格分开
        }                                              #第一个localtion区块结果
        error_page   500 502 503 504  /50x.html;       #出现对应的http状态码时,使用50x.html回应客户
        location = /50x.html {                         #location区块开始,访问50x.html
            root   html;                               #指定对应的站点目录为html
        }
    }
}                                                      #HTTP区块结束

 

 

posted @ 2017-11-12 17:04  沉心十年  阅读(357)  评论(0编辑  收藏  举报