熱部署主要是是安裝目錄下objs目錄的替換。詳細(xì)安裝可以參考http://www.itdecent.cn/p/0237227b9bd4。
這里有2個(gè)假設(shè)。當(dāng)前系統(tǒng)的nginx安裝在/usr/local/nginx下。
準(zhǔn)備下載的nginx,解壓縮在/home/owen/nginx-1.16.0下
1. 在nginx 官方下載最新包,wget?http://nginx.org/download/nginx-1.16.0.tar.gz
tar -zxvf?nginx-1.16.0.tar.gz
configure make make install后。會(huì)生成objs文件。
2. copy nginx 到準(zhǔn)備熱部署的目錄下,注意先備份目標(biāo)目錄下的nginx。
mv?/usr/local/nginx/sbin/ngin?/usr/local/nginx/sbin/nginx_backup
3. cp 最新的nginx到準(zhǔn)備替換的目錄下。 cp?/home/owen/nginx-1.16.0/objs/nginx /usr/local/nginx/sbin/
4. 通知當(dāng)前在運(yùn)行的nginx,系統(tǒng)要進(jìn)行熱部署。查看/usr/local/nginx/logs/nginx.pid,得到進(jìn)程號(hào)為32438(你需要看你自己目錄的進(jìn)程)
執(zhí)行命令 kill -USR2 32438
ps -ef | grep nginx 會(huì)發(fā)現(xiàn)目前系統(tǒng)中有2個(gè)nginx在運(yùn)行,此時(shí)需要告訴32438 進(jìn)程的nginx 優(yōu)雅的關(guān)閉。
kill -WINCH 32438?
這樣nginx熱部署就成功了。
nginx winch后,舊的nginx進(jìn)程并沒(méi)有關(guān)閉。剩下可以reopon回來(lái)。