먼저 nginx에서 지원하는 몇 가지 신호를 소개하겠습니다. 아래에는 기본 프로세스가 수신할 수 있는 몇 가지 신호가 나열되어 있습니다.
참고: 작업자 프로세스도 일부 신호를 수신할 수 있지만 해당 신호 처리 메커니즘은 기본 프로세스와 다소 다르며 기본 프로세스에서 지원하는 신호는 작업자 프로세스에서 지원되지 않을 수 있습니다.
정상 중지의 동작은 다음과 같습니다. (1) 프로세스는 더 이상 새 요청을 수신하고 수락하지 않습니다. (2) 프로세스는 처리 중인 요청을 계속 처리하지만 처리가 완료된 후에는 삭제됩니다.
1. 업그레이드
실행 중인 nginx 인스턴스를 업그레이드하거나 버전을 다시 컴파일하여 이전 버전을 교체하려는 경우 다음 일련의 프로세스에 따라 원활하고 안전하게 업그레이드하는 것을 고려할 수 있습니다. 물론, 서비스를 직접 중지하면 큰 영향을 미치지 않습니다. nginx 인스턴스의 새 버전을 직접 중지한 후 시작하는 것이 더 편리하고 간단합니다.
1. 이전 nginx 명령을 새 버전의 nginx 명령 경로로 바꿉니다.
보통 nginx를 컴파일해서 설치하는 경우에는 소프트링크를 이용하는 것이 더 편리합니다. 예를 들어 이전 버전의 설치 경로가 /usr/local/nginx-1.12.0인 경우 새 버전인 /usr/local/nginx-1.12에 대한 소프트 링크 /usr/local/nginx를 만듭니다. .1의 경우 소프트 링크만 수정하면 됩니다. /usr/local/nginx 링크는 /usr/local/nginx-1.12.1을 가리킵니다. 이러한 방식으로 /usr/local/nginx/sbin/nginx는 소프트 링크가 변경됨에 따라 새로운 nginx 프로그램을 가리킵니다.
2. USR2 신호를 이전 nginx 인스턴스의 기본 프로세스로 보냅니다.
kill -USR2 `cat /var/run/nginx/nginx.pid`
이 신호는 nginx의 이전 기본 프로세스를 업그레이드하고 새 nginx 프로그램을 실행하도록 유도합니다. 예를 들어 1단계에서 이전 nginx 기본 프로세스는 /usr/local/nginx/sbin/nginx이지만 /usr/local/nginx-1.12.0/sbin/nginx를 가리킵니다. usr/local/nginx/sbin/nginx는 계속 실행되지만 소프트링크 대상이 변경되었기 때문에 이때 시작된 nginx는 이미 /usr/local/nginx-1.12.1/sbin/nginx 프로그램입니다.
또한 이 신호를 보낸 후 pid 파일이 nginx.pid.oldbin으로 이름이 변경됩니다. 새 pid 파일은 nginx입니다. pid. , 새로 시작된 nginx 메인 프로세스의 pid 값이 기록됩니다.
[root@xuexi ~]# ls /var/run/nginx* /var/run/nginx.pid /var/run/nginx.pid.oldbin
3.graceful 이전 기본 프로세스 번호를 중지합니다. kill -QUIT `cat /var/run/nginx/nginx.pid.oldbin`
이전 기본 프로세스 번호에 QUIT 신호를 보내면 기본 프로세스가 정상적으로 종료됩니다. 이로 인해 이전 기본 프로세스와 이전 작업자 프로세스가 더 이상 새 요청을 수락하지 않지만 처리 중인 요청 처리를 완료한 다음 삭제되어 종료됩니다.
4. 더 안정적인 방법은 먼저 작업자 프로세스를 정상적으로 중지하는 것입니다. 새 버전의 nginx 인스턴스가 짧은 시간 동안 실행된 후 정상적으로 작동하면 이전 기본 프로세스를 정상적으로 중지합니다.
kill -WINCH `cat /var/run/nginx/nginx.pid.oldbin` # a period of time goes, graceful stop old master nginx kill -QUIT `cat /var/run/nginx/nginx.pid.oldbin`
기존 메인 프로세스에 WINCH 신호를 보낸 후, 기존 작업자 프로세스는 점차 종료되지만, 기존 메인 프로세스는 종료되지 않고 그대로 유지됩니다.
새 버전의 nginx 인스턴스가 만족스럽지 않은 경우 이전 기본 프로세스 번호에 HUP 신호를 직접 보내 이전 기본 프로세스가 구성 파일을 다시 읽고 새 인스턴스를 포크하도록 할 수 있습니다. 작업자 프로세스가 되고 새 기본 프로세스가 생성됩니다. 프로세스 번호가 종료되면(정상 중지 가능) nginx 인스턴스의 이전 버전으로 복원될 수 있습니다.
2. 다운그레이드
위의 4단계가 실제로 가장 안전한 다운그레이드 방법입니다. 즉,
kill -HUP `cat /var/run/nginx/nginx.pid.oldbin` kill -QUIT `cat /var/run/nginx/nginx.pid`
그러나 이전 기본 프로세스 ID가 종료되고 현재 nginx 인스턴스의 새 버전만 실행 중인 경우 동일한 업그레이드 단계에서 다운그레이드하기만 하면 됩니다. 즉:
kill -USR2 `cat /var/run/nginx/nginx.pid` kill -QUIT `cat /var/run/nginx/nginx.pid.oldbin`
3. 원클릭 업그레이드 스크립트
다음은 업그레이드 스크립트입니다.
관련 추천: nginx 튜토리얼
위 내용은 nginx 버전을 원활하고 안전하게 업그레이드하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!