[code. nginx] Nginx 시작, 정지, 재 부팅

10500 단어
Nginx 서비스의 신호 제어
Nginx 서비스의 시작 정지 등 방식 중 하 나 는 신호 메커니즘 을 통 해 이 루어 진다.Nginx 서비스 가 실 행 될 때 주 프로 세 스 와 하나 이상 의 worker process 작업 프로 세 스 를 유지 합 니 다.nginx 의 메 인 프로 세 스에 신 호 를 보 내 면 서비스의 시작 이 멈 추 는 것 을 제어 할 수 있 습 니 다. 신 호 를 보 내기 전에 메 인 프로 세 스 의 프로 세 스 번호 PID 를 먼저 알 아야 합 니 다.PID 획득 에는 두 가지 경로 가 있 습 니 다.
  • Nginx 서비스 가 시 작 된 후 기본적으로 Nginx 서버 설치 디 렉 터 리 에 있 는 logs 디 렉 터 리 에 nginx. pid 라 는 파일 이 생 성 됩 니 다. 이 파일 은 Nginx 서비스 메 인 프로 세 스 의 PID 를 유지 합 니 다.이 파일 의 저장 경로 와 파일 이름 은 Nginx 서버 설정 파일 에서 설정 할 수 있 습 니 다.
  • Nginx 서비스 메 인 프로 세 스 PID 를 가 져 오 는 방법 은 Linux 플랫폼 에서 프로 세 스 를 보 는 도구 ps 입 니 다. 사용 방법 은:
  • Jorys-MBP:logs jory$ ps -ef | grep nginx
        0    56     1   0  2:51PM ??         0:00.02 nginx: master process /usr/local/opt/nginx/bin/nginx -g daemon off;  
       -2   225    56   0  2:51PM ??         0:00.00 nginx: worker process  
      501  3680  3482   0 10:33PM ttys000    0:00.00 grep nginx
    

    명령 결 과 를 보면 시스템 에 Nginx 서 비 스 를 포함 하 는 메 인 프로 세 스 master process 와 세 개의 작업 프로 세 스 worker process 가 있 습 니 다. 그 중에서 메 인 프로 세 스 에 대응 하 는 PID 는 두 번 째 열 에 있 는 56 입 니 다. 이것 은 nginx. pid 파일 과 일치 합 니 다.
    Jorys-MBP:nginx jory$ cat /usr/local/var/run/nginx.pid
    56
    

    Nginx 서비스 메 인 프로 세 스 가 받 을 수 있 는 신 호 는 다음 표 와 같 습 니 다.
    시그 널
    역할.
    TERM 또는 INT
    Nginx 서비스 빠 른 정지
    QUIT
    Nginx 서비스 정지
    HUP
    새 프로필 을 사용 하여 프로 세 스 를 시작 한 후 기 존 프로 세 스 를 천천히 중단 합 니 다. 이른바 '부 드 러 운 재 부팅' 입 니 다.
    USR1
    로그 파일 을 다시 엽 니 다. 로그 절단 에 자주 사 용 됩 니 다.
    USR2
    새로운 버 전의 Nginx 파일 로 서 비 스 를 시작 한 후 기 존 Nginx 프로 세 스 를 천천히 중단 합 니 다. 이른바 '부 드 러 운 업그레이드' 입 니 다.
    WINCH
    워 커 프로 세 스 정지, Nginx 서버 부 드 러 운 업그레이드 에 사용
    Nginx 서비스 메 인 프로 세 스에 신 호 를 보 내 는 방법 도 두 가지 가 있 습 니 다.하 나 는 nginx 바 이 너 리 파일 을 사용 하고 다른 하 나 는 kill 명령 으로 신 호 를 보 내 는 것 입 니 다.그 용법 은:
    kill SIGNAL PID
    

    SIGNAL 은 위의 표 중 하 나 를 지정 하 는 신 호 를 지정 하 는 데 사 용 됩 니 다.PID, Nginx 서비스 메 인 프로 세 스 의 PID 를 지정 하고 nginx. pid 동적 으로 PID 번 호 를 가 져 올 수 있 습 니 다.
    kill SIGNAL 'filepath'
    

    그 중에서 filepath 는 nginx. pid 의 경로 입 니 다.
    Nginx 서비스 시작
    Linux 플랫폼 에서 Nginx 서버 를 시작 하여 설치 디 렉 터 리 아래 sbin 디 렉 터 리 에 있 는 바 이 너 리 파일 을 직접 실행 하면 됩 니 다.바 이 너 리 파일 nginx 의 사용법 을 간략하게 소개 합 니 다.다음 명령 실행:
    Jorys-MBP:nginx jory$ nginx -h
    nginx version: nginx/1.12.0
    Usage: nginx [-?hvVtTq] [-s signal] [-c filename] [-p prefix] [-g directives]
    
    Options:
      -?,-h         : this help
      -v            : show version and exit
      -V            : show version and configure options then exit
      -t            : test configuration and exit
      -T            : test configuration, dump it and exit
      -q            : suppress non-error messages during configuration testing
      -s signal     : send signal to a master process: stop, quit, reopen, reload
      -p prefix     : set prefix path (default: /usr/local/Cellar/nginx/1.12.0/)
      -c filename   : set configuration file (default: /usr/local/etc/nginx/nginx.conf)
      -g directives : set global directives out of configuration file
    
    

    다음 도움말 정보 에서 사용 할 수 있 는 매개 변 수 를 조목조목 분석 합 니 다.
  • "- h" 또는 "-?" 바 이 너 리 파일 을 인쇄 하 는 nginx 의 용법, 즉 현재 표 시 된 내용 입 니 다.
  • "- v" 는 Nginx 서버 의 버 전 번 호 를 표시 합 니 다
  • "- V" 는 버 전 번호 뿐만 아니 라 Nginx 서버 컴 파일 상황 도 표시 합 니 다. 다음 과 같 습 니 다.
  • Jorys-MBP:nginx jory$ nginx -V
    nginx version: nginx/1.12.0
    built by clang 8.1.0 (clang-802.0.42)
    built with OpenSSL 1.1.0e  16 Feb 2017
    TLS SNI support enabled
    configure arguments: --prefix=/usr/local/Cellar/nginx/1.12.0 --with-http_ssl_module --with-pcre --sbin-path=/usr/local/Cellar/nginx/1.12.0/bin/nginx --with-cc-opt='-I/usr/local/opt/pcre/include -I/usr/local/opt/[email protected]/include' --with-ld-opt='-L/usr/local/opt/pcre/lib -L/usr/local/opt/[email protected]/lib' --conf-path=/usr/local/etc/nginx/nginx.conf --pid-path=/usr/local/var/run/nginx.pid --lock-path=/usr/local/var/run/nginx.lock --http-client-body-temp-path=/usr/local/var/run/nginx/client_body_temp --http-proxy-temp-path=/usr/local/var/run/nginx/proxy_temp --http-fastcgi-temp-path=/usr/local/var/run/nginx/fastcgi_temp --http-uwsgi-temp-path=/usr/local/var/run/nginx/uwsgi_temp --http-scgi-temp-path=/usr/local/var/run/nginx/scgi_temp --http-log-path=/usr/local/var/log/nginx/access.log --error-log-path=/usr/local/var/log/nginx/error.log --with-http_gzip_static_module --with-ipv6
    
  • "- t" 는 Nginx 서버 설정 파일 에 문법 오류 가 있 는 지 확인 하고 "- c" 와 연결 하여 출력 내용 을 더욱 상세 하 게 할 수 있 습 니 다. 이것 은 설정 파일 의 문법 오 류 를 찾 는 데 도움 이 됩 니 다. 검 사 를 통과 하면 다음 과 같은 정 보 를 표시 합 니 다.
  • Jorys-MBP:nginx jory$ nginx -t
    nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful
    
  • "- q" 는 "- t" 와 연결 되 어 있 으 며, 설정 파일 에 오류 가 없 으 면 위의 내용 을 출력 하지 않 습 니 다
  • "- s signal" 은 Nginx 서비스의 메 인 프로 세 스에 신 호 를 보 내 는 데 사 용 됩 니 다
  • "- p prefix" 는 Nginx 의 설치 경 로 를 바 꾸 는 데 사 용 됩 니 다. Nginx 서버 를 부 드 럽 게 업그레이드 하 는 장소
  • 에 자주 사 용 됩 니 다.
  • "- c filename" 은 Nginx 서 비 스 를 시작 할 때 사용 할 프로필 을 지정 합 니 다
  • '- g directives' 는 Nginx 프로필 을 보충 하고 Nginx 서비스 에 시작 할 때 전역 설정 에 사용 합 니 다.

  • 기본 설정 파일 을 사용 하면 nginx 를 직접 실행 할 수 있 습 니 다.
       sudo ./nginx
    

    잘못된 정보 출력 이 없 으 면 Nginx 서비스 가 시 작 됩 니 다.ps - ef | grep nginx 명령 을 사용 하여 Nginx 서비스의 프로 세 스 상 태 를 볼 수 있 습 니 다.
    Nginx 서비스의 정지
    Nginx 서 비 스 를 중단 하 는 방법 은 두 가지 가 있 습 니 다. 하 나 는 빠 른 정지 이 고 하 나 는 느 린 정지 입 니 다.빠 른 정지 란 현재 Nginx 서비스 가 처리 하고 있 는 모든 네트워크 요청 을 즉시 중단 하고 연결 을 즉시 버 리 고 작업 을 중단 하 는 것 을 말한다.완만 한 정지 란 현재 처리 중인 네트워크 요청 을 Nginx 서비스 가 처리 할 수 있 도록 허용 하지만 새로운 요청 을 받 지 않 고 연결 을 닫 고 작업 을 중단 하 는 것 을 말한다.Nginx 서 비 스 를 중단 하 는 작업 이 많 습 니 다.
  • nginx 는 여 유 롭 게 명령 을 정지 하고 모든 요청 이 끝 난 후에 서 비 스 를 종료 합 니 다.
  • ps -ef |grep nginx
    kill -QUIT  nginx    
    
  • nginx 는 명령 을 빠르게 정지 하고 nginx 프로 세 스 를 즉시 닫 습 니 다.
  • ps -ef |grep nginx
    kill -TERM nginx     
    
  • 상기 명령 이 효과 가 없 으 면 강제 정지 할 수 있다.
  • kill -9 nginx    
    
  • 귀 찮 으 면 프로 세 스 번 호 를 보지 않 고 명령 을 사용 하여 조작 할 수 있 습 니 다.그 중에서 / usr / local / var / run / nginx. pid 는 nginx. conf 에서 pid 명령 이 설정 한 매개 변수 로 nginx 메 인 프로 세 스 번호 의 파일 을 저장 합 니 다.
  • kill -    (HUP|TERM|QUIT) cat /usr/local/var/run/nginx.pid 
      
    kill -QUIT `cat /usr/local/var/run/nginx.pid`
    

    Nginx 서비스의 재 부팅
    Nginx 서버 의 설정 을 변경 하고 새 모듈 을 추가 한 후 현재 Nginx 서비스 에 새로운 설정 을 적용 하거나 새 모듈 을 적용 하려 면 Nginx 서 비 스 를 다시 시작 해 야 합 니 다.물론 우 리 는 먼저 Nginx 서 비 스 를 닫 은 후에 새로운 Nginx 프로필 로 서 비 스 를 다시 시작 할 수 있 습 니 다.Nginx 의 부 드 러 운 재 부팅 은 이러한 과정 입 니 다. Nginx 서비스 프로 세 스 가 신 호 를 받 은 후에 먼저 새로운 Nginx 프로필 을 읽 고 문법 이 정확 하면 새로운 Nginx 서 비 스 를 시작 한 다음 오래된 서비스 프로 세 스 를 천천히 닫 습 니 다.새로운 Nginx 설정 에 문제 가 있 으 면 오류 가 표 시 됩 니 다. 오래된 Nginx 프로 세 스 를 사용 하여 서 비 스 를 제공 합 니 다.
    Nginx 설정 파일 (nginx. conf) 이 바 뀌 었 다 면 Nginx 를 다시 시작 하려 면 Nginx 메 인 프로 세 스에 시스템 신 호 를 보 내 는 방식 으로 진행 할 수 있 습 니 다.단, 다시 시작 하기 전에 Nginx 프로필 의 문법 이 정확 한 지 확인 하려 면 다음 명령 을 통 해 프로필 이 정확 한 지 테스트 할 수 있 습 니 다.
    Jorys-MBP:bin jory$ sudo nginx -t -c /usr/local/etc/nginx/nginx.conf
    Password:
    nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful
    

    설정 파일 이 올 바 르 지 않 으 면 설정 파일 의 몇 번 째 줄 에 오류 가 발생 했 는 지 화면 이 알려 줍 니 다.설정 파일 이 올 바 르 면 화면 에 정확 한 정 보 를 알려 줍 니 다.이 럴 때 부 드 럽 게 다시 시작 할 수 있 습 니 다.
    Nginx 0.8. x 이전 버 전에 대해 서 는 다음 과 같이 사용 할 수 있 습 니 다.
    kill -HUP `cat /usr/local/var/run/nginx.pid`
    

    HUP 신 호 는 부 드 러 운 재 부팅 신 호 를 보 내 는 데 사 용 됩 니 다.
    Nginx 0.8. x 이후 버 전에 대해 서 는 다음 과 같이 사용 할 수 있 습 니 다.
    sudo nginx -s reload
    

    Nginx 서버 업그레이드
    현재 Nginx 서버 를 버 전 업그레이드 하려 면 새 모듈 을 적용 합 니 다. 가장 쉬 운 방법 은 현재 Nginx 서 비 스 를 중단 하고 새로운 Nginx 서 비 스 를 시작 하 는 것 입 니 다. 그러나 이 로 인해 한 동안 사용자 가 서버 에 접근 할 수 없습니다.이 문 제 를 해결 하기 위해 Nginx 서버 는 부 드 러 운 업그레이드 기능 을 제공 합 니 다.부 드 럽 게 업그레이드 하 는 과정 은 이 렇 습 니 다. Nginx 서 비 스 는 USER 2 신 호 를 받 은 후 먼저 오래된 nginx. pid 파일 (설정 파일 에서 이 파일 의 이름 을 변경 한 적 이 있 으 면 같은 과정) 에 접 두 사 를 추가 합 니 다. oldbin 을 nginx. pid. oldbin 파일 로 변경 합 니 다.그리고 새 버 전인 Nginx 서버 의 바 이 너 리 파일 시작 서 비 스 를 실행 합 니 다.새 서버 가 시작 되면 시스템 에 신 구 두 개의 Nginx 서비스 가 공동으로 웹 서 비 스 를 제공 합 니 다.그 다음 에 오래된 Nginx 서비스 프로 세 스에 WINCH 신 호 를 보 내 서 오래된 Nginx 서 비 스 를 부 드 럽 게 중단 시 키 고 nginx. pid. oldbin 파일 을 삭제 해 야 합 니 다.WINCH 신 호 를 보 내기 전 언제든지 새로운 Nginx 서 비 스 를 중단 할 수 있다.
    Nginx 서버 의 부 드 러 운 업 그 레이 드 를 실현 하기 위해 서 새로운 서버 설치 경 로 는 오래된 것 과 일치 해 야 합 니 다.따라서 새 서버 를 설치 하기 전에 오래된 서버 를 백업 하 는 것 을 권장 합 니 다.어떤 이유 로 신 구 서버 의 설치 경로 가 일치 하지 않 으 면 다음 명령 을 사용 하여 구 서버 의 설치 경 로 를 새 서버 의 설치 경로 로 변경 할 수 있 습 니 다.
     nginx -p newInstallPath
    

    이 중 new InstallPath 는 새 서버 의 설치 경로 입 니 다.이후 낡은 서버 를 백업 하고 새 서버 를 설치 하면 된다.
    실행 중인 Nginx 를 업그레이드 하려 면 서 비 스 를 중단 하지 않 고 진행 할 수 있 습 니 다. 구체 적 인 절 차 는 다음 과 같 습 니 다.
  • 새로운 실행 가능 한 프로그램 을 사용 하여 오래된 실행 가능 한 프로그램 을 교체 합 니 다.새로운 Nginx 를 다운로드 하여 이전 버 전의 설치 경로 로 다시 컴 파일 합 니 다.다시 컴 파일 하기 전에 오래된 실행 가능 한 파일 을 백업 하 세 요.
  • 다음 명령 을 실행 합 니 다. 그 는 이전 버 전의 메 인 프로 세 스 ID 가 저 장 된 파일 을. oldbin:
  • 으로 이름 을 바 꿉 니 다.
    kill -USR2     Nginx    
             :kill -USR2 `cat /usr/local/nginx/nginx.pid`
    

    ls / usr / local / nginx / logs 로 이름 변경 여 부 를 확인 할 수 있 습 니 다.
  • 새 버 전의 Nginx 실행 가능 프로그램 을 실행 합 니 다.
  • ulimit -SHn 65535
    /usr/local/nginx/sbin/nginx
    
  • 이때 신 구 버 전의 Nginx 가 동시에 실행 되 고 요청 을 공동으로 처리 합 니 다.이전 버 전의 Nginx 를 점차 중단 하려 면 이전 메 인 프로 세 스에 WINCH 신 호 를 보 내야 합 니 다.그리고 나 서 그의 업무 진행 은 여 유 롭 게 끝 날 것 이다.
  • kill -WINCH     Nginx    
    
  • 한 동안 오래된 작업 프로 세 스 가 모든 요청 을 처리 한 후에 종료 하고 새로운 프로 세 스 만 입력 요청 을 처리 합 니 다.아래 명령 으로 보기:
  • ps -ef | grep nginx
    
  • 현재 새 버 전 을 사용 할 지, 이전 버 전 으로 복원 할 지 결정 할 수 있 습 니 다. kill - UP 의 오래된 주 프로 세 스 번호: Nginx 는 설정 파일 을 다시 불 러 오지 않 은 상태 에서 작업 프로 세 스 kill - QUIT 의 새로운 주 프로 세 스 번 호 를 시작 합 니 다. 작업 프로 세 스 kill - TERM 의 새로운 주 프로 세 스 번 호 를 여 유 롭 게 닫 습 니 다.프로 세 스 를 종료 할 수 없 으 면 kill 신 호 를 보 냅 니 다
  • 새 메 인 프로 세 스 가 종료 되면 오래된 메 인 프로 세 스 는. oldbin 접 두 사 를 제거 하고 그의. pid 파일 로 복원 합 니 다. 그러면 모든 것 이 업그레이드 전 으로 복 원 됩 니 다.업그레이드 에 성공 하고 새로운 버 전 을 유지 하려 고 할 때 QUIT 신 호 를 오래된 메 인 프로 세 스에 보 내 서 종료 시 키 고 새로운 프로 세 스 만 남 길 수 있 습 니 다: kill - QUIT 옛 메 인 프로 세 스 번호.이렇게 해서 웹 서비스 제공 을 멈 추 지 않 고 Nginx 서버 의 부 드 러 운 업 그 레이 드 를 완성 했다.

    좋은 웹페이지 즐겨찾기