nginx熱部署更新和日誌切割

原來版本是1.12的裝在/usr/local/nginx2,現在需要更新成1.16的,需要進過以下步驟

1:查看現有nginx進程信息 ps -ef | grep nginx

root          7508     1  0 21:46 ?        00:00:00 nginx: master process ./sbin/nginx
nobody    7509  7508  0 21:46 ?        00:00:00 nginx: worker process
root          7524  1231  0 21:58 pts/0    00:00:00 grep nginx

然後把舊的二進制文件備份下

cp /usr/local/nginx2/sbin/nginx nginx.old

2: 把新的nginx的二進制文件覆蓋掉舊的nginx二進制文件

cd /data/soft/nginx-1.16.0

../configure --prefix=/usr/local/nginx2

make

cp -r /data/soft/nginx-1.16.0/objs/nginx /usr/local/nginx2/sbin/ -f

/data/soft/nginx-1.16.0/objs這個目錄是新的nginx1.16編輯後纔有的

3:給正在運行舊的nginx的master進程發個信號告訴master進程我們要熱部署了

kill -USR2 7508

運行之後發現會新起一個master進程和worker進程,老的master跟worker都還在,只是不再監聽80跟443端口了

root      7508     1  0 21:46 ?        00:00:00 nginx: master process ./sbin/nginx
nobody    7509  7508  0 21:46 ?        00:00:00 nginx: worker process
root      7552  7508  0 22:16 ?        00:00:00 nginx: master process ./sbin/nginx
nobody    7553  7552  0 22:16 ?        00:00:00 nginx: worker process

./nginx -V
/usr/local/nginx2/sbn/nginx version: nginx/1.16.0

已經是新的版本了

4:把舊的worker進程優雅的關掉

kill -WINCH 7508

這個時候你會發現老的master進程還在,worker進程不在了,老的master進程流着可以做版本回退

 

二:日誌切割

   1:把原來的access.log備份下

    mv access.log access.log.bak

2: 執行:

./sbin/nginx -s reopen

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章