centos下安裝nginx (轉)

先安裝編譯環境nginx

yum groupinstall "Development tools"web

yum -y install zlib zlib-devel openssl openssl--devel pcre pcre-devel服務器

下載安裝包spa

wget http://nginx.org/download/nginx-1.5.10.tar.gz日誌

解壓壓縮包server

tar -xvf nginx-1.5.10.tar.gz進程

打包解壓目錄ssl

cd nginx-1.5.10get

編譯並安裝命令:openssl

./configure

make

make install

能夠添加prefix參數指定安裝目錄,這裏默認安裝到/usr/local/nginx,能夠用help參數查看全部參數

編譯選項舉例以下:

--prefix=<path>   Nginx安裝路徑。若是沒有指定,默認爲/usr/local/nginx

--sbin-path=<path>   Nginx可執行文件安裝路徑。只能安裝時指定,若是沒有指定,默認爲<prefix>/sbin/nginx

--conf-path=<path>   在沒有給定 –c 選項下默認的nginx.conf的路徑。若是沒有指定,默認爲<prefix>/conf/nginx.conf

--pid-path=<path>     在nginx.conf中沒有指定pid指令的狀況下,默認的Nginx.pid的路徑。若是沒有指定,默認爲<prerix>/logs/nginx.pid

等等

啓動Nginx

啓動Nginx,能夠執行如下命令。假設Nginx安裝在/usr/locaUnginx/目錄中,那麼啓動Nginx的命令就是:

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

參數「-c」指定了配置文件的路徑,若是不加「-c」參數,Nginx會默認加載其安裝目錄的conf子目錄中的nginx.conf文件

Nginx的中止

Nginx的中止方法有不少種,通常經過發送系統信號給Nginx主進程的方式來中止Nginx。

咱們能夠經過ps命令來查找Nginx的主進程號:

ps –ef | grep nginx

root      5301     1  0 23:02 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

nobody    5302  5301  0 23:02 ?        00:00:00 nginx: worker process                                         

root      5310  2912  0 23:03 pts/0    00:00:00 grep nginx

從圖中能夠看到,1個Nginx進程的備註信息爲「master process」,表示它爲主進程,另外的1個進程備註信息爲「worker process」,表示它們爲子進程。5301爲主進程號。

若是在nginx.conf配置文件中指定了pid文件存放的路徑(例如:/usr/local/ nginx/logs /nginx.pid;),該文件中存放的就是Nginx當前的主進程號。若是沒有指定pid文件存放的路徑,nginx.pid文件默認存放在 Nginx安裝目錄的logs目錄下。因此,咱們也能夠直接經過如下命令來完成,省下尋找Nginx主進程號的步驟:

kill -信號類型  `/usr/local/ nginx/logs/nginx.pid`

(1)從容中止Nginx。

kill - QUIT Nginx主進程號  或者   kill -QUIT `/usr/local/nginx/logs/nginx.pid`

(2)快速中止Nginx

kill - TERM Nginx主進程號 或者  kill -TERM `/usr/local/ nginx/logs/nginx.pid`

kill - INT Nginx主進程號    或者   kill -INT `/usr/local/ nginx/logs/nginx.pid`

(3)強制中止全部Nginx進程

pkill –9 nginx

Nginx的平滑重啓

若是改變了Nginx的配置文件(nginx conf),想重啓Nginx,一樣能夠經過發送系統信號給Nginx主進程的方式來進行。不過,重啓以前,要確認Nginx配置文件 (nginx.conf)的語法是正確的,不然Nginx將不會加載新的配置文件。經過如下命令能夠判斷Nginx配置文件是否正確:

/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

kill -HUP Nginx主進程號

kill一HUP   `/usr/local/nginx/logs/nginx.pid`

當Nginx接收到HUP信號時,它會嘗試先解析配置文件,若是成功,就應用新的配置文件(例如,從新打開日誌文件或監聽的套接字)。之 後,Nginx運行新的工做進程並從容關閉舊的工做進程。通知工做進程關閉監聽套接字,可是繼續爲當前鏈接的客戶提供服務。全部客戶端的服務完成後,舊的 工做進程被關閉。若是新的配置文件應用失敗,Nginx將繼續使用舊的配置進行工做。

Nginx支持如下幾種信號類型:

•TERM,INT快速關閉;

•QUIT從容關閉;

•HUP平滑重啓,從新加載配置文件;

•USR1從新打開日誌文件,在切割日誌時用途較大;

•USR2平滑升級可執行程序;

•WINCH從容關閉工做進程。

Nginx的平滑升級

當須要將正在運行中的Nginx升級、添加,刪除服務器模塊時,能夠在不中斷服務的狀況下,使用新版本、重編譯的Nginx可執行程序替換舊版本的可執行程序。步驟以下:

(1)使用新的可執行程序替換舊的可執行程序,對於編譯安裝的Nginx,能夠將新版本編譯安裝到舊版本的Nginx安裝路徑中。替換以前,您最好備份一下舊的可執行文件。

(2)發送如下指令:

kill –USR2 舊版本的nginx主進程號

(3)舊版本Nginx的主進程將重命名它的.pid文件爲.oldbin(例如:/usr/local/webserver/nginx/logs/nginx.pid.oldbin),而後執行新版本的Nginx可執行程序,依次啓動新的主進程和新的工做進程。

(4)此時,新、舊版本的Nginx實例會同時運行,共同處理輸入的請求。要逐步中止舊版本的Nginx實例,你必須發送WINCH信號給舊的主進程,而後,它的工做進程就將開始從容關閉:

kill -WINCH 舊版本的Nginx主進程號

(5) 一段時間後,舊的工做進程(worker process)處理了全部已鏈接的請求後退出,僅由新的工做進程來處理輸入的請求了:

(6)這時候,咱們能夠決定是使用新版本,仍是恢復到舊版本:

kill HUP     舊的主進程號:Nginx將在不重載配置文件的狀況下啓動它的工做進程;

kill QUIT    新的主進程號:從容關閉其工做進程(worker process)

kill TERM   新的主進程號:強制退出;

kill  新的主進程號或舊的主進程號:若是由於某些緣由新的工做進程不能退出,則向其發送kill信號。

新的主進程退出後,舊的主進程會移除.oldbin前綴,恢復爲它的.pid文件,這樣,一切就都恢復到升級以前了。若是嘗試升級成功,而你也但願保留新的服務器時,可發送QUIT信號給舊的主進程,使其退出而只留下新的服務器運行:

相關文章
相關標籤/搜索