這里我們使用的是上一篇文章封裝好的rhel7.3的虛擬機,主機名修改成了server1
環境:
虛擬機server1:rhel7.3系統
軟件:nginx-1.14.2.tar.gz、nginx-1.15.8.tar.gz ==> 點擊下載
我們這里的思想是熱部署將nginx-1.14.2版本升級到nginx-1.15.8
整個熱部署的思想是
修改配置文件nginx.conf后,重新生成新的worker進程,當然會以新的配置進行處理請求,而且新的請求必須都交給新的worker進程,至於老的worker進程,等把那些以前的請求處理完畢后,kill掉即可。
1.編譯安裝nginx(舊版本)
這里我使用lftp將兩個包放在了封裝好已經可以使用的虛擬機上,只需要解壓編譯安裝即可
-
tar zxf nginx-1.14.2.tar.gz
-
yum install gcc zlib-devel pcre-devel -y
-
cd nginx-1.14.2
-
vim auto/cc/gcc ##屏蔽其中的debug
-
./configure --prefix=/usr/ local/nginx
-
make&&make install
這樣nginx就成功的安裝在了server1上了,此時我們可以查看nginx的版本
/usr/local/nginx/sbin/nginx -v
開啟nginx
/usr/local/nginx/sbin/nginx
2.編譯新的nginx版本,並獲取二進制文件
-
tar zxf nginx-1.15.8.tar.gz
-
cd nginx-1.14.2
-
vim auto/cc/gcc ##屏蔽其中的debug
-
./configure - -prefix=/usr/local/nginx #路徑和之前安裝一樣
-
make ##切忌不要make install
-
cd objs
-
ls ##如下圖所示,nginx是我們需要的二進制文件
3.熱部署
我們可以使用以下命令查看nginx的進程
ps -ef |grep nginx ##查看nginx的進程
開始之前,我們首先要進行一個備份,回滾的時候會用到
-
cd /usr/local/nginx/sbin
-
cp nginx nginx.old ##這樣就備份了老的nginx
結下來就可以進行部署了
-
cp -f /root/nginx-1.15.8/objs/nginx /usr/ local/nginx/sbin/
-
kill -USR2 2086 ##相當於reload
-
ps -ef | grep nginx
-
kill -WINCH 2086 ##相當於kill -9
-
ps -ef | grep nginx
-
/usr/ local/nginx/sbin/nginx -v
如上圖所示,當我們替換掉nginx二進制文件以后,我們使用kill -USR2使新的nginx上線,然后使用kill -WINCH命令殺掉原來的進程,查看版本號,就已經是1.15了
4.回滾
如果我們發現升級有問題,我們想回滾怎么辦呢?
-
cp -f /usr/ local/nginx/sbin/nginx.old /usr/local/nginx/sbin/nginx
-
ps -ef |grep nginx
-
kill -HUP 2104
-
ps -ef |grep nginx
-
kill -USR2 2104
-
kill -WINCH 2104
-
ps -ef |grep nginx
-
/usr/ local/nginx/sbin/nginx -v
這樣就回滾回了1.14版本
ok~