Nginx版本平滑升級

一、編譯安裝nginx-1.14.2
nginx

# yum -y install gcc pcre pcre-devel zlib zlib-devel瀏覽器

# tar -xf nginx-1.14.2.tar.gz併發

# cd nginx-1.14.2ide

# ./configure --prefix=/usr/local/nginxspa

# make && make install日誌

二、確保以絕對路徑的方式啓動Nginxblog

# /usr/local/nginx/sbin/nginx進程

備註:若是配置了環境變量PATH,且直接以nginx命令的方式啓動,以後執行kill -USR2命令時,/usr/local/nginx/logs/error.log錯誤日誌文件會提示execve() failed while executing new binary process "nginx" (2: No such file or directory)it

# ss -tunlp | grep -w :80編譯

瀏覽器訪問http://122.51.34.214/

image.png

三、查看升級前Nginx版本:

# /usr/local/nginx/sbin/nginx -v

image.png

四、編譯nginx-1.16.1

# tar -xf nginx-1.16.1.tar.gz

# cd nginx-1.16.1

# ./configure --prefix=/usr/local/nginx

# make

備註:

(1)執行configure命令時選項要比舊版本只多很多,執行完成後會生成objs目錄

(2)執make命令用於在objs目錄下生成nginx二進制文件

(3)不能執行make install命令

五、使用ab命令壓測,模擬升級時的多併發訪問:

# yum -y install httpd-tools

# ab -n 10000 -c 20 http://122.51.34.214/

六、備份舊版本Nginx二進制文件:# cp /usr/local/nginx/sbin/nginx{,_1.14.2}

七、將新版本Nginx二進制文件強制替換舊版本二進制文件(不替換配置文件):

# cp -f nginx-1.16.1/objs/nginx /usr/local/nginx/sbin/

image.png

# ll /usr/local/nginx/sbin/

image.png

八、向舊master進程發送USR2信號,告知版本升級,舊master進程首先將logs/nginx.pid文件重命名爲nginx.pid.oldbin,而後運行新版本Nginx二進制文件,啓動新master進程,新master進程啓動新worker進程,其中新master進程的父進程是舊master進程

# ps -ef | grep nginx | grep -v grep

# kill -USR2 [old-master-pid]

image.png

九、向舊master進程發送WINCH信號,告知其優雅關閉舊worker進程,但舊master進程不會自動退出:

# kill -WINCH [old-master-pid]

image.png

十、若是確認新worker進程正常工做,能夠向舊master進程發送QUIT信號,告知其自動退出:

# kill -QUIT [old-master-pid]

image.png

十一、查看升級後Nginx版本:

# /usr/local/nginx/sbin/nginx -v

image.png

十二、更新並從新加載配置文件

附:若是新版本Nginx不能正常工做,須要回退至舊版本Nginx

一、向master進程發送HUP信號,告知其啓動舊worker進程:

# kill -HUP [old-master-pid]

二、向新master進程發送QUIT信號,告知其優雅關閉新worker進程並自動退出:

# kill -QUIT [new-master-pid]

三、nginx_1.14.2還原爲nginx

相關文章
相關標籤/搜索