原來版本是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
Nginx 熱部署及新增模組和日誌切割
當從老版本替換為新版本的 nginx 的時候,如果不熱部署的話,會需要取消 nginx 服務並重啟服務才能替換成功,這樣的話會使正在訪問的使用者在斷開連線,所以為了在不影響使用者的體驗下進行版本公升級,就需要熱部署來公升級版本。因為進行公升級主要是更換二進位制檔案,所以在公升級前先備份舊的二進位制檔...
nginx命令列及演示 過載 熱部署 日誌切割
過載配置檔案 nginx s reload 熱部署 公升級nginx 首先備份二進位制檔案 cp nginx nginx.old 拷貝新版本的nginx替換以前的nginx二進位制檔案 cp nginx新 nginx。傳送訊號 kill usr2 nginx master舊程序pid 啟動新的mas...
遊戲大版本更新和熱更新
一般來說,不能通過小版本更新解決的問題,才會用到大版本更新,例如,不可熱更的遊戲 而熱更新是建立在每次大版本更新的基礎上進行的更新,因此,這2種更新方式應該互相承接。我們可以通過md5檔案和更新檔案以及版本號來實現大版本更新和熱更新。遊戲的版本號由大版本號 資源版本號構成,每一次大版本更新,大版本號...