• Nginx安装、平滑升级与虚拟机配置


    Nginx 高性能HTTP反向代理服务器,也是 LAMP/POP3/SMTP代理服务器

    由内核和模块组成,内核通过找配置文件讲客户端请求映射到一个location(location是Nginx配置中的一个指令用于URL匹配)而在这个LOCATION所配置的每个指令将会启动不同的模块去完成相应工作。

    NGINX 与APCHE对比

    1高并发响应非常好,官方NGINX处理静态状态并发5W/S

    2反向代理能力非常强(可用于负载均衡)

    3内存和CPU占用率低(为APACHE的1/5-1/10)

    4对后端服务有健康检查功能。

    5支持PHP cgi和fasstcgi方式

    6配置代码简洁容易上手

    核心模块:HTTP模块、EVENT模块和MAIL模块

    基础模块:HTTP Access模块、HTTP FastCGI模块、HTTP Proxy模块和HTTP Rewrite模块,

    第三方模块:HTTP Upstream Request Hash模块、Notice模块和HTTP Access Key模块。

    NGINX高并发采用了EPOLL模型 LINUX 内核2.6才使用  APACHE 采用的select

    select :遍历所有句柄

    epoll :不是遍历,是事件响应,就是句柄上事情来马上选择出来。

    NGINX 安装  需安装PCRE库 

    nginx安装

    首先需要安装pcre库,然后再安装Nginx:

    yum install pcre* openssl* -y

    useradd -s /sbin/nologin -M nginx

    -M   不建家目录

    #安装pcre支持rewrite库,也可以安装源码,注*安装源码时,指定pcre路径为解压源码的路径 openssl也是源码路径
    ,而不是编译后的路径,否则会报错。
    (make[1]: *** [/usr/local/pcre/Makefile] Error 127 错误)
    PCRE版本8左右就行10的会报错


    #下载Nginx源码包
    cd /usr/src ;wget -c http://nginx.org/download/nginx-1.4.2.tar.gz
    #解压Nginx源码包
    tar -xzf nginx-1.4.2.tar.gz
    #进入解压目录,然后sed修改Nginx版本信息为WS,返回头文件,404返回
    cd nginx-1.4.2 ; sed -i -e 's/1.4.2//g' -e 's/nginx\//WS/g' -e   
    's/"NGINX"/"WS"/g' src/core/nginx.h         一般修改src/core/nginx.h这三个参数就能达到效果 

    #预编译Nginx
    ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

    --with-http_ssl_module 开启SSL支持,可用于https连接。开启此模块需要先安装OpenSSL。

    #.configure预编译成功后,执行make命令进行编译
    make
    #make执行成功后,执行make install 正式安装
    make install
    #自此Nginx安装完毕
    /usr/local/nginx/sbin/nginx -t 检查nginx配置文件是否正确,返回OK即正确。

    监测nginx状态 在server 加入

    location /ngx_status
    {
    stub_status on;
    access_log off;
    }

    访问ip/ngx_status

    3.Nginx常用命令管理及升级
    查看nginx进程
    ps -ef|grep nginx
    说明:nginx的进程由主进程和工作进程组成。
    启动nginx
    nginx
    启动结果显示nginx的主线程和工作线程,工作线程的数量跟nginx.conf中的配置参数worker_processes有关。
    平滑启动nginx
    kill -HUP `cat /var/run/nginx.pid`
    或者
    nginx -s reload
    其中进程文件路径在配置文件nginx.conf中可以找到。
    平滑启动的意思是在不停止nginx的情况下,重启nginx,重新加载配置文件,启动新的工作线程,完美停止旧的工作线程。
    完美停止nginx
    kill -QUIT `cat /var/run/nginx.pid`
    快速停止nginx
    kill -TERM `cat /var/run/nginx.pid`
    或者
    kill -INT `cat /var/run/nginx.pid`

    完美停止工作进程(主要用于平滑升级)
    kill -WINCH `cat /var/run/nginx.pid`
    强制停止nginx
    pkill -9 nginx
    检查对nginx.conf文件的修改是否正确
    nginx -t -c /etc/nginx/nginx.conf 或者 nginx -t
    停止nginx的命令
    nginx -s stop或者pkill nginx
    查看nginx的版本信息
    nginx -v
    查看完整的nginx的配置信息
    nginx -V
    Nginx升级方法:
    下载所需版本的Nginx
    wget http://www.nginx.org/download/nginx-1.4.2.tar.gz
    获取旧版本nginx的configure选项
    /usr/local/nginx/sbin/nginx -V
    编译新版本的nginx
    tar -xvf nginx-1.4.2.tar.gz
    cd nginx-1.4.2
    ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module --with-http_ssl_module
    make
    备份旧版本的nginx可执行文件,复制新版本的nginx这行文件
    mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old
    cp objs/nginx /usr/local/nginx/sbin/
    测试新版本nginx是否正常
    /usr/local/nginx/sbin/nginx -t
    平滑重启升级nginx
    kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`
    旧版本Nginx的pid变为oldbin,这是旧版本和新版本的nginx同时运行,过一段时间等就nginx处理完用户请求后,执行下面操作
    从容关闭旧版本的Nginx进程
    kill -WINCH `cat /usr/local/nginx/logs/nginx.pid.oldbin`

    慢慢旧的工作进程就都会随着任务执行完毕而退出,新版的Nginx的工作进程会逐渐取代旧版 工作进程

    此时,我们可以决定是否升级到新版的nginx

    kill -HUP `cat /usr/local/nginx/logs/nginx.pid.oldbin` ##nginx在不重载配置文件启动旧工作进程 (不升级)=/usr/local/sbin/nginx -s reload

    kill -QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin` ##关闭旧版nginx (升级)

    如果此时报错,提示还有进程没有结束就用下面命令先关闭旧/新工作进程,再关闭主进程号:
    kill -TERM 旧/新工作进程号
    这样下来,如果要恢复到旧版本,只需要上面的几个步

    验证nginx是否升级成功kill
    /usr/local/nginx/sbin/nginx –V ###显示下图则升级成功

    虚拟机配置

           在真实的服务器环境,为了充分利用服务器资源,一台nginx web服务器同时会配置N个虚拟域名主机,即多个域名对于同样一个80端口。然后服务器IP数量很多,也可以配置基于多个IP对应同一个端口。
    vi修改nginx.conf server段配置内容如下:
    #virtual hosts config 2014/5/18

    server {
    listen 80;
    server_name www.a.com;
    #access_log logs/host.access.log main;
    location / {
    root html/a;
    index index.html index.htm;
    }
    server {
    listen 80;
    server_name www.b.com
    #access_log logs/host.access.log main;
    location / {
    root html/b;
    index index.html index.htm;
    }

    创建两个不同的目录mkdir –p /usr/local/nginx/html/{a,b},然后分别在两个目录创建两个不同的index.html网站页面即可。通过客户端配置hosts指向两个域名,然后在IE浏览器访问测试效果。

  • 相关阅读:
    ASP.NET中的ViewState
    (标记)Spring.Net+NHibenate+Asp.Net mvc +ExtJs 系列 By 似水流年
    C#中类的定义
    苹果CMS搭建影视网站教程
    Java之冒泡排序
    Java之数组扩容
    Linux之netstat命令基本使用
    Linux之systemctl命令基本使用
    Oracle11g R2 安装教程(非常详细 )
    Linux之firewall防火墙开启和关闭
  • 原文地址:https://www.cnblogs.com/linxizhifeng/p/6241430.html
Copyright © 2020-2023  润新知