본문으로 바로가기

[Ubuntu] 우분투 NGINX(엔진엑스) 설치

category 리눅스/Ubuntu 2013. 9. 20. 00:00

NGINX는 근래에 경량화 웹서버로서 부각 받고 있는 웹서버입니다. 아래에서 apt-get을 이용한 패키지 설치와 소스 컴파일 설치 방법을 알아봅니다.

유행에 따라 엔진엑스를 설치하겠다고 마음 먹었다면 한번쯤은 고사해보길 권한다. 엔진엑스는 현재까지는 실시간 환경 설정 변경이 안되고 .htaccess 파일이나 그와 유사한 기능을 지원하지 않는다. 엔진엑스가 가진 제약점을 잘 파악하고 그를 대체할수 있을지도 의문을 가져보아야 한다는 소리다. 하지만 동접수가 많은 사이트를 운영중이라면 아파치보다 더 나은 성능을 발휘한다는 것은 틀림없다.

NGINX 패키지 설치

우분투에서 패키지를 이용해 설치하는 방법을 알아보자.

패키지 저장소 추가

버전별 알맞은 내용을 /etc/apt/sources.list의 하단에 추가한다.

Ubuntu 10.04 (Lucid)

deb http://nginx.org/packages/ubuntu/ lucid nginx

deb-src http://nginx.org/packages/ubuntu/ lucid nginx


Ubuntu 11.10 (Oneiric)

deb http://nginx.org/packages/ubuntu/ oneiric nginx 

deb-src http://nginx.org/packages/ubuntu/ oneiric nginx


Ubuntu 12.04 (Percise)

deb http://nginx.org/packages/ubuntu/ precise nginx

deb-src http://nginx.org/packages/ubuntu/ precise nginx


ex)

sudo vi /etc/apt/sources.list

  deb http://nginx.org/packages/ubuntu/ precise nginx
  deb-src http://nginx.org/packages/ubuntu/ precise nginx

인증키 등록

wget http://nginx.org/keys/nginx_signing.key
cat nginx_signing.key | sudo apt-key add -

저장소 업데이트

sudo apt-get update;

NGINX 설치

sudo apt-get install nginx

설치 확인

http://IP주소 로 접속해본다.

NGINX 소스 컴파일 설치

주요 컴파일 옵션들을 다양하게 설정할 필요로 인해 소스 컴파일 설치를 하곤 한다. NGINX는 안타깝게도 Apache처럼 DSO로 작동하지 않기 때문에...;;

공식 문서 : http://nginx.org/en/docs/configure.html

오픈 튜토리얼에 동영상 강좌 : http://opentutorials.org/module/384/4511

의존성 패키지 설치

컴파일러들 설치

sudo apt-get install gcc g++ make

GCC는 C, C++, 자바, 에이다, 포트란 등과 같은 다양한 언어의 무료 오픈소스 컴파일러를 모아 놓은 컴파일러 모음이다.


PCRE : Perl 호환 정규표현식

sudo apt-get install libpcre3 libpcre3-dev

엔진엑스의 rewrite 모듈과 HTTP 코어 모듈은 PCRE 구문에 따르는 정규표현식을 사용한다. 


zlib : 압축 알고리즘

sudo apt-get install zlib1g zlib1g-dev 

zlib 라이브러리는 개발자에게 압축 알고리즘을 제공한다. 엔진엑스 모듈에서 gzip 압축을 사용하려면 zlib 라이브러리가 필요하다.


openssl : 암호 해독 라이브러리

sudo apt-get install openssl libssl-dev

엔진엑스는 OpenSSL 라이브러리를 이용해 보안 웹페이지를 서비스한다.


-- 이하는 컴파일할때 포함할 모듈의 선택에 따라 --

[GD]

sudo apt-get install libgd2-xpm-dev

[xslt]

sudo apt-get install libxslt1-dev libxml2 libxml2-dev

[GeoIP]

sudo apt-get install libgeoip1 libgeoip-dev

NGINX 다운로드

아래에 이어지는 설명은 리눅스 버전의 stable 버전을 이용한 설치방법을 설명할 것이다. NGINX의 다운로드 페이지에서 링크주소를 복사한다.

http://nginx.org/en/download.html (2013/09/12 기준 1.4.2 가 최신 안정화버전임)

다운로드 받을 디렉토리로 이동

