真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

nginx的平滑升級(jí)

$$$$$$$$$$$$$$$$$$$$$$$$$$$$理論大概$$$$$$$$$$$$$$$$$$$$$$$

創(chuàng)新互聯(lián)公司專注于海南州企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站建設(shè),購(gòu)物商城網(wǎng)站建設(shè)。海南州網(wǎng)站建設(shè)公司,為海南州等地區(qū)提供建站服務(wù)。全流程按需求定制制作,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)

一、為什么要對(duì) nginx 平滑升級(jí)
隨著 nginx 越來(lái)越流行,并且 nginx 的優(yōu)勢(shì)也越來(lái)越明顯,nginx 的版本迭代也來(lái)時(shí)加速 模式,1.9.0版本的nginx更新了許多新功能,例如 stream 四層代理功能,伴隨著 nginx 的廣泛應(yīng)用,版本升級(jí)必然越來(lái)越快,線上業(yè)務(wù)不能停,此時(shí) nginx 的升級(jí)就是運(yùn)維的工作了。

二、nginx 方便地幫助我們實(shí)現(xiàn)了平滑升級(jí)。其原理簡(jiǎn)單概括,就是:
(1)在不停掉老進(jìn)程的情況下,啟動(dòng)新進(jìn)程。
(2)老進(jìn)程負(fù)責(zé)處理仍然沒(méi)有處理完的請(qǐng)求,但不再接受處理請(qǐng)求。
(3)新進(jìn)程接受新請(qǐng)求。
(4)老進(jìn)程處理完所有請(qǐng)求,關(guān)閉所有連接后,停止。 這樣就很方便地實(shí)現(xiàn)了平滑升級(jí)。一般有兩種情況下需要升級(jí) nginx,一種是確實(shí)要升級(jí) nginx 的版本,另一種是要為 nginx 添加新的模塊。

三、nginx 平滑升級(jí)原理
多進(jìn)程模式下的請(qǐng)求分配方式
nginx 默認(rèn)工作在多進(jìn)程模式下,即主進(jìn)程(master process)啟動(dòng)后完成配置加載和端口綁定等動(dòng)作,fork出指定數(shù)量的工作進(jìn)程(worker process),這些子進(jìn)程會(huì)持有監(jiān)聽(tīng)端口的文件描述符(fd),并通過(guò)在該描述符上添加監(jiān)聽(tīng)事件來(lái)接受連接(accept)。
信號(hào)的接收和處理
nginx 主進(jìn)程在啟動(dòng)完成后會(huì)進(jìn)入等待狀態(tài),負(fù)責(zé)響應(yīng)各類系統(tǒng)消息,如SIGCHLD、SIGHUP、SIGUSR2等。

四、Nginx信號(hào)簡(jiǎn)介:
主進(jìn)程支持的信號(hào)
? TERM, INT: 立刻退出
? QUIT: 等待工作進(jìn)程結(jié)束后再退出
? KILL: 強(qiáng)制終止進(jìn)程
? HUP: 重新加載配置文件,使用新的配置啟動(dòng)工作進(jìn)程,并逐步關(guān)閉舊進(jìn)程。
? USR1: 重新打開(kāi)日志文件
? USR2: 啟動(dòng)新的主進(jìn)程,實(shí)現(xiàn)熱升級(jí)
? WINCH: 逐步關(guān)閉工作進(jìn)程

工作進(jìn)程支持的信號(hào)
? TERM, INT: 立刻退出
? QUIT: 等待請(qǐng)求處理結(jié)束后再退出
? USR1: 重新打開(kāi)日志文件

%%%%%%%%%%%%%%%%%%%nginx 平滑升級(jí)的過(guò)程%%%%%%%%%%%%%%%%%%

1、yum安裝的nginx升級(jí),以當(dāng)前nginx為nginx-1.12.2版本升級(jí)到nginx-1.16.1為例

 yum -y install nginx          (為什么可以直接yum,因?yàn)閑pel擴(kuò)展源里存在nginx-1.12.2)

systemctl start nginx
systemctl status nginx      (確定已經(jīng)開(kāi)啟nginx)     

nginx -V                        檢測(cè)版本與配置參數(shù)

nginx version: nginx/1.12.2
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/share/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/lib/nginx/tmp/client_body --http-proxy-temp-path=/var/lib/nginx/tmp/proxy --http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi --http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi --http-scgi-temp-path=/var/lib/nginx/tmp/scgi --pid-path=/run/nginx.pid --lock-path=/run/lock/subsys/nginx --user=nginx --group=nginx --with-file-aio --with-ipv6 --with-http_auth_request_module --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module=dynamic --with-http_image_filter_module=dynamic --with-http_geoip_module=dynamic --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module --with-http_stub_status_module --with-http_perl_module=dynamic --with-mail=dynamic --with-mail_ssl_module --with-pcre --with-pcre-jit --with-stream=dynamic --with-stream_ssl_module --with-google_perftools_module --with-debug --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic' --with-ld-opt='-Wl,-z,relro -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -Wl,-E'

