반응형
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 시그널을 직접 날릴 수도 있음