서비스를 중단하지 않고 이전 nginx 실행 파일을 새 실행 파일로 교체할 수 있습니다. 새 요청은 손실되지 않습니다(새 버전으로 업그레이드하거나 서버 모듈을 추가/제거할 때). (추천 학습: nginx 운영 및 유지 관리)
먼저 새 실행 프로그램을 사용하여 기존 프로그램을 교체한 다음(백업을 만드는 것이 가장 좋음) USR2(kill-USR2pid) 신호를 메인 프로세스에 보냅니다.
기본 프로세스는 .pid 파일의 이름을 .oldbin(예: /usr/local/nginx/logs/nginx.pid.oldbin)으로 바꾼 다음 새 실행 프로그램을 실행하고 새 기본 프로세스와 새 작업을 순서대로 시작합니다. 프로세스:
PIDPPIDUSER%CPUVSZWCHANCOMMAND
331261root0.01164pausenginx:masterprocess/usr/local/nginx/sbin/nginx
3313433126nobody0.01368kqreadnginx:workerprocess(nginx)
3313533126nobody0.01380kqreadnginx:workerprocess(nginx)
3313633126nobody0.01368kqreadnginx:workerprocess(nginx)
3626433126root0.01148pausenginx:masterprocess/usr/local/nginx/sbin/nginx
3626536264nobody0.01364kqreadnginx:workerprocess(nginx)
3626636264nobody0.01364kqreadnginx:workerprocess(nginx)
3626736264nobody0.01364kqreadnginx:workerprocess(nginx)
이때 두 개의 nginx 인스턴스가 동시에 실행되어 들어오는 요청을 함께 처리합니다. 이전 인스턴스를 단계적으로 종료하려면 이전 마스터 프로세스에 WINCH 신호를 보내야 합니다. 그러면 해당 작업자 프로세스가 정상적으로 종료되기 시작합니다.
PIDPPIDUSER%CPUVSZWCHANCOMMAND
331261root0.01164pausenginx:masterprocess/usr/local/nginx/sbin/nginx
3313533126nobody0.01380kqreadnginx:workerprocessisshuttingdown(nginx)
3626433126root0.01148pausenginx:masterprocess/usr/local/nginx/sbin/nginx
3626536264nobody0.01364kqreadnginx:workerprocess(nginx)
3626636264nobody0.01364kqreadnginx:workerprocess(nginx)
3626736264nobody0.01364kqreadnginx:workerprocess(nginx)
잠시 후 이전 작업자 프로세스는 연결된 모든 요청을 처리한 다음 종료되고 새 작업자 프로세스만 들어오는 요청을 처리하게 됩니다.
PIDPPIDUSER%CPUVSZWCHANCOMMAND
331261root0.01164pausenginx:masterprocess/usr/local/nginx/sbin/nginx
3626433126root0.01148pausenginx:masterprocess/usr/local/nginx/sbin/nginx
3626536264nobody0.01364kqreadnginx:workerprocess(nginx)
3626636264nobody0.01364kqreadnginx:workerprocess(nginx)
3626736264nobody0.01364kqreadnginx:workerprocess(nginx)
현재로서는 이전 서버가 수신 대기 중인 소켓을 아직 닫지 않았기 때문에 다음 단계에 따라 이전 서버를 복원할 수 있습니다.
이전 마스터 프로세스에 HUP 신호를 보냅니다. 구성 파일을 다시 로드하지 않고 작업자 프로세스를 시작합니다
새로운 메인 프로세스에 QUIT 신호를 보내 작업 프로세스를 조용히 종료하도록 요청하세요
새로운 메인 프로세스에 TERM 신호를 보내 강제 종료
어떤 이유로 새 작업자 프로세스를 종료할 수 없는 경우 KILL 신호를 보내세요
새 기본 프로세스가 종료된 후 이전 기본 프로세스는 .oldbin 접두사를 제거하고 이를 .pid 파일로 복원합니다. 이러한 방식으로 모든 것이 업그레이드 전 상태로 복원됩니다.
업그레이드 시도가 성공했고 새 서버도 유지하려면 이전 기본 프로세스에 QUIT 신호를 보내 종료하고 새 서버만 실행 중인 상태로 두세요.
PIDPPIDUSER%CPUVSZWCHANCOMMAND
362641root0.01148pausenginx:masterprocess/usr/local/nginx/sbin/nginx
3626536264nobody0.01364kqreadnginx:workerprocess(nginx)
3626636264nobody0.01364kqreadnginx:workerprocess(nginx)
3626736264nobody0.01364kqreadnginx:workerprocess(nginx)
위 내용은 nginx 운영 및 유지 관리에서 원활하게 업그레이드하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!