2012-10-31 41 views
1

我有一個nginx現在在一個實時網站上運行,但我需要重新編譯它來添加一些額外的功能。我使用的命令是。重新編譯Nginx

make clean 
./configure -- BLA BLA BLA 
make 
make install 

只是爲了確認,我並不需要停止nginx的,直到我跑「make install」吧? 'make'命令花費的時間最長,我只想100%確定我不需要更快地停止Nginx。

所以要確認一下,這意味着真的只是一兩個停機時間。

make clean 
./configure -- BLA BLA BLA 
make 
/etc/init.d/nginx stop 
make install 
/etc/init.d/nginx start 

回答

2

你是對的,讓剛做鏈接和編譯,而make install的將系統

0

你並不需要有一個停機時間上安裝它。您編譯並替換可執行文件。 然後你觸發nginx產生一個新的主人。 在此過程解釋: http://nginx.org/en/docs/control.html#upgrade

New Version - Master - start: 
kill -s USR2 `cat /var/run/nginx.pid` 

Old Version - Worker - stop: 
kill -s WINCH `cat /var/run/nginx.pid.oldbin` 
Old Version - Master - stop: 
kill -s QUIT `cat /var/run/nginx.pid.oldbin` 

如果你想回到舊的版本:如果你得到一個錯誤

Old Version - Worker - start: 
kill -s HUP `cat /var/run/nginx.pid.oldbin` 
New Version - Master - stop: 
kill -s QUIT `cat /var/run/nginx.pid` 

該文件無法替代你的編譯選項是錯誤的。

--sbin-path=/usr/sbin/nginx 
+0

什麼時候在'make clean',''。/ configure','make'生命週期中發生? –

+0

@MajorProductionsLLC'make install'後。據我瞭解,舊的主進程只能在RAM中生存,因爲在生成新的主進程之前可執行文件被替換。一旦「舊版本主站」停止,替換過程就完成了,直到重新編譯之後才能撤消。 – unNamed