天天看點

Nginx的安裝、啟動、停止和平滑更新

Nginx簡介

   Nginx是俄羅斯人編寫的一款高性能的HTTP和反向代理伺服器。它可以選擇高效的epoll、kqueue、eventport作為網絡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 –c

/usr/local/nginx/conf/nginx.conf

4、Nginx停止

   # pkill -9 nginx ###強制停止所有Nginx程序,建議使用下面的方法來操作

   或

   # kill -WINCH `cat

/usr/local/nginx/logs/nginx.pid`

   # kill –QUIT `cat

5、Nginx平滑重新開機(重新開機前要對修改後的conf做測試)

   # /usr/local/nginx/sbin/nginx –t –c

/usr/local/nginx/conf/nginx.conf ### -t參數測試配置檔案

   # /usr/local/nginx/sbin/nginx –s reload –c

/usr/local/nginx/conf/nginx.conf ###-s給主程序發送信号,可選參數stop、quit、reopen、reload

  或

   # kill –HUP nginx主程序号

6、Nginx的平滑更新

   Nginx的更新0.8版本之前是不能通過make

upgrade更新的,隻能通過kill的控制信号來操作

   方法一:

   1>.下載下傳新版本的nginx-1.3.15.tar.gz

   2>.檢視舊版本安裝時的參數

      # /usr/local/nginx/sbin/nginx –V

   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 –ef可以看到有兩個master、worker

   7>.先關閉舊版本的工作程序,一段時間後,舊的工作程序在處理了所有已連接配接請求後退出,由新的工作程序來處理新的請求連接配接,而舊的主程序依然存在,通過QUIT開關退出舊版本主程序

      # kill –WINCH ‘cat log/nginx.oldbin’ 

      # kill –QUIT ‘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