nginx的熱部署(平滑升級)

一、安裝nginx-1.15.8版本

1.解壓,編譯,安裝nginx

[root@server1 ~]# ls
nginx-1.15.8.tar.gz  nginx-1.16.0.tar.gz
[root@server1 ~]# tar zxf nginx-1.15.8.tar.gz 
[root@server1 ~]# cd nginx-1.15.8
[root@server1 nginx-1.15.8]# ls
[root@server1 nginx-1.15.8]#  vim auto/cc/gcc
#關閉debug文件
# debug
#CFLAGS="$CFLAGS -g"

安裝依賴性,編譯:

yum install -y gcc pcre-devel zlib-devel

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

nginx源碼在src下

安裝:

[root@server1 nginx-1.15.8]# make && make install

objs目錄下多了nginx

2.給文件加高光

[root@server1 ~]# mkdir .vim
[root@server1 ~]# cd nginx-1.15.8/contrib/
[root@server1 contrib]# ls
README  geo2nginx.pl  unicode2nginx  vim
[root@server1 contrib]# cp -r vim/* ~/.vim/
[root@server1 contrib]# vim ../conf/nginx.conf 

3.設置nginx的worker工作數:

[root@server1 nginx-1.15.8]# vim /usr/local/nginx/conf/nginx.conf

user  nginx nginx;     ##設置使用nginx的用戶和組
worker_processes  2;    ##設置啓動worker進程爲2個


[root@server1 ~]# useradd nginx

設置最大連接數先設置系統允許最大連接數

vim /etc/security/limits.conf

nginx   -       nofile          65535

vim /usr/local/nginx/conf/nginx.conf

events {
    worker_connections  65535;
}

4.開啓nginx

[root@server1 ~]# /usr/local/nginx/sbin/nginx -t  #檢測文件
[root@server1 ~]# /usr/local/nginx/sbin/nginx -V  #查看版本號
[root@server1 ~]# /usr/local/nginx/sbin/nginx   

查看端口是否開啓:

[root@server1 ~]# netstat -tnlp

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      6208/nginx: master  

[root@server1 ~]# ps -ef | grep nginx  ##可以查看到nginx的master與worker進程,master用於監控

打開瀏覽器:http://172.25.60.1/

nginx安裝成功

二、Nginx版本更新(平滑升級)

先給源版本做備份,如果更新出錯,便於回退

[root@server1 ~]# cd /usr/local/nginx/sbin/
[root@server1 sbin]# cp nginx nginx.old
tar zxf nginx-1.16.0.tar.gz 
cd nginx-1.16.0
./configure --prefix=/usr/local/nginx --with-file-aio
make  #不能make install,會在/usr/local/nginx/目錄下生成sbin目錄,替換原來的目錄
cd objs/
cp -f nginx /usr/local/nginx/sbin/nginx ##-f,強制複製  不加會報nginx正在運行無法複製
ps -ef | grep nginx         ##查看nginx master和worker進程號
kill -USR2 6208(master進程號)  ##使當前版本的nginx執行完正在執行的任務後不再執行 這時新舊版本一起工作

ps -ef | grep nginx   ##可查看到新舊進程
kill -WINCH 6208	##關閉舊的master下的worker
ps -ef | grep nginx   ##可查看到只有新版的worker

/usr/local/nginx/sbin/nginx -V  ##可看到新版號

nginx更新成功!

三、nginx版本回退

[root@server1 ~]# cd /usr/local/nginx/sbin/
[root@server1 sbin]# ls
nginx  nginx.old
[root@server1 sbin]# cp -f nginx.old nginx
cp: overwrite 'nginx'? y
[root@server1 ~]# ps -ef | grep nginx
[root@server1 ~]# kill -HUP 6208   ##將舊版master喚醒
[root@server1 ~]# ps -ef | grep nginx

[root@server1 ~]# kill -USR2 18305
[root@server1 ~]# ps -ef | grep nginx

[root@server1 ~]# kill -WINCH 18305
[root@server1 ~]# ps -ef | grep nginx

[root@server1 ~]# /usr/local/nginx/sbin/nginx -V

 

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