우분투 NGINX 컴파일 설치 방법

NGINX

이전 포스트에서 우분투에 NGINX를 패키지로 설치하는 방법에 대해 알아봤는데요. 서비스 명령어나 방화벽, 로그 로테이트 설정 같은 부가적인 기능을 별도로 설정할 필요가 없기 때문에 패키지로 설치하는 것이 편하지만 기본 패키지에 포함된 모듈 이외에 추가적인 모듈을 사용하고 싶다면 추가 모듈 소스를 포함해 컴파일 설치를 해야 합니다.

(명령어는 sudo su로 root 권한을 얻어 진행했습니다.)

튜토리얼 환경 : 우분투 16.04

컴파일 환경 만들기

apt-get install make libperl-dev libpcre3 libpcre3-dev zlib1g zlib1g-dev openssl libssl-dev libxml2-dev libxslt1-dev libgd-dev libgeoip-dev google-perftools libgoogle-perftools-dev gcc g++

nginx 컴파일을 위해서는 코어 및 모듈 동작에 필요한 PCRE, zlib, OpenSSL 라이브러리와 기본 패키지에서 제공하는 모듈을 사용할 수 있게 개발자 패키지와 컴파일러가 필요합니다. 이 라이브러리는 apt를 통해 위 명렁어로 쉽게 설치할 수 있습니다.

컴파일 소스 다운로드

wget http://nginx.org/download/nginx-1.11.10.tar.gz
tar -zxf nginx-1.11.10.tar.gz
cd nginx-1.11.10

위 링크에서 최신 버전의 nginx를 다운로드 받습니다. mainline과 stable 버전이 있는데 mainline이 최신 업데이트 버전이고 stable 버전의 패치가 포함되어 있기 때문에 mainline 버전을 설치하는 것이 좋습니다.

다운로드 받은 파일의 압축을 풀어 소스가 있는 디렉토리로 이동합니다.

컴파일과 설치

./configure \
--sbin-path=/usr/local/sbin/nginx \
--conf-path=/usr/local/nginx/nginx.conf \
--pid-path=/var/run/nginx.pid \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_addition_module \
--with-http_xslt_module \
--with-http_image_filter_module \
--with-http_geoip_module \
--with-http_sub_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_mp4_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_auth_request_module \
--with-http_random_index_module \
--with-http_secure_link_module \
--with-http_slice_module \
--with-http_degradation_module \
--with-http_stub_status_module \
--with-http_perl_module \
--with-mail \
--with-mail_ssl_module \
--with-stream \
--with-stream_ssl_module \
--with-google_perftools_module \
--with-cpp_test_module \
--with-debug

위 환경 설정 옵션은 NGINX 기본 패키지에서 제공하는 모든 기능과 모듈, 실행 파일 위치와 각 기능에 필요한 디렉토리를 설정하는 것이 포함되어 있는 옵션입니다. 앞서 얘기한 것처럼 NGINX에서 모듈을 추가하기 위해서는 재 컴파일을 해야하니 번거롭지 않게 패키지에 포함된 모든 모듈을 사용할 수 있게 합니다.

보통 apt를 이용해 패키지로 nginx를 설치하면 설정 파일이 위치하는 디렉토리가 /etc/nginx 인데 위 옵션으로 컴파일 하게 되면 /usr/local/nginx 에 위치하게 됩니다.

--prefix=/usr/share/nginx \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/error.log \
--http-log-path=/var/log/access.log \

만일 패키지를 통해 설치한 것 처럼 각종 파일의 위치를 /etc/nginx 로 변경하고 싶다면 옵션의 3번째 줄을 지우고 위 옵션을 넣으면 됩니다.

1

환경 설정 옵션에 문제가 없다면 설정 관련 옵션들이 출력되어 컴파일을 할 준비가 끝납니다.

make

make 명령어를 입력해서 컴파일을 시작합니다.

3

컴파일에도 문제가 없다면 위 이미지 같은 메시지를 볼수 있습니다.

make install

이제 위 명령어로 설치를 진행합니다.

5

설치에 문제가 없다면 위 이미지 같은 메시지와 함께 설치가 종료됩니다.

7

환경 설정에서 지정한 설정 파일 경로로 이동한 다음 nginx.conf 에서 원하는 대로 nginx를 설정한 다음 서비스를 시작하면 되겠습니다.

서비스 명령어

9

/usr/local/sbin/nginx // 서비스 시작
/usr/local/sbin/nginx -s stop // 서비스 정지
/usr/local/sbin/nginx -s reload // 서비스 재시작
/usr/local/sbin/nginx -t // 설정 파일 syntax 테스트

