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 중국어 웹사이트의 기타 관련 기사를 참조하세요!