Nginx 부 드 러 운 업그레이드 와 부 드 러 운 리 셋

현재 Nginx 서버 에 버 전 업 그 레이 드 를 하려 면 새 모듈 을 적용 해 야 합 니 다. 사용자 의 방문 이 많 을 때 고객 에 게 영향 을 주지 않 고 업 그 레이 드 를 해 야 한다 면 이 때 는 부 드 러 운 업 그 레이 드 를 고려 해 야 합 니 다.
        부 드 럽 게 업그레이드 하 는 과정 에서 Nginx 서버 는 USR 2 신 호 를 받 은 후 먼저 오래된 nginx. pid 파일 에 접 두 사 를 추가 합 니 다. oldbin 을 nginx. pid. oldbin 파일 로 바 꾼 다음 새 버 전의 Nginx 서버 의 바 이 너 리 파일 을 실행 하여 서 비 스 를 시작 합 니 다. 이 때 는 컴 파일 된 새 버 전의 바 이 너 리 를 sbin 폴 더 에 미리 복사 해 야 합 니 다.새로운 서비스 가 시작 되면 시스템 에는 신 구 두 개의 Nginx 서비스 가 공동으로 웹 서 비 스 를 제공 할 것 이다.이후 기 존 Nginx 서버 프로 세 스에 WINCH 신 호 를 보 내 기 존 Nginx 서 비 스 를 부 드 럽 게 중단 시 키 고 nginx. pid. oldbin 파일 을 삭제 해 야 합 니 다.WINCH 신 호 를 보 내기 전 오류 가 발견 되면 언제든지 새로운 Nginx 서 비 스 를 중단 할 수 있다.
        이전에 naginx 1.8.0 을 컴 파일 하여 설치 하 였 습 니 다.컴 파일 할 때 경로 에 따라 -- prefix = / nginx / 만 지정 합 니 다.nginx 1.8.0 에서 nginx 1.9.6 로 업그레이드 하 는 것 을 보 여 줍 니 다.
[root@c7node1 ~]# /nginx/sbin/nginx -V
nginx version: nginx/1.8.0
built by gcc 4.8.3 20140911 (Red Hat 4.8.3-9) (GCC) 
configure arguments: --prefix=/nginx/
[root@c7node1 ~]# ss -tnl
LISTEN     0      12                 *:80                             *:*

        업그레이드 과정 에서 웹 이 중단 되 지 않 았 음 을 테스트 하기 위해 초당 페이지 서 비 스 를 요청 할 수 있 는 스 크 립 트 를 제공 합 니 다.로그 에 기록
[root@c7node1 test]# vim http.sh 
#!/bin/bash
#
URL="http://192.168.0.66/"
HTTP_CODE=`curl -o /dev/null -s -w "%{http_code}" "${URL}"`
if [ $HTTP_CODE == 200 ];then
    echo Success.$HTTP_CODE >> /tmp/ping.http
else
    echo Failure.404 >> /tmp/ping.http
fi
#  http  ,           ping.http   

[root@c7node1 test]# vim cron.sh 
#!/bin/bash
#
while true;do
/test/http.sh
sleep 1
done
# cron          

[root@c7node1 test]# crontab -e
* * * * * /bin/bash /test/cron.sh
#       cron.sh  

        컴 파일 nginx - 1.9.6 을 다운로드 하고 부 드 러 운 업 그 레이 드 를 진행 합 니 다. Nginx 서버 의 부 드 러 운 업 그 레이 드 를 실현 하기 위해 새로운 서비스 설치 경 로 는 기 존의 서비스 설치 경로 와 일치 해 야 합 니 다.어떤 이유 로 일치 하지 않 으 면 오래된 서비스의 설치 경 로 를 새로운 서비스의 설치 경로 로 변경 해 야 합 니 다. 변경 방법 은 (nginx - p NewInstallPath) 입 니 다.
