지니워의 일상다반사

/etc/init.d/nginx 스크립트 만들때 유의할 점 본문

본격 SE업무이야기/nginx

/etc/init.d/nginx 스크립트 만들때 유의할 점

지니워 2013. 7. 29. 17:58

/etc/init.d/nginx에 스크립트를 생성하여야 nginx의 서비스를 이용할 수 있다. 즉, start, stop, reload등의 기능을 사용하여 nginx를 제어 할 수 있다는 말이다.


처음 nginx를 설치한 후 nginx 서비스를 시작하려고 하면 아래와 같은 메세지와 함꼐 서비스가 시작되지 앟는다.


service nginx does not support chkconfig


굳이 해석하자면 chkconfig가 nginx를 지원하지 않는다 정도?쉽게 이야기해서 /etc/init.d/에 nginx관련 스크립트가 없기 때문에 명령을 내려도 알아듣지 못하는 것이다.


nginx 스크립트 파일?그게 뭐지...-_-? 사실 실서버에 nginx를 설치할때는 미리 만들어놓은 각종 설정파일들을 rsync로 가져와서 그대로 덮어버리기 때문에 세세히 설정해 본 경험이 없다.  그렇기 때문에 아직 설정파일을 만들거나 옵션등에 대해 잘 알지 못한다.(얼른 공부하자 ㅠ)


기본적인 설정방법은 wiki.nginx.org에 나온다. (http://wiki.nginx.org/RedHatPHPFCGIInitScript)

하지만 나처럼 영어울렁증이 있거나 나처럼 영어랑 별로 친하지 않거나 나처럼 영어를 못한다면 (아...비참하네 ㅠ) 아래에 내가 설정해 둔 것들을 올려둘테니 참고하면 될 것 같다.


nginx script file)


# !/bin/sh

# Author:Ryan Norbauer http://norbauerinc.com

# Modified : Geoffrey Grosenbach http://topfunky.com

# Modified : Clment NEDELCU

# Reproduced with express authorization from its contributors

# chkconfig:  345 85 15    // chkconfig을 설정하는데 반드시 필요하다!!

set -e

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

DESC="nginx daemon"

NAME=nginx

DAEMON=/usr/local/nginx/sbin/$NAME


# if daemon file not exist, script stop


test -x $DAEMON || exit 0


d_start() {

$DAEMON || echo -n "already running"

}


d_stop() {

$DAEMON -s quit || echo -n "not running"

}

d_reload() {

$DAEMON -s reload || echo -n "could not reload"

}


case "$1" in

start)

echo -n "Starting $DESC : $NAME"

d_start

echo "."

;;

stop)

echo -n "Stopping $DESC : $NAME"

d_stop

echo "."

;;

reload)

echo -n "Reloading $DESC configuration..."

d_reload

echo "reloaded."

;;

restart)

echo -n "Restarting $Desc : $NAME"

d_stop

sleep 2

d_start

echo "."

;;

*)

echo "Usage : $SCRIPTNAME {start|stop|restart|reload}" >&2

exit 3

ll

esac

exit 0




위에 빨갛게 표시한 부분은 chkconfig을 설정하는데 반드시 필요하다. 처음에 저걸 빼먹고 진행했었는데 서비스 등록이 안되서 고생했다. 그럼 저 부분이 의미하는 바는 무엇일까?


chkconfig : 345 85 15


345 : run level 설정. 3, 4, 5로  OS가 실행되면 nginx를 시작한다.

85 : 좀 헷갈리는 부분. 부팅시 데몬을 시작하는데 발생하는 우선순위를 뜻한다. 85라고해서 꼭 85번째에 실행된다는 것이 아니고 적어도 85등안에는 든다고 생각하면 된다.

15 : 위와 비슷한 의미. 다만 15는 종료할 때 15등 안에는 종료한다 라는 의미정도로 생각하면 된다.


이렇게 데몬우선순위와 종료순위를 정하는 것은 데몬간의 의존성이 존재하기 때문이다. 예를 들어 mysqld와 apache를 보면 mysqld가 데몬우선순위를 가지고 그 다음이 apache인 반면 종료는 apache가 먼저 되고 그 다음에 mysqld가 종료되는 것이 일반적인 사항이다. 이는 데몬간의 의존성 때문이고 nginx또한 이런 의존성이 있기 때문에 85 15와 같은 값을 설정한다.


이렇게 nignx script file을 /etc/init.d/에 만들어서 chkconfig nginx on을 한 후 chkconfig --list nginx 를 실행했을때 run level이 3, 4, 5에 on으로 나온다면 성공이다.(이건 CentOs 6.4를 기준으로 테스트 한 내용이다. OS마다 chkconfig을 설정하는 방법이 다르기 때문에 다른 OS사용자들은 참고하기 바란다.)




Ps) 혹시나 궁금한 사항이 있으면 댓글로 남겨주시기 바랍니다. 아는 한도 내에서 성심성의껏 답변드리겠습니다.


'본격 SE업무이야기 > nginx' 카테고리의 다른 글

nginx에서 authentication 설정하기  (0) 2013.12.18
nginx.conf core module 옵션  (0) 2013.08.07
nginx를 설치하다.  (0) 2013.07.26
Comments