목요일, 10월 29, 2015

No Comment
웹에서 접속하기 위해서 Web Server와 Web Application Server를 설치해 주어야 한다. 사용자의 요청에 대해서 Web Server는 정적 파일(HTML, CSS, Javascript, Image)에 대한 처리를 담당하고, Web Application Server는 동적인 처리에 대한 담담을 한다. 하지만 요즘은 Web Application Server에서 Web Server에 대한 처리가 모두 가능하고, 성능도 많이 개선되어서 구성의 주체가 효율적인 판단을 하면 된다.
필자는 Web Server로 많이 사용하는 Nginx를 설치할 것이다. Apache와 비교했을 때 여러 지표에서 뛰어난 성능을 보이고 있는데, Nginx는 비동기 이벤트 기반으로 만들어 져서, 더 적은 자원으로 더 많은 트래픽 처리를 감당할 수 있어서, Apache에 비해서 더 좋은 성능을 발휘하고 있는 부분들이 많다.
Nginx를 사용하는 유명한 곳으로는 Facebook, Netflix, Github, WordPress, Zynga, Sourceforge 등이 있다. 그 만큼 성능이 입증된 믿을 만한 Web Server란 이야기라고 생각하면 되겠다..
그럼 이제부터 설치 및 설정을 시작해 보자.
우선 Nginx를 설치하기 위해서는 Nginx의 의존성을 해결하기 위해서 먼저 설치해 주어야 하는 패키지들이 존재하기에 먼저 필요한 의존성 패키지부터 설치를 시작할 것이다. 그리고 실제 Nginx를 간단하게 설치해서 웹으로 접속해 볼 것이다. 더불어 Nginx에 대한 필요한 설정들도 알아볼 것이다.

NginX 의존성 lib 설치
A. gcc 설치
$ yum install gcc g++ cpp gcc-c++

B. PCRE (Perl Compatible Regular Expressions) 설치
Nginx를 컴파일, 설치하려면 펄 호환 정규표현식이 필요한데, rewirte와 HTTP Core Module이 PCRE 구문 정규 표현식을 사용하기 때문이다. pcre, pcre-devel 두 개의 lib 설치가 필요한다. PCRE는 Compile 버전의 라이브러리고, pcre-devel은 프로젝트를 Compile하기 위한 개발용 헤더와 소스다.
$ yum install pcre pcre-devel

C. zlib 설치
모듈에서 gzip 압축을 사용하기 위해 zlib가 필요한데, zlib와  zlib-devel 두개 모두 필요하다.
$ yum install zlib zlib-devel

D. OpenSSL 설치
OpenSSL은 범용 암호화 라이브러리다. 이미 설치되어 있을수도 있는데, 설치가 되어 있지 않다면 아래 명령어를 따라 설치하면 된다.
$ yum install openssl openssl-devel

Nginx 설치
Nginx를 yum을 통해서도 설치가 가능하지만 필자는 Nginx에 대해 좀 더 상세한 분석을 위해서 직접 파을을 다운 받아서 설정하도록 하겠다.
A. 파일 Download 및 압축해제
$ wget http://nginx.org/download/nginx-1.9.4.tar.gz
$ tar xzf nginx-1.9.4.tar.gz
$ cd nginx-1.9.4

B. 설정
Nginx 설정은 configure를 통해서 진행한다.
$ ./configure

아래 명령은 별도 다시 실행하지 않으도 무관하다. 필자가 필요한 설정들을 정의해서 했던 부분인데, 기본적으로 아래처럼 하지 않아도 "/usr/local/nginx"이 디폴트로 설정되어 있기 때문에 디폴트 하위로 필요한 것들이 만들어지게 되어 있다.
$ ./configure --prefix=/usr/local/nginx --sbin-path=/usr/local/nginx/sbin --conf-path=/usr/local/nginx/conf/nginx.conf --error-log-path=/usr/local/nginx/log/error.log --http-log-path=/usr/local/nginx/log/access.log --pid-path=/usr/local/nginx/run/nginx.pid --lock-path=/usr/local/nginx/run/nginx.lock --http-client-body-temp-path=/usr/local/nginx/cache/client_body_temp --http-proxy-temp-path=/usr/local/nginx/cache/proxy-temp --http-fastcgi-temp-path=/usr/local/nginx/cache/fastcgi-temp --http-uwsgi-temp-path=/usr/local/nginx/cache/uwsgi-temp --http-scgi-temp-path=/usr/local/nginx/cache/scgi-temp --user=ec2-user --group=ec2-user

