이전 포스트에서 우분투에 NGINX를 패키지로 설치하는 방법에 대해 알아봤는데요. 서비스 명령어나 방화벽, 로그 로테이트 설정 같은 부가적인 기능을 별도로 설정할 필요가 없기 때문에 패키지로 설치하는 것이 편하지만 기본 패키지에 포함된 모듈 이외에 추가적인 모듈을 사용하고 싶다면 추가 모듈 소스를 포함해 컴파일 설치를 해야 합니다.
(명령어는 sudo su로 root 권한을 얻어 진행했습니다.)
목차
컴파일 환경 만들기
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번째 줄을 지우고 위 옵션을 넣으면 됩니다.
환경 설정 옵션에 문제가 없다면 설정 관련 옵션들이 출력되어 컴파일을 할 준비가 끝납니다.
make
make 명령어를 입력해서 컴파일을 시작합니다.
컴파일에도 문제가 없다면 위 이미지 같은 메시지를 볼수 있습니다.
make install
이제 위 명령어로 설치를 진행합니다.
설치에 문제가 없다면 위 이미지 같은 메시지와 함께 설치가 종료됩니다.
환경 설정에서 지정한 설정 파일 경로로 이동한 다음 nginx.conf 에서 원하는 대로 nginx를 설정한 다음 서비스를 시작하면 되겠습니다.
서비스 명령어
/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가 구동되는 스크립트 또한 포함되어 별도의 서비스 자동 시작 설정이 필요 없습니다.
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
재컴파일
새로운 버전이 나오거나 모듈을 추가하게 되면 재컴파일이 필요한데 재컴파일시 NGINX 설정 관련 파일 뒤에 .default 확장자가 붙어 기본 설정 파일이 생성되며 사용하고 있는 설정 파일에는 영향을 주지 않습니다. 실행 파일은 .old 확장자가 붙게 됩니다.
단, 버전이 올라가면서 새로 생기는 옵션이나 변경되는 옵션이 있을 수 있으니 실행시 오류가 난다면다운로드 페이지의 업데이트 로그를 잘 살펴봐야 합니다.
재컴파일을 하게 되면 보통 기본 설정 파일이나 이전 실행 파일은 필요가 없으니 컴파일 옵션시 설정했던 디렉토리에서 위에서 얘기했던 확장자 파일들을 삭제하면 되겠습니다.
버전 확인과 컴파일 옵션 확인
nginx -v // 버전 확인 nginx -V // 대문자, 컴파일 옵션 확인
NGINX의 버전을 확인하거나 컴파일 옵션을 확인하고 싶을 때는 위 명령어를 통해 확인할 수 있습니다.
기본 루트 폴더
--prefix=/usr/share/nginx
컴파일 환경 설정시 위 옵션으로 지정한 디렉토리가 기본 루트 폴더가 되며 하위 디렉토리인 www에 index.html 파일이 위치하고 있습니다. 하지만 nginx의 설정에서 원하는 디렉토리로 얼마든지 바꿀 수 있습니다.
레퍼런스 문서
NGINX 컴파일과 모듈 설치에 대해 좀더 자세한 옵션 및 설명은 NGINX 공식 홈페이지에서 확인할 수 있습니다. 또한 패키지 설치시 설정되는 환경 설정을 확인 할 수 있습니다. 만일 컴파일 설치시 패키지 설치 환경과 같게 만들고 싶다면 참고해 보세요.
- NGINX 컴파일 문서
- 패키지 설치시 환경 설정 옵션 (페이지 아래의 Configure Arguments 부분)
2 댓글. Leave new
안녕하세요. 서버 공부하는 학생입니다.
zlib이랑 pcre, openssl을 apt로 설치했는데
그럼 configure에서 with로 포함시켜주지 않아도 되는건가요?
위에 코드에서 안보이는거같아서요.
네. zlib,pcre,openssl을 컴파일로 설치한 경우에는 직접 해당 라이브러리 경로를 지정해야 하지만 apt로 설치한 경우 알아서 라이브러리를 찾아갑니다.
만일 컴파일 오류가 있을때 직접 지정해 주시면 돼요.