지니워의 일상다반사
/etc/init.d/nginx 스크립트 만들때 유의할 점 본문
/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 |