您好,登錄后才能下訂單哦!
1、編譯安裝nginx-1.14.2:
# yum -y install gcc pcre pcre-devel zlib zlib-devel
# tar -xf nginx-1.14.2.tar.gz
# cd nginx-1.14.2
# ./configure --prefix=/usr/local/nginx
# make && make install
2、確保以絕對路徑的方式啟動Nginx:
# /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)
# ss -tunlp | grep -w :80
瀏覽器訪問http://122.51.34.214/
3、查看升級前Nginx版本:
# /usr/local/nginx/sbin/nginx -v
4、編譯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命令
5、使用ab命令壓測,模擬升級時的多并發訪問:
# yum -y install httpd-tools
# ab -n 10000 -c 20 http://122.51.34.214/
6、備份舊版本Nginx二進制文件:# cp /usr/local/nginx/sbin/nginx{,_1.14.2}
7、將新版本Nginx二進制文件強制替換舊版本二進制文件(不替換配置文件):
# cp -f nginx-1.16.1/objs/nginx /usr/local/nginx/sbin/
# ll /usr/local/nginx/sbin/
8、向舊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]
9、向舊master進程發送WINCH信號,告知其優雅關閉舊worker進程,但舊master進程不會自動退出:
# kill -WINCH [old-master-pid]
10、如果確認新worker進程正常工作,可以向舊master進程發送QUIT信號,告知其自動退出:
# kill -QUIT [old-master-pid]
11、查看升級后Nginx版本:
# /usr/local/nginx/sbin/nginx -v
12、更新并重新加載配置文件
附:如果新版本Nginx不能正常工作,需要回退至舊版本Nginx
1、向舊master進程發送HUP信號,告知其啟動舊worker進程:
# kill -HUP [old-master-pid]
2、向新master進程發送QUIT信號,告知其優雅關閉新worker進程并自動退出:
# kill -QUIT [new-master-pid]
3、將nginx_1.14.2還原為nginx
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。