WEB/WAS > Nginx

Nginx를 CentOS 7 에 소스 컴파일 설치

컴파일에 필요한 라이브러리 설치

# yum -y update
# yum -y install gcc make gcc-c++ libxslt-devel

필수 라이브러리 설치

1) zlib

버전 체크

# rpm -q zlib

버전업

버전 체크 : >> https://zlib.net/

 

# wget https://zlib.net/zlib-1.2.11.tar.gz
# tar zxf zlib-1.2.11.tar.gz
# cd zlib-1.2.11
# ./configure
# make && make install

# rpm -q zlib

2) openssl 

버전체크

# rpm -q openssl

버전업

버전체크 : >> https://www.openssl.org/source/

 

 

# yum -y install perl
# wget https://www.openssl.org/source/openssl-1.1.0h.tar.gz
# tar zxf openssl-1.1.0h.tar.gz

# cd openssl-1.1.0h
# ./config --prefix=/emc/soft/openssl
# make
# make install

※ ssl 라이브러리 확인

# ldconfig -p | grep ssl

기존 rpm으로 라이브러리가 포함되 있으면, 기존 라이브러리를 참조하게 ld.do.conf에 라이브러리를 추가한다.

# vi /etc/ld.so.conf

 

/emc/soft/openssl/lib     << 이것을 추가
include ld.so.conf.d/*.conf

반영 후 재확인

# ldconfig
# ldconfig -p | grep ssl

3) PCRE 인스톨

PCRE  (Perl Compatible Regular Expressions)

Perl 5 호환의 정규표현을 C언어로 만든 라이브러리 (BSD라이센스로 배포된다)

소스 다운로드  :  마지막 버전 PCRE  (no PCRE2)

http://pcre.org/    
    https://ftp.pcre.org/pub/pcre/
    ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/

 

# curl -L -O https://ftp.pcre.org/pub/pcre/pcre-8.42.tar.gz
# tar zxf pcre-8.42.tar.gz
# cd pcre-8.42

# ./configure --prefix=/emc/soft/pcre8.42
# make && make install

 

Nginx 설치

download  :  >> http://nginx.org/download/

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

# ./configure..... 아래 소스 참조

openssl 과 pcre는 소스가 있는 디렉토리

./configure \
--prefix=/emc/soft/nginx \
--sbin-path=/emc/soft/nginx/sbin/nginx \
--conf-path=/emc/soft/nginx/conf/nginx.conf \
--pid-path=/emc/soft/nginx/mmc/nginx.pid \
--lock-path=/emc/soft/nginx/mmc/nginx.lock \
--error-log-path=/emc/soft/nginx/mmc/error.log \
--http-log-path=/emc/soft/nginx/mmc/access.log \

--with-pcre=/emc/down/pcre-8.42 \
--with-pcre-jit \
--with-http_addition_module \
--with-http_dav_module \
--with-http_gzip_static_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-http_sub_module \
--with-http_xslt_module \
--with-mail \
--with-mail_ssl_module \
--with-openssl=/emc/down/openssl-1.1.0h

 

# make && make install

Port 등의 변경이 필요할 경우

위 지정한 설정파일 확인 :;  --conf-path=/emc/soft/nginx/conf/nginx.conf

server { listen  80;  ...

기동 / 정지 등

1) 기동

# {nginx_home}/sibn/nginx
# /emc/soft/nginx/sbin/nginx

2) 정지

# ./nginx -s stop
# /emc/soft/nginx/sbin/nginx -s stop

3) 기동 후 확인

http://${IP_Address}

 

사용자 작성 및 자동기동 설정

1) Nginx용 사용자 작성

# useradd --shell /sbin/nologin nginx            
            
# vi /emc/soft/nginx/conf/nginx.conf            
    1번째 행에 다음 추가        
        user  nginx;    

 

2) init 스크립트 작성

# vi /etc/init.d/nginx

스크립트는 아래 참조한다.
 

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

스크립트의 실행권한을 부여한다.

**** nginx  script ****

#! /bin/sh
# Author: Ryan Norbauer http://norbauerinc.com
# Modified: Geoffrey Grosenbach http://topfunky.com
# Modified: Clement NEDELCU
set -e
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC="nginx daemon"
NAME=nginx
DAEMON=/emc/soft/nginx/sbin/$NAME
SCRIPTNAME=/etc/init.d/$NAME

# 데몬파일이 없으면 종료
test -x $DAEMON || exit 0

d_start() {
  $DAEMON || echo -n " already running"
}

d_stop() {
  $DAEMON -s quit || echo -n " not running"
}

d_reload() {
  $DAEMON -s reload || echo -n " could not reload"
}

case "$1" in
  start)
    echo -n "Starting $DESC: $NAME"
    d_start
    echo "."
  ;;
  stop)
    echo -n "Stopping $DESC: $NAME"
    d_stop
    echo "."
  ;;
  reload)
    echo -n "Reloading $DESC: configuration..."
    d_reload
    echo "reloaded."
  ;;
  restart)
    echo -n "Restarting $DESC: $NAME"
    d_stop
    # 재기동 하기전에 2초 Sleep한다. Nginx데몬이 은밀히 종료하기 때문에 시간을 준다.
    sleep 2
    d_start
    echo "."
  ;;
  *)
    echo "Usage: $SCRIPTNAME {start|stop|restart|reload}" >&2
    exit 3
  ;;
esac

exit 0

3) 패스를 설정한다.

# echo 'export PATH="/emc/soft/nginx/sbin:$PATH"' >> ~/.bashrc
# source ~/.bashrc

 

4) 기동 / 정지

# /etc/init.d/nginx start
# /etc/init.d/nginx stop

5) 자동기동 설정

/etc/rc.local        
    에 등록한다.    
# echo "/etc/init.d/nginx" >> /etc/rc.local        

 

Error 에러

./configure: error: the HTTP XSLT module requires the libxml2/libxslt
libraries. You can either do not enable the module or install the libraries.

libxslt-devel 라이브러리 설치

# yum -y install libxslt-devel

 

configure: error: Invalid C++ compiler or C++ compiler flags

컴파일러 gcc-c++ 설치

# yum install gcc gcc-c++