2,開(kāi)始升級(jí)版本由nginx-1.12.2升級(jí)到nginx-1.16.1版本。按照原來(lái)的編譯參數(shù)安裝 nginx 的方法進(jìn)行安裝,只需要到 make,千萬(wàn)不要 make install 。如果make install 會(huì)將原來(lái)的配置文件覆蓋

wget http://nginx.org/download/nginx-1.16.1.tar.gz     

tar xzf nginx-1.16.1.tar.gz -C /usr/local 解壓壓縮包到指定位置

yum -y install GeoIP GeoIP-devel GeoIP-data perl-devel perl-ExtUtils-Embed gd-devel libxml2 libxslt-devel gperftools

yum install -y gcc gcc-c++ pcre-devel openssl-devel zlib-devel 添加環(huán)境

cd /usr/local ( cd到解壓后的目錄 )
ls
cd nginx-1.16.1/

[root@localhost nginx-1.16.1]#nginx -V (配置參數(shù)前先查看原來(lái)版本的參數(shù))
[root@localhost nginx-1.16.1]#./configure --prefix=/usr/share/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/lib/nginx/tmp/client_body --http-proxy-temp-path=/var/lib/nginx/tmp/proxy --http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi --http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi --http-scgi-temp-path=/var/lib/nginx/tmp/scgi --pid-path=/run/nginx.pid --lock-path=/run/lock/subsys/nginx --user=nginx --group=nginx --with-file-aio --with-ipv6 --with-http_auth_request_module --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module=dynamic --with-http_image_filter_module=dynamic --with-http_geoip_module=dynamic --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module --with-http_stub_status_module --with-http_perl_module=dynamic --with-mail=dynamic --with-mail_ssl_module --with-pcre --with-pcre-jit --with-stream=dynamic --with-stream_ssl_module --with-google_perftools_module --with-debug
(配置升級(jí)版本的參數(shù)要與原版本相同的參數(shù),復(fù)制到--with-debug 即可,其后的--with cc的都不需要)

make

3,備份原 nginx 二進(jìn)制文件 (yum安裝的nginx,其二進(jìn)制文件和配置文件默認(rèn)存放于/usr/sbin/)備份二進(jìn)制文件和 nginx 的配置文件(期間nginx不會(huì)停止服務(wù))
mv /usr/sbin/nginx /usr/sbin/nginx_$(date +%F)

4,復(fù)制新版本的nginx二進(jìn)制文件,進(jìn)入新的nginx源碼包
cp /usr/local/nginx-1.16.1/objs/nginx /usr/sbin/

5,測(cè)試新版本的nginx是否正常
/usr/sbin/nginx -t
若出現(xiàn)如下報(bào)錯(cuò):
nginx: [emerg] module "/usr/lib64/nginx/modules/ngx_http_geoip_module.so" version 1012002 instead of 1016001 in /usr/share/nginx/modules/mod-http-geoip.conf:1
nginx: configuration file /etc/nginx/nginx.conf test failed
解決方法:
#vim /etc/nginx/nginx.conf (編輯nginx的主配置文件)
找到#include /usr/share/nginx/modules/*.conf;這一句并將其注釋即可

/usr/sbin/nginx -t (再次測(cè)試便不會(huì)在報(bào)錯(cuò))

6、給nginx發(fā)送平滑遷移信號(hào)(若不清楚pid路徑,請(qǐng)查看/etc/nginx/nginx.conf配置文件)
kill -USR2 cat /var/run/nginx.pid

(查看pid也可find / -name "nginx.pid")

7.查看nginx pid,會(huì)出現(xiàn)一個(gè)nginx.pid.oldbin
[root@localhost nginx-1.16.1]# ll /var/run/nginx.pid*
-rw-r--r--. 1 root root 5 8月 24 01:30 /var/run/nginx.pid
-rw-r--r--. 1 root root 5 8月 24 01:30 /var/run/nginx.pid.oldbin

8、從容關(guān)閉舊的Nginx進(jìn)程
#kill -WINCH cat /var/run/nginx.pid.oldbin

9、此時(shí)不重載配置啟動(dòng)舊的工作進(jìn)程
#kill -HUP cat /var/run/nginx.pid.oldbin

10、結(jié)束工作進(jìn)程,完成此次升級(jí)
#kill -QUIT cat /var/run/nginx.pid.oldbin

11、驗(yàn)證Nginx是否升級(jí)成功
nginx -V
nginx version: nginx/1.16.1 版本升級(jí)成功為nginx-1.16.1
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled


文章名稱:nginx的平滑升級(jí)
標(biāo)題路徑:http://weahome.cn/article/ijsicd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部