Ubuntu 12.04 에서 Nginx 1.4.0 설치 및 업그레이드
우분투 서버에 딸려 나오는 Apache 2.2.x 웹서버에서 nginx 1.2.x 웹서버로 갈아탄 후, 계속해서 마이너 업데이트가 나올 때 마다 바로바로 업데이트를 해주었는데, 오늘 nginx news 사이트를 확인해 보니 1.3.x 개발자 버전의 안정화 버전(Stable Version)인 1.4 버전이 공식 배포되고 있었다. 바로 어제 MariaDB 관련 패키지를 무심코 업데이트 했다가 괜한 시간 낭비를 한 경험이 있어서 이번에는 일단 테스트 서버에서 먼저 프로덕션 서버의 환경설정 및 Add-on 들을 테스트 해 보았다. 다행히 눈에 띄는 에러 또는 호환성 문제는 발견되지 않아, 프로덕션 서버 역시 nginx 1.2.8 버전에서 1.4.0 로 업데이트를 완료하였다.
경험상, PHP/Mysql 기반의 CMS 플레폼을 이용하고 있다면 nginx 업데이트는 크게 긴장할 필요는 없다. 물론, 특정 nginx 의 Module/Add-on 이 새로운 버전과 호환되지 않을 수도 있지만, PHP/Mysql 메이저 업데이트시 가끔 볼 수 있는 GB 용량의 에러로그, 공백 페이지, 데이터베이스 연결에러 등의 황당한 결과는 잘 발생하지 않는다. 다음은 필자가 이번에 nginx 1.2.8 버전에서 1.4.0 버전으로 업데이트 할 때 실행한 일련의 Shell 명령들이다. 1.2.x 사용자 중 1.4.0 버전으로 업데이트 하려는 사용자들에게 참고가 되길 바란다.
** nginx 1.4.0 변경내용
1 2 3 4 5 6 7 |
Changes with nginx 1.4.0 24 Apr 2013 *) Bugfix: nginx could not be built with the ngx_http_perl_module if the --with-openssl option was used; the bug had appeared in 1.3.16. *) Bugfix: in a request body handling in the ngx_http_perl_module; the bug had appeared in 1.3.9. |
** nginx 1.4.0 다운로드 및 컴파일/설치
1 2 3 4 5 6 |
wget http://nginx.org/download/nginx-1.4.0.tar.gz tar xvf nginx-1.4.0.tar.gz cd nginx-1.4.0 ./configure --without-http_autoindex_module --without-http_ssi_module --with-http_mp4_module --with-http_realip_module --with-http_gzip_static_module --add-module=../ngx_cache_purge make -j5 make install |
4번째 라인은 컴파일을 하기 전에 환경 설정을 해주는 옵션이며, 서버 사용 목적에 따라 옵션을 변경해 줄 수 있다. 필자의 경우는, 임의의 폴더내에 저장된 컨텐츠를 목록으로 보여주는 autoindex 모듈과 보안상 취약점이 있는 ssi 모듈을 제외시켰고, CDN 서비스를 이용하고 있으므로 realip 모듈을 추가하였다. mp4 모듈은 동영상 파일을 스트리밍 하기 위해, gzip_static 모듈은 이미 gzip 으로 압축된 파일은 그대로 전송하기 위해, ngx_cache_purge 는 proxy 및 fastcgi cache 등의 purge 를 위해 별도로 추가시켰다.
** nginx 1.4.0 버전으로 재실행
컴파일 및 설치가 완료되었다면, 현재 실행 중인 1.2.8 버전을 종료시키고, 새롭게 컴파일된 1.4.0 버전을 실행시킨다. (USR2, WINCH 시그널을 이용하면, nginx 웹서버를 중단하지 않고 업그레이드 할 수 있다. 자세한 내용은 여기)
1 2 3 4 |
cd /usr/local/nginx/sbin nginx -s stop service nginx start rm -f nginx.old |