Nginx的安装、启动、停止和平滑升级

Nginx简介
   Nginx是俄罗斯人编写的一款高性能的 HTTP和反向代理服务器。它可以选择高效的 epollkqueueeventport作为网络 I/O模型,在高并发的情况下,能够支持高达 50000个并发连接数的响应,而 CPU、内存待系统资源消耗却很低。
 
Nginx特点
   高并发。理论测试可支撑 5万并发,生产环境可支撑 2-4万并发,是因为其采用 epoll(Linux 2.6-Kernel)kqueue(FreeBSD)网络 I/O模型,而 Apache采用的传统 select模型,其比较稳定的 prefork模式为多进程模式,需要经常派生子进程,比较耗资源。
   内存消耗少
   成本低廉
   配置文件简单
   支持 Rwrite重写规则。能够根据域名、 URL的不同,将不同的 HTTP请求分到不同的后端服务器群组。
   内置健康检查功能。如果 Nginx Proxy后端的某台 Web服务器宕机了,不会影响前端的访问。
   节省带宽。支持 GZIP压缩,可以添加浏览器本地缓存的 Header头。
   支持热布署。

在介绍 Nginx配置之前,先来了解一下 Nginx可以使用的信号控制
  TERM,INT 快速关闭
  QUIT 从容关闭
  HUP 平滑重启,重新加载配置文件
  USR1 重新打开日志文件,用于日志切割时
  USR2 平滑升级可执行程序
  WINCH 从容关闭工作进程

Nginx配置
1、下载
   # http://nginx.org/download/nginx-1.2.8.tar.gz

2、安装。 Nginx的一些模块需要第三方库的支持,如 gzip需要 zlib库; rewrite模块需要 pcre库; ssl功能需要 openssl
   # yum install gcc gcc-c++ zlib zlib-devel openssl openssl-devel pcre pcre-devel
   # useradd -s /sbin/nologin nginx
   # ./configure --prefix=/usr/local/nginx/ --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module
   # make && make install

3、Nginx启动
   # /usr/local/nginx/sbin/nginx �Cc /usr/local/nginx/conf/nginx.conf

4、Nginx停止
   # pkill -9 nginx ###强制停止所有 Nginx进程,建议使用下面的方法来操作
   或
   # kill -WINCH `cat /usr/local/nginx/logs/nginx.pid`
   # kill �CQUIT `cat /usr/local/nginx/logs/nginx.pid`

5、Nginx平滑重启 (重启前要对修改后的 conf做测试 )
   # /usr/local/nginx/sbin/nginx �Ct �Cc /usr/local/nginx/conf/nginx.conf ### -t参数测试配置文件
   # /usr/local/nginx/sbin/nginx �Cs reload �Cc /usr/local/nginx/conf/nginx.conf ###-s给主进程发送信号,可选参数 stopquitreopenreload
  或
   # kill �CHUP nginx主进程号

6、Nginx的平滑升级
   Nginx的升级 0.8版本之前是不能通过 make upgrade升级的,只能通过 kill的控制信号来操作
   方法
   1>.下载新版本的 nginx-1.3.15.tar.gz
   2>.查看旧版本安装时的参数
      # /usr/local/nginx/sbin/nginx �CV
   3>.重命名旧版本nginx可执行文件
      # mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old
   4>.解压并安装新版本nginx
      # tar -zxvf nginx-1.3.15.tar.gz
      # cd nginx-1.3.15/
      # ./configure --prefix=/usr/local/nginx/ --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module   ###这里的编译参数是通过-V得到的
      # make && make install   ###直接将新版本的 nginx安装到旧版本目录
   5>.通过USR2信号升级
      # kill -USR2 `cat log/nginx.pid`  ###旧版本 nginx的主进程将重命名它的 .pid.oldbin
   6>.启动新版本主进程
      # /usr/local/nginx/sbin/nginx  ###启动新版本的 nginx,此时 ps �Cef可以看到有两个 masterworker
   7>.先关闭旧版本的工作进程,一段时间后, 旧的工作进程在处理了所有已连接请求后退出,由新的工作进程来处理新的请求连接,而旧的主进程依然存在,通过 QUIT 开关退出旧版本主进程
      # kill �CWINCH ‘cat log/nginx.oldbin’ 
      # kill �CQUIT ‘cat log/nginx.oldbin’ 

   方法
   1-4中的步骤是相同的,只是在最后执行完make操作后,不执行make install
   5>.拷贝新版本源编译目录的下的nginx二进制文件至nginx可执行文件目录下
       # cp -a objs/nginx /usr/local/nginx/sbin/
   6>.执行升级操作
       # make upgrade
   7>.查看升级后的版本是否正确
       # /usr/local/nginx/sbin/nginx -V ###发现版本已由原来的 1.2.8升级成 1.3.15
 

本文出自 “麦田的守望” 博客,谢绝转载!

你可能感兴趣的:(nginx平滑升级)