<Starting, Stopping, and Reloading Configuration>
Nginx는 실행파일을 실행하여 시작한다. Nginx가 실행된 이후에는 -s 파라미터를 가지고 다른 작업을 수행하도록 할 수 있다. 다음과 같은 문법을 갖는다.
nginx -s signal
Signal은 다음 값을 가질 수 있다.
Stop : fast shutdown
Quit : graceful shutdown
Reload : 설정 파일 reload
Reopen : 로그 파일 reopen
예를 들어 현재 처리 중인 request를 모두 처리하고 nginx를 종료하고자 한다면 다음 command를 실행하면 된다.
nginx -s quit
- 이 command는 nginx를 실행할 때와 동일한 user로 실행해야 한다.
설정 파일의 변경은 변경된 설정 파일을 reload command를 통해서 nginx에 전달해야 적용된다. 설정 파일을 reload하는 command는 다음과 같다.
nginx -s reload
Master Process가 설정 파일 reload signal을 받으면 새로운 설정 파일에 대한 syntax validation을 체크하고, 적용한다. 적용이 끝나면 master process는 새로운 worker process를 실행하고, 기존의 worker process에는 shutdown 요청을 보낸다. 과정 중간에 오류가 발생하면 master process는 변경 사항을 roll back하고 계속해서 old worker process로 작업을 수행한다. Old worker process는 shutdown 메시지를 받으면 새로운 connection을 받는 것을 중지하고 현재 처리 중인 request가 완료될 때까지 계속해서 서비스를 제공한다. 모든 처리 중인 request가 완료되었을 때, old worker process는 종료된다.
Signal은 kill utility와 같은 Unix tool의 도움을 받아서 nginx로 전달될 수도 있다. 이 경우 signal은 주어진 process ID를 통해서 직접적으로 nginx process에 전달된다. Process ID로는 nginx master process의 ID를 사용한다. 기본적으로 nginx.pid는 /usr/local/nginx/log 폴더나 /var/run 폴더에 저장된다. 예를 들어서, master process ID가 1628이라면, nginx의 graceful shutdown을 위한 Quit signal은 다음과 같이 보낼 수 있다.
kill -s QUIT 1628
모든 기동중인 nginx process에 대한 리스트를 얻으려면 다음과 같이 ps utility를 사용할 수 있다.
ps -ax | grep nginx
Nginx로 보내는 signal에 대한 더 자세한 정보는 Controlling nginx (http://nginx.org/en/docs/control.html) 를 통해서 얻을 수 있다.
댓글을 달아 주세요
댓글 RSS 주소 : http://www.yongbi.net/rss/comment/664