NginX Source compile 구성

Smart-JYS
6 min readJan 21, 2020

--

nginx에 대한 소스 컴파일을 해보도록 하겠습니다.

순서는 아래와 같이 심플합니다.

  1. 설치 파일 다운로드
  2. 설치 파일 압축 해제
  3. 컴파일

설치 파일은 http://nginx.org/en/download.html 여기를 통해서 다운로드가 가능합니다. 최신 버전보다는 안정화된 Stable version을 사용하는 것을 권고드립니다. 제가 설치할 버전은 1.16.1 버전 입니다.

파일을 업로드 할때도 Public 망인 경우 wget 또는 curl을 통해서 서버에서 바로 다운로드 할 수 있고, 그렇지 않은 경우 FTP 프로그램을 이용해서 파일을 수동으로 업로드 해야합니다.

여기까지 문제 없이 되었을 거라 생각하고 진행 하겠습니다.

설치 파일 압축을 해제하고, 컴파일을 하기 위해 압축이 해제된 경로로 이동합니다.

$ ls -l
-rw-rw-r-- 1 devops devops 1032630 Aug 13 17:01 nginx-1.16.1.tar.gz
$ tar zxf nginx-1.16.1.tar.gz
total 1012
drwxr-xr-x 8 devops devops 158 Aug 13 12:51 nginx-1.16.1-rw-rw-r-- 1 devops devops 1032630 Aug 13 17:01 nginx-1.16.1.tar.gz$ cd nginx-1.16.1

컴파일 하기 위해서는 configure를 실행해서 구성을 먼저 해야합니다.

어떤 옵션들이 있는지 궁금해서 help를 한번 봤습니다.

$ ./configure --help--help                             print this message--prefix=PATH                      set installation prefix--sbin-path=PATH                   set nginx binary pathname--modules-path=PATH                set modules path--conf-path=PATH                   set nginx.conf pathname--error-log-path=PATH              set error log pathname--pid-path=PATH                    set nginx.pid pathname--lock-path=PATH                   set nginx.lock pathname.... 생략 ....

prefix 옵션이 보이는데 prefix 옵션이 없는 경우 default 경로에 설치 되게 됩니다. 그러면 prefix옵션을 사용해 경로를 변경하도록 하겠습니다.

$ ./configure --prefix=/data/devops/nginx-1.16checking for OS+ Linux 4.14.154-128.181.amzn2.x86_64 x86_64checking for C compiler ... not found./configure: error: C compiler cc is not found

컴파일을 해야하는데 컴파일러가 없다고 나옵니다. 컴파일러는 설치합니다.

# yum install gcc -y

다시 컴파일을 시도합니다.

./configure: error: the HTTP rewrite module requires the PCRE library.You can either disable the module by using --without-http_rewrite_moduleoption, or install the PCRE library into the system, or build the PCRE librarystatically from the source with nginx by using --with-pcre=<path> option.

pcre library 가 필요하다고 합니다. 그럼 pcre를 설치합니다.

# yum install pcre-devel -y

다시 컴파일을 시도합니다.

./configure: error: the HTTP gzip module requires the zlib library.You can either disable the module by using --without-http_gzip_moduleoption, or install the zlib library into the system, or build the zlib librarystatically from the source with nginx by using --with-zlib=<path> option.

이번엔 zlib library 가 필요하다고 합니다. zlib 을 설치합니다.

# yum install zlib-devel -y 

컴파일을 재시도 합니다.

$ ./configure --prefix=/data/devops/nginx-1.16.... 생략 .....Configuration summary+ using system PCRE library+ OpenSSL library is not used <-- 이부분이 맘에 안듭니다. + using system zlib library.... 생략 .....

openssl도 설치 해 줍니다.

# yum install openssl-devel -y

https 를 사용할 수 있기 때문에 with-http_ssl_module 옵션을 추가합니다.

옵션을 추가하기 전에 nginx documentation 을 한번 확인 해 봤더니 옵션 예제가 있습니다.

./configure--sbin-path=/usr/local/nginx/nginx--conf-path=/usr/local/nginx/nginx.conf--pid-path=/usr/local/nginx/nginx.pid--with-http_ssl_module--with-pcre=../pcre-8.43--with-zlib=../zlib-1.2.11

만약 make를 실행 하였다면 make clean을 통해서 처음부터 다시 시작합니다.

위 예제의 경우 default로 사용해도 무방하기 때문에 제가 필요한 옵션을 따로 추가해서 다시 컴파일 합니다.

./configure \--prefix=/data/devops/nginx/nginx-1.16 \--pid-path=/data/devops/nginx/nginx-1.16/run/nginx.pid \--with-http_ssl_module

정상적으로 컴파일이 되었으면 마지막으로 실행합니다.

make && make install 

Nginx 웹서버가 정상적으로 설치 되었습니다.

--

--

Smart-JYS

자신이 하는 일을 잘 이해할수록 그 일을 더 잘한다.