디폴트로 제공하는 옵션에서 제거하고 싶은 것은 --without 으로 제거하고, 기본 외에 추가로 필요한 것은 --with 옵션으로 지정해 주면 된다. 그 외 서드파티 모듈들은 서드파티 모듈을 다운로드 받아서 컴파일할 때 --add-module 옵션을 사용해서 같이 컴파일하면 된다. "./configure –help" 명령어로 다양한 옵션을 확인할 수 있다.

주요 옵션 설명
--prefix : Nginx 가 설치되는 기본 디렉토리 (/usr/local/nginx)
--sbin-path : 엔진엑스의 바이너리 파일이 설치되는 경로 (/sbin)
--conf-path : 주 환경 설정 파일의 경로 (/conf/nginx.conf)
--error-log-path : 에러 로그 파일 (/log/error.log)
--http-log-path : http 접근 로그의 위치 (/log/access.log)
--pid-path : 엔진엑스 pid 파일 경로 (/run/nginx.pid)
--lock-path : Nginx lock 경로 (/run/nginx.lock)
--with-per_modules_path : 펄 모듈의 경로
--http-client-body-temp-path : 클라이언트 요청에 의한 임시 파일의 저장에 사용되는 디렉토리 (/cache/client_body_temp)
--http-proxy-temp-path: 프록시가 사용하는 임시 파일 위치 (/cache/proxy-temp)
--http-fastcgi-temp-path: (/cache/fastcgi-temp)
--http-uwsgi-temp-path: (/cache/uwsgi-temp)
--http-scgi-temp-path: (/cache/scgi-temp)
--user: Nginx 사용자 (nginx), 지정하지 않으면 nobody
--group: Nginx 그룹 (nginx), 지정하지 않으면 nobody

C. 빌드
$ make

D. 인스톨
$ make install
컴파일된 리소스를 인스톨 디렉토리로 복사한다. 위에서 설정한 prefix 하위로 복사된다.

F. Start
인스톨까지 완료되면, "/usr/local/nginx/" 하위에 필요한 파일들이 만들어지고, Nginx가 실행될 준비가 완료된 것이다. /usr/local/nginx/sbin으로 이동한 후에 nginx를 실행하면 서버가 구동이 된다. EC2의 Public IP로 접속하면 아래와 같은 화면을 볼 수 있을 것이다.
$ cd /usr/local/nginx/sbin
$ ./nginx



E. 추가 설명
- NGINX 실행 명령어
$ /path/sbin/nginx -s stop : 즉각 중단
$ /path/sbin/nginx -s quit : 정상 중단
$ /path/sbin/nginx -s reopen : 로그 파일을 다시 오픈
$ /path/sbin/nginx -s reload : 환경 설정을 다시 로드

- 컴파일 오류 확인
objs/autoconf.err 파일에 컴파일 오류가 적혀서 컴파일 오류 확인이 가능하다.

- 기타 명령어
$ ./nginx –t : 환경 설정의 구문, 유효성, 무결성 체크
$ ./nginx -t -c /home/temp/test.conf : 새 환경 설정을 별도의 임시 파일로 옮겨놓고 그 환경에서 테스트
$ cp /home/temp/test.conf /usr/local/nginx/conf/nginx.conf : 새 환경 설정 검증이 완료되면 정상적인 파일로 복사
$ ./nginx –v : 버전 정보 보기
$ ./nginx –V : ./configure 단계에서 넘긴 스위치 정보 보기

0 개의 댓글:

댓글 쓰기

 
Toggle Footer