패키지 설치와는 다르게 service nginx start 명령어를 기본적으로 사용할 수 없기 때문에 위의 명령어를 통해 nginx 서비스를 시작, 정지, 재시작 할수 있습니다. 실행 파일은 컴파일시 지정할 수 있기 때문에 위 명령어는 nginx 기본 환경 설정일 때 유효합니다.

패키지 설치시 사용하는 service nginx start 같은 명령어를 컴파일로 설치한 NGINX에서 사용하기 위해서는 별도의 작업이 필요합니다.

스크립트는 GitHub에서 다운로드 받아 컴파일해 설치할수 있으며 명령어 뿐만 아니라 서버 재시작시 자동으로 NGINX가 구동되는 스크립트 또한 포함되어 별도의 서비스 자동 시작 설정이 필요 없습니다.

11

apt-get install git
git clone https://github.com/Fleshgrinder/nginx-sysvinit-script.git
cd nginx-sysvinit-script
make install

GitHub에서 파일을 좀더 쉽게 다운로드 받기 위해서 위 명령어로 패키지를 설치한 다음 스크립트를 다운로드 받은 다음 컴파일 설치하면 패키지 설치때와 같은 아래의 서비스 명령어를 사용할 수 있으며 서버 재부팅시 자동으로 NGINX가 시작됩니다.

service nginx start
service nginx stop
service nginx force-reload
service nginx reload
service nginx restart
service nginx try-restart
service nginx status

재컴파일

13

새로운 버전이 나오거나 모듈을 추가하게 되면 재컴파일이 필요한데 재컴파일시 NGINX 설정 관련 파일 뒤에 .default 확장자가 붙어 기본 설정 파일이 생성되며 사용하고 있는 설정 파일에는 영향을 주지 않습니다. 실행 파일은 .old 확장자가 붙게 됩니다.

단, 버전이 올라가면서 새로 생기는 옵션이나 변경되는 옵션이 있을 수 있으니 실행시 오류가 난다면다운로드 페이지의 업데이트 로그를 잘 살펴봐야 합니다.

재컴파일을 하게 되면 보통 기본 설정 파일이나 이전 실행 파일은 필요가 없으니 컴파일 옵션시 설정했던 디렉토리에서 위에서 얘기했던 확장자 파일들을 삭제하면 되겠습니다.

버전 확인과 컴파일 옵션 확인

nginx -v // 버전 확인
nginx -V // 대문자, 컴파일 옵션 확인

NGINX의 버전을 확인하거나 컴파일 옵션을 확인하고 싶을 때는 위 명령어를 통해 확인할 수 있습니다.

기본 루트 폴더

--prefix=/usr/share/nginx

컴파일 환경 설정시 위 옵션으로 지정한 디렉토리가 기본 루트 폴더가 되며 하위 디렉토리인 www에 index.html 파일이 위치하고 있습니다. 하지만 nginx의 설정에서 원하는 디렉토리로 얼마든지 바꿀 수 있습니다.

레퍼런스 문서

NGINX 컴파일과 모듈 설치에 대해 좀더 자세한 옵션 및 설명은 NGINX 공식 홈페이지에서 확인할 수 있습니다. 또한 패키지 설치시 설정되는 환경 설정을 확인 할 수 있습니다. 만일 컴파일 설치시 패키지 설치 환경과 같게 만들고 싶다면 참고해 보세요.

2 댓글. Leave new

  • 안녕하세요. 서버 공부하는 학생입니다.
    zlib이랑 pcre, openssl을 apt로 설치했는데
    그럼 configure에서 with로 포함시켜주지 않아도 되는건가요?
    위에 코드에서 안보이는거같아서요.

    응답
    • 네. zlib,pcre,openssl을 컴파일로 설치한 경우에는 직접 해당 라이브러리 경로를 지정해야 하지만 apt로 설치한 경우 알아서 라이브러리를 찾아갑니다.

      만일 컴파일 오류가 있을때 직접 지정해 주시면 돼요.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Fill out this field
Fill out this field
유효한 이메일 주소를 입력해주세요.

nginx title 03
NGINX WebDAV 설정 방법
WebDAV(Web Distributed Authoring and Versioning)는 http를 이용해 웹서버에 저장되어 있는 파일을 여러 사용자가 편집하기 위해 고안된 프로토콜입니다. 실제로는 FTP 대용으로…
windows nginx php setting title
윈도우 NGINX PHP 연동 및 서비스 등록 방법
이전 포스트에서 윈도우에 NGINX를 설치하고 서비스에 등록하는 방법까지 알아봤는데요. NGINX를 개발 환경 또는 웹서버 환경으로 만들기 위해서 PHP를 설치해야 하는…