[root@c7node1 ~]# wget http://nginx.org/download/nginx-1.9.6.tar.gz
[root@c7node1 ~]# tar xf nginx-1.9.6.tar.gz
[root@c7node1 ~]# cd nginx-1.9.6
[root@c7node1 nginx-1.9.6]# ./configure --prefix=/nginx/ 
[root@c7node1 nginx-1.9.6]# make
[root@c7node1 mv /nginx/sbin/nginx{,.bak}
#      nginx,            nginx    ,         nginx   ,       
[root@c7node1 nginx-1.9.6]# cp objs/nginx /nginx/sbin/
#       nginx             
[root@c7node1 sbin]# /nginx/sbin/nginx -t
nginx: the configuration file /nginx//conf/nginx.conf syntax is ok
nginx: configuration file /nginx//conf/nginx.conf test is successful
#      nginx          
[root@c7node1 nginx-1.9.6]# kill -USR2 `cat /nginx/logs/nginx.pid`
#      Nginx      ,        Nginx  
[root@c7node1 nginx-1.9.6]# cd /nginx/logs/
access.log  error.log  nginx.pid  nginx.pid.oldbin
#            nginx.pid   nginx.pid.oldbin,    nginx  nginx.pid
[root@c7node1 logs]# kill -WINCH `cat /nginx/logs/nginx.pid.oldbin`
#        worker process
[root@c7node1 logs]# nginx -V
nginx version: nginx/1.9.6
built by gcc 4.8.3 20140911 (Red Hat 4.8.3-9) (GCC) 
configure arguments: --prefix=/nginx/

[root@c7node1 logs]# ps -aux |grep nginx
root       990  0.0  0.2  24316  1880 ?        S    11:25   0:00 nginx: master process nginx
nobody     992  0.9  0.2  24724  1712 ?        S    11:25   0:03 nginx: worker process
root      2357  0.0  0.1  24308   896 ?        Ss   11:20   0:00 nginx: master process nginx
#       master process  

테스트 결과
[root@c7node1 ~]# sort /tmp/ping.http | uniq -c
  32822 Success.200
#           

        이 부분 은 'Nginx 고성능 웹 서버 상세 설명' 을 참고 합 니 다.    
Nginx 서비스 빠 른 정지: 현재 Nginx 서비스 가 처리 하고 있 는 모든 네트워크 요청 을 즉시 중단 하고 연결 을 즉시 버 리 고 작업 을 중단 하 는 것 을 말 합 니 다.
[root@c7node1 ~]# kill -TERM `cat /nginx/logs/nginx.pid`
[root@c7node1 ~]# kill -INT `cat /nginx/logs/nginx.pid`

Nginx 서비스 정지: Nginx 서비스 가 현재 처리 중인 네트워크 요청 을 처리 할 수 있 도록 허용 하지만 새로운 요청 을 받 아들 이지 않 고 연결 을 닫 고 작업 을 중단 하 는 것 을 말 합 니 다.
[root@c7node1 ~]# kill -QUIT `cat /nginx/logs/nginx.pid`

Nginx 서 비 스 를 천천히 다시 시작 합 니 다: Nginx 서비스 프로 세 스 가 신 호 를 받 은 후 먼저 새로운 Nginx 프로필 을 읽 습 니 다. 설정 문법 이 정확 하면 새로운 Nginx 서 비 스 를 시작 한 다음 오래된 서비스 프로 세 스 를 천천히 닫 습 니 다. 새로운 Nginx 프로필 에 문제 가 있 으 면 오류 가 표 시 됩 니 다. 오래된 Nginx 프로 세 스 를 사용 하여 서 비 스 를 제공 합 니 다.
[root@c7node1 ~]# kill -HUP `cat /nginx/logs/nginx.pid`

로그 절단: 로그 파일 을 다시 엽 니 다. 로그 절단 에 자주 사 용 됩 니 다.
[root@c7node1 ~]# kill -USR1 `cat /nginx/logs/nginx.pid`

Nginx 서비스 업그레이드: 새로운 버 전의 Nginx 파일 로 서 비 스 를 시작 한 후 기 존의 Nginx 프로 세 스 를 천천히 중단 합 니 다.
[root@c7node1 ~]# kill -USR2 `cat /nginx/logs/nginx.pid`

워 커 프로 세 스 정지: Nginx 서비스 업그레이드 에 사용
[root@c7node1 ~]# kill -WINCH `cat /nginx/logs/nginx.pid`

좋은 웹페이지 즐겨찾기