>  기사  >  운영 및 유지보수  >  nginx 운영 및 유지 관리를 원활하게 업그레이드하는 방법

nginx 운영 및 유지 관리를 원활하게 업그레이드하는 방법

(*-*)浩
(*-*)浩원래의
2019-11-26 14:08:293026검색

nginx 운영 및 유지 관리를 원활하게 업그레이드하는 방법

You 서비스를 중단하지 않고 이전 버전을 새로운 nginx 실행 파일로 교체할 수 있습니다. 새 요청은 손실되지 않습니다(새 버전으로 업그레이드하거나 서버 모듈을 추가/제거할 때).                 (추천 학습: nginx 운영 및 유지 관리 )

먼저 기존 프로그램을 새로운 실행 프로그램으로 교체한 다음(백업하는 것이 가장 좋음) USR2(kill -USR2 pid) 신호를 주요 프로세스.

메인 프로세스는 .pid 파일의 이름을 .oldbin(예: /usr/local/nginx/logs/nginx.pid.oldbin)으로 바꾼 다음 새 실행 프로그램을 실행하고 새 메인 프로세스를 시작한 다음 새로운 작업자 프로세스:

  PID  PPID USER    %CPU   VSZ WCHAN  COMMAND
33126     1 root     0.0  1164 pause  nginx: master process /usr/local/nginx/sbin/nginx
33134 33126 nobody   0.0  1368 kqread nginx: worker process (nginx)
33135 33126 nobody   0.0  1380 kqread nginx: worker process (nginx)
33136 33126 nobody   0.0  1368 kqread nginx: worker process (nginx)
36264 33126 root     0.0  1148 pause  nginx: master process /usr/local/nginx/sbin/nginx
36265 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)
36266 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)
36267 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)

이제 두 개의 nginx 인스턴스가 동시에 실행되어 들어오는 요청을 함께 처리합니다. 이전 인스턴스를 단계적으로 종료하려면 WINCH 신호를 이전 마스터 프로세스에 보내야 합니다. 그러면 작업자 프로세스가 정상적으로 종료되기 시작합니다.

  PID  PPID USER    %CPU   VSZ WCHAN  COMMAND
33126     1 root     0.0  1164 pause  nginx: master process /usr/local/nginx/sbin/nginx
33135 33126 nobody   0.0  1380 kqread nginx: worker process is shutting down (nginx)
36264 33126 root     0.0  1148 pause  nginx: master process /usr/local/nginx/sbin/nginx
36265 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)
36266 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)
36267 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)

일정 시간이 지나면 연결된 모든 요청을 처리한 후 이전 작업자 프로세스가 종료됩니다. , 새 작업자 프로세스만 들어오는 요청을 처리합니다.

  PID  PPID USER    %CPU   VSZ WCHAN  COMMAND
33126     1 root     0.0  1164 pause  nginx: master process /usr/local/nginx/sbin/nginx
36264 33126 root     0.0  1148 pause  nginx: master process /usr/local/nginx/sbin/nginx
36265 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)
36266 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)
36267 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)

이때 이전 서버가 아직 수신 대기 중인 소켓을 닫지 않았기 때문에 다음 단계에 따라 이전 서버를 복원할 수 있습니다. 서버:

이전 기본 프로세스에 HUP 신호 보내기 - 구성 파일을 다시 로드하지 않고 작업자 프로세스를 시작합니다.

새 기본 프로세스에 QUIT 신호를 보내 작업자 프로세스를 정상적으로 종료하도록 요청합니다.

새 기본 프로세스에 TERM 신호 보내기 메인 프로세스를 강제로 종료합니다

어떤 이유로 새 작업자 프로세스를 종료할 수 없으면 KILL 신호를 보냅니다.

새 메인 프로세스가 종료된 후 이전 메인 프로세스는 .oldbin 접두사로 제거되고 . pid 파일을 삭제하고 모든 것이 업그레이드 전 상태로 복원됩니다.

업그레이드 시도가 성공했고 새 서버도 유지하려면 이전 기본 프로세스에 QUIT 신호를 보내 종료하고 새 서버만 실행 중인 상태로 두세요.

      PID  PPID USER    %CPU   VSZ WCHAN  COMMAND
    36264     1 root     0.0  1148 pause  nginx: master process /usr/local/nginx/sbin/nginx
    36265 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)
    36266 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)
    36267 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)

위 내용은 nginx 운영 및 유지 관리를 원활하게 업그레이드하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.