데비안의 apt-get같은 팩키지 매니저를 사용하면 쉽게 nginx를 설치할 수 있지만 아주 간단한 사용목적이 아니라면 소스에서 직접 컴파일해서 설치하는 것이 좋다고 생각합니다. nginx는 아파치와는 다르게 추가적인 애드온을 사용하려면 컴파일할 때 옵션을 추가해서 컴파일해야하기 때문에 직접 관리하고 버전업하는게 더 좋은 듯 합니다.(매번 컴파일하는 것은 기존 아파치에서 갈아탈때 큰 불편함으로 다가올 수 있는 부분인데 이는 아마 성능의 최적화하기 위함이 아닌가 추측해 봅니다.)
의존성 설치
nginx를 컴파일하기 전에 몇가지 의존성 라이브러리들을 설치해 주어야 합니다.
$ sudo apt-get install gcc libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev
위와 같이 간단히 설치할 수 있습니다. PCRE나 zlib은 컴파일할 때 옵션으로 소스를 지정할 수 도 있지만 OS에 설치해 놓는 것이 편한듯 합니다.
nginx 컴파일
nginx 다운로드 사이트에서 nginx 소스를 다운받아서 압축을 풀어줍니다.(현재 안정버전은 1.2.0입니다.)
$ ./configure --prefix=/usr/local/lib/nginx/nginx-1.2.0 \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_ssl_module \
--with-http_stub_status_module \
--user=outsider
제가 최근 컴파일할 때 사용한 컴파일 명령어입니다.(뭐 베스트프렉티스다 라는 것은 아닙니다면 처음에 사용할 때는 무슨 옵션을 사용해야 할지도 모르기 때문에 참고삼아 적습니다.) --prefix는 컴피일된 위치를 지정한 것이고 --conf-path는 설정파일의 위치를 지정한 것이고 이 위치에 nginx.conf가 생기고 그외 관련 설정파일들이 /etc/nginx 아래에 생성되게 됩니다. --error-log-path와 ---http-log-path는 각각 로그파일의 위치를 지정한 것입니다. path라고 되어 있어서 헷갈리는데 파일 디렉토리만 지정하는게 아니라 파일까지 지정해 주어야 합니다. --with-http_ssl_module는 SSL을 사용하기 위해서 지정한 것이고 --with-http_stub_status_module는 nginx의 상태를 모니터링 할 수 있는 모듈을 추가한 것이고 --user는 워커프로세스의 소유자를 지정한 것입니다. 80포트를 사용해야 하므로 마스터 프로세스는 root로 실행하지만 root가 생성한 워커 프로세스는 여기서 지정한 사용자로 생성됩니다.
nginx에 대한 컴파일 옵션은 설치가이드 문서에 잘 나와있습니다. 설정옵션외에 기본으로 포함된 모듈들이 있기 때문에 필요없는 것은 --without 으로 제거하고 기본외에 추가로 필요한 것은 --with 옵션으로 지정해 주어야 합니다. nginx가 제공하는 모듈들은 모듈 위키페이지에 나와있습니다. 그 외 서드파티 모듈들은 서드파티 모듈을 다운로드 받아서 컴파일할 때 --add-module 옵션을 사용해서 같이 컴파일하면 됩니다. 설정을 한 뒤 sudo make && make install를 하면 설치가 됩니다.
nginx의 사용
nginx.conf의 설정에 관련한 내용은 꽤 양이 많으므로 다루지 않습니다. nginx를 실행하려면 다음과 같은 명령어를 실행합니다.
$ sudo /path/to/nginx
nginx 파일은 nginx를 설치한 디렉토리의 sbin 폴더아래 있고 80포트를 사용해야하므로(웹서비이기 때문에 보통...) sudo를 사용해서 root권한으로 실행합니다. 위와 같이 실행하고 아무런 메시지가 나오지 않으면 정상적으로 실행됩니다.
$ sudo /path/to/nginx -s stop
$ sudo /path/to/nginx -s reload
위와 같은 명령어로 nginx를 멈추거나 설정을 재적용할 수 있습니다. 설정을 변경해서 다시 적용하는 경우 nginx를 멈추지 않고 reload 명령어를 사용해도 충분하기 때문에 운영하면서 바로 새로운 명령어를 적용할 수 있습니다.
$ sudo /path/to/nginx -t
nginx: the configuration file /path/tonginx.conf syntax is ok
nginx: configuration file /path/to/nginx.conf test is successful
-t 옵션을 사용하면 reload나 시작을 하기전에 설정파일이 제대로 작성되었는지 테스트할 수 있습니다. 위처럼 successful이 나왔으므로 설정파일이 제대로 되어 있고 여기서 실패할 경우에는 relaod하거나 시작할 때 실패하게 됩니다.
아웃사이더님 글을 생활코딩 NGINX 수업에 참고로 걸었습니다.
고맙습니다!
http://opentutorials.org/module/384/4511
예 감사합니다. ㅎ