Nginx 컴파일 설치 - download 와 build script

  • CentOS 6,7 버젼을 기준으로 작성되었습니다.
  • yum install 이 아닌 Nginx build 설치 방법에 대해서 작성합니다.
  • root 계정이 아닌 일반 계정으로 설치하는 방법에 대해서 정리한다.
  • 일반 사용자 계정이기 때문에 configure 파일을 다르게하여 여러개의 인스턴스를 올릴 수 있다는 장점이 있다.

Nginx 및 필수파일 다운로드


  1. Nginx
    $> wget http://nginx.org/download/nginx-1.14.0.tar.gz
  2. zlib
    $> wget http://zlib.net/zlib-1.2.11.tar.gz
  3. pcre
    $> wget http://downloads.sourceforge.net/project/pcre/pcre/8.41/pcre-8.41.tar.gz
  4. openssl

* $> wget http://www.openssl.org/source/openssl-1.0.2f.tar.gz

  • 각 파일을 같은 폴더에 풀어준다.

Ngins 및 필수파일 Download script

#!/usr/bin/env bash


NGINX_ROOT_PATH=~/nginx 
NGINX_LIBS_PATH=$NGINX_ROOT_PATH/libs

-f $NGINX_LIBS_PATH || mkdir -p $NGINX_LIBS_PATH

(cd $NGINX_LIBS_PATH &&
wget http://nginx.org/download/nginx-1.14.0.tar.gz
tar -xvf nginx-1.14.0.tar.gz &
wget http://zlib.net/zlib-1.2.11.tar.gz
tar -xvf zlib-1.2.11.tar.gz &
wget http://downloads.sourceforge.net/project/pcre/pcre/8.41/pcre-8.41.tar.gz
tar -xvf pcre-8.41.tar.gz &
wget http://www.openssl.org/source/openssl-1.0.2f.tar.gz
tar -xvf openssl-1.0.2f.tar.gz
)

Nginx 빌드하기

  • 다운로드한 nginx 파일을 압축풀면 configure 파일이 생긴다. 해당 파일로 설정을 한 뒤 빌드를 진행 할 수 있다.
  • 예제 build.nginx.sh
#!/usr/bin/env bash

NGINX_ROOT_PATH=~/nginx 
NGINX_CONF_PATH=$NGINX_ROOT_PATH/conf
NGINX_PID_PATH=$NGINX_ROOT_PATH/pid
NGINX_ACCESS_LOG_PATH=$NGINX_ROOT_PATH/log 
NGINX_ERROR_LOG_PATH=$NGINX_ROOT_PATH/log 
NGINX_LIBS_PATH=$NGINX_ROOT_PATH/libs
NGINX_ADDITIONAL_MODULE_PATH=$NGINX_ROOT_PATH

-f $NGINX_ROOT_PATH || mkdir -p $NGINX_ROOT_PATH
-f $NGINX_CONF_PATH || mkdir -p $NGINX_CONF_PATH
-f $NGINX_PID_PATH || mkdir -p $NGINX_PID_PATH
-f $NGINX_ACCESS_LOG_PATH || mkdir -p $NGINX_ACCESS_LOG_PATH
-f $NGINX_ERROR_LOG_PATH || mkdir -p $NGINX_ERROR_LOG_PATH
-f $NGINX_LIBS_PATH || mkdir -p $NGINX_LIBS_PATH
-f $NGINX_ADDITIONAL_MODULE_PATH || mkdir -p $NGINX_ADDITIONAL_MODULE_PATH

(cd $NGINX_LIBS_PATH/nginx-1.14.0 &&

./configure \
  --sbin-path=$NGINX_ROOT_PATH/ \
  --conf-path=$NGINX_CONF_PATH/nginx.conf \
  --pid-path=$NGINX_PID_PATH/nginx.pid \
  --error-log-path=$NGINX_ERROR_LOG_PATH/error.log \
  --http-log-path=$NGINX_ACCESS_LOG_PATH/access.log \
  --with-http_ssl_module \
  --with-http_stub_status_module \
  --with-stream=dynamic \
  --with-pcre=$NGINX_LIBS_PATH/pcre-8.41  \
  --with-zlib=$NGINX_LIBS_PATH/zlib-1.2.11 \
  --with-openssl=$NGINX_LIBS_PATH/openssl-1.0.2f   \
  --prefix=$NGINX_ADDITIONAL_MODULE_PATH  &&  # module 위치 설정.


make install)

  • 만약 80 port 를 사용하고 싶다면 빌드 결과물인 nginx 파일을 root 권한으로 변경해줘야 한다.

Nginx start & shutdown 실행파일

  • 여러개의 nginx 인스턴스를 올릴수 있는데, conf 파일을 조정하고 중복되는 port 가 없어야 한다.
  • startup.nginx.sh
#!/usr/bin/env bash

NGINX_ROOT_PATH=~/nginx 
NGINX_CONF_PATH=$NGINX_ROOT_PATH/conf
NGINX_PID_PATH=$NGINX_ROOT_PATH/pid

NGINX="$NGINX_ROOT_PATH/nginx"
CONF="$NGINX_CONF_PATH/nginx.conf"

PID_FILE="$NGINX_PID_PATH/nginx.pid"

PID=`cat $PID_FILE`

nginx_pnum=`pgrep -f nginx | grep $PID | wc -l`


if [ $nginx_pnum -gt 0 ] ; then
        $NGINX -s reload -c $CONF
else
        $NGINX -c $CONF
fi
#!/usr/bin/env bash

NGINX_ROOT_PATH=~/nginx 
NGINX_CONF_PATH=$NGINX_ROOT_PATH/conf

NGINX="$NGINX_ROOT_PATH/nginx"
CONF="$NGINX_CONF_PATH/nginx.conf"

$NGINX  -c $CONF -s stop
  • 참조 : https:/bkim.tistory.com/12
  • 참조 : http:/nginx.org/en/docs/configure.html


+ Recent posts