cd /usr/local/src

wget을 이용해 다운로드 받는다.

sudo wget http://nginx.org/download/nginx-1.4.2.tar.gz

압축 해제

sudo tar -xzvf nginx-1.4.2.tar.gz

추가 모듈 다운로드

추가로 컴파일시 포함할 모듈을 다운로드 받는다.

외부모듈 -> http://wiki.nginx.org/3rdPartyModules


FancyIndex ]

모듈 다운로드

sudo wget https://gitorious.org/ngx-fancyindex/ngx-fancyindex/archive/2034d0ad35298dabf20772c85293c16f67647bce.tar.gz

모듈 압축해제 ( ngx-fancyindex-ngx-fancyindex 라는 이름으로 해제됨 )

sudo tar -xzvf 2034d0ad35298dabf20772c85293c16f67647bce.tar.gz

이름을 간단하게 변경

sudo mv ngx-fancyindex-ngx-fancyindex ngx-fancyindex


[ Static etags ] - 현재 make 단계에서 에러가 발생한다.

모듈 다운로드

sudo wget https://github.com/mikewest/nginx-static-etags

모듈 압축해제 ( nginx-static-etags-master 라는 이름으로 압축해제됨 )

sudo unzip master

이름을 간단하게 변경

sudo mv nginx-static-etags-master nginx-static-etags

사용자 설정

우분투에 기본적으로 추가되어 있는 www-data 사용자를 이용할 것인데 이 사용자가 존재하지 않는다면 새로이 추가한다.

(www-data가 기타 다른 애플리케이션에서 관례적으로 많이 쓰이기 때문에 추후에 문제를 일으키지 않을 것이다.)

sudo useradd --shell /usr/sbin/nologin www-data

우분투에 추가되어 있는 www-data 사용자가 로그인이 가능하게 되어 있으니 이를 불가능하게 변경하자.

sudo usermod -s /usr/sbin/nologin www-data

configure

configure를 통하여 필요한 모듈을 추가하거나 제거할 수 있고 디렉토리와 파일의 경로를 지정할 수 있다.

configure 공식 문서 : http://nginx.org/en/docs/configure.html

configure 옵션 정리 : http://webdir.tistory.com/238

디렉토리 이동

cd nginx-1.4.2
sudo ./configure --prefix=/usr/local/nginx --user=www-data --group=www-data --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_image_filter_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module --with-http_gzip_static_module --with-http_secure_link_module --with-http_stub_status_module --with-http_xslt_module --with-http_perl_module --add-module=../ngx-fancyindex 

(--add-module=../nginx-static-etags : make 시 에러나서 뺏다.)

환경설정 파일들의 경로들을 변경하고자 한다면 아래의 내용처럼 추가해주면 된다.

--conf-path=/etc/nginx/nginx.conf \

--sbin-path=/usr/sbin \

--http-log-path=/var/log/nginx/access.log \

--error-log-path=/var/log/nginx/error.log \

--pid-path=/var/run/nginx.pid \

--lock-path=/var/lock/nginx.lock \

--http-client-body-temp-path=/var/lib/nginx/body \

--http-proxy-temp-path=/var/lib/nginx/proxy \

--http-fastcgi-temp-path=/var/tmp/nginx/fastcgi_temp \

--http-uwsgi-temp-path=/var/tmp/nginx/fastcgi_temp \

--http-scgi-temp-path=/var/tmp/nginx/fastcgi_temp \


sudo make

($ sudo apt-get install libperl-dev : 에러가 나서 설치했다.)

sudo make install    

INIT 스크립트 추가

레포지토리를 이용한 설치의 경우 init 스크립트가 자동으로 등록되나 소스 컴파일 설치의 경우 이를 직접 등록해야 한다.

https://github.com/JasonGiedymin/nginx-init-ubuntu 에서 제공하는 것을 이용했다.

sudo wget https://raw.github.com/JasonGiedymin/nginx-init-ubuntu/master/nginx -O /etc/init.d/nginx

실행 권한 추가

sudo chmod +x /etc/init.d/nginx

부팅시 자동 실행 등록

sudo update-rc.d -f nginx defaults

이후 부터는 아래의 명령어 사용가능

sudo service start | stop | restart | reload | status

심볼릭 링크 (PATH)

sudo ln -s /usr/local/nginx/sbin/nginx /usr/sbin