웹서버/nginx

[정보] Nginx 기동/종료/재시작 하기

투칼론 2019. 5. 26. 17:55
반응형

Nginx 기동, 종료, 재시작하기

Nginx를 어떻게 기동시키고, 실행 중일때, 어떻게 종료시키고, 재시작시키는지를 설명하고자 한다.

Nginx 기동하기

Nginx는 보통 /usr/bin/nginx 라는 명령어로 기동시킨다.

예시#1)

  $ /usr/bin/nginx

 

예시#2) 기동 시에 다양한 옵션 설정할 수 있음 (옵션은 아래에 설정되어 있음)

  $ /usr/bin/nginx -t -c ~/myynginx.conf -g "pid /var/run/nginx.pid; worker_processes 2;"

 

 

옵션들

 

-?, -h  도움말(Help) 출력 
 -v  버전 정보 출력 
 -V  버전 정보는 물론 컴파일러 버전, 구성파일 파라미터 정보 출력
 -t  기동하지 않고, 구성 파일 문법 등 온전성을 점검함
 -s 시그널  마스터 프로세스에 Signal을 보냄. stop, quit, reopen, reload (버전 >= 0.753)
 -p path  Nignx prefix 경로를 설정함. (디폴트 : /usr/local/nginx/). (버전 >=0.7.53)
 -c 파일명  디폴트 파일명 대신 사용될 구성파일 지정
 -g directives  글로벌 directives 지정 (버전 >= 0.74)

 

Nginx 종료, 재시작하기

이미 실행 중인 Nginx를 종료시키는 방법은 2가지가 있다. 하나는 위의 옵션들에서 "-s stop/quit"을 사용하는 것이고, 하나는 리눅스 명령어인 "kill 시그널" 명령어를 실행하는 것이다.

예시#1)

  // 강제종료(shutdown)
  $ /usr/bin/nginx  -s  stop

  // 실행 중인 request 처리 후에 종료(Gracefully shutdown)

  $ /usr/bin/nginx  -s  quit   

 

예시#2) "/usr/local/nginx/logs/nginx.pid"은 마스터 프로세스의 pid가 기록된 파일임

  $   kill -QUIT $(cat /usr/local/nginx/logs/nginx.pid)

 

리눅스에서 kill 명령어 다음에 다양한 시그널 정보가 올 수 있는데, Nginx에서 시그널 정보는 아래와 같은 컨트롤 의미를 갖는다.

TERM, INT  Quick Shutdown
 QUIT  Gracefully Shutdown
 KILL  종료가 잘 되지 않은 프로세스 강제로 종료
 HUP  설정 재로딩하기. 새로운 worker 프로세스가 기동할 때 적용되고, 기존 worker는 자동으로 gracefully shutdown 됨
 USR1  로그 파일 다시 열기
 USR2  운영 중에 바이너리 파일 업그레이드 하기
 WINCH  worker 프로세스만 gracefully shutdown하기

 

 

참고로, worker 프로세스들에게 TERM, INT, QUIT, USR1 시그널을 직접 날릴 수도 있음