[Nginx] Ubuntu에서 apt-get을 통해 Nginx 설치하기 및 간단한 정리

업데이트(2018.04.16): 통계자료 링크에 따라서 업데이트 및 내용 보충

Ubuntu 환경에서 pyenv와 virtualenv를 사용해보자


환경

  • Ubuntu 14.04
  • Ubuntu 16.04


package를 통한 nginx 설치

nginx를 설치하는 방법에는 apt-get을 통한 방식과 직접 소스코드를 내려받아서 컴파일하는 2가지 방식이 있습니다. 더 편하고 빠른 방식은 package를 통한 방식이라 apt-get을 이용해서 설치하겠습니다.

$ sudo apt-get install nginx

다음 명령어를 통해서 버전도 확인하고 설치가 되었는지 확인해봅시다.

$ nginx -v
nginx version: nginx/1.4.6 (Ubuntu)

코드를 직접 받아서 make를 통한 직접 컴파일을 해서 설치하는 부분은 현재 진행하는 프로젝트가 끝나고 해보도록 하겠습니다.:)


Nginx에 대해서 간략하게

Nginx?

Apache처럼 웹서버 환경을 만들어주는 소프트웨어입니다.

웹서버?

웹서버란 전체 서버 아키텍처의 앞단에서 HTTP 요청에 따라서 그 요청을 넘기고 그에 해당하는 file 혹은 리소스를 넘겨주는 역할을 하는 부분입니다.

시장 점유율

현재 2018년 기준 w3techs에 따르면 38.0%의 사이트들이 사용하고 있다고 함니다.(해당링크)

Apache와의 차이점 및 장점

구조적인면에 있어서 Apache의 경우에는 요청마다 스레드 혹은 프로세스 기반으로 처리하는데, Nginx의 경우에는 이러한 구조 대신에 요청을 비동기 이벤트 구조로 구동됩니다. 그래서 구글에 있는 글들에 의하면 더 적은 리소스를 효율적으로 사용 할 수 있다고 나와 있습니다.

  • Apache: 요청마다 스레드 혹은 프로세스 생성 및 처리
  • Nginx: 요청마다 비동기 이벤트를 발생시켜 처리


nginx 사용 명령어

// 시작
$ sudo service nginx start
$ sudo systemctl start nginx
$ sudo /etc/init.d/nginx start

// 재시작
$ sudo service nginx restart
$ sudo systemctl restart nginx
$ sudo /etc/init.d/nginx restart

// 중지
$ sudo service nginx stop
$ sudo systemctl stop nginx
$ sudo /etc/init.d/nginx stop

// 상태
$ sudo service nginx status
$ sudo systemctl status nginx

// 설정 reload
$ sudo service nginx reload
$ sudo systemctl reload nginx
$ sudo nginx -s reload

// configuration file syntax check
$ sudo nginx -t


nginx 설정

설정 파일들 경로

nginx 설치 방법에는 2가지 방법이 있다고 했다. 각 설치법에 따라서 환경설정 파일의 위치가 다르다.

  • package(apt-get을 통한 설치)의 경우: /etc/nginx에 위치
  • 직접 compile한 경우: /usr/local/nginx/conf, /usr/local/etc/nginx

위에 3개의 폴더중에는 한 곳에 위치하게 되어있지만 다음 명령어를 통해서도 찾을 수 있다고 합니다.

$ sudo find / -name nginx.conf


설정 파일들

모든 설정파일들을 건드려보지 않았기에 설정 할 때 필요한 몇가지 파일 및 폴더들만 보겠습니다.

  • nginx.conf: nginx와 그 모듈들이 작동하는 방식에 대한 설정 파일입니다. sites-enabled안에 각각 서버에 대한 conf파일들을 만들고 이 안에 첨부하여 웹서버를 운영할 수 있습니다. conf 파일안을 보시면 http, server, location, upstream과 같이 나누어져 있는데 이를 블록이라 하며 server는 가상 서버 혹은 일반 서버를 호스팅 할 때 사용되며 location의 경우 특정 폴더 밑 파일에 대한 경로를 지정해주고 upstream의 경우 Reverse Proxy 설정을 위해서 사용됩니다.

  • sites-enabled: 위에서 말한 nginx.conf에 첨부해서 실제로 서버를 운영할 설정 파일들이 들어있는 폴더입니다. 실제로 코드를 보면 nginx.conf에서 여기 폴더에 있는 모든 파일들을 불러옵니다.

  • fastcgi_params, scgi_params, uwsgi_params: uwsgi와 같이 웹 서버와 애플리케이션 서버 사이에서 인터페이스 역할을 해줄 때 필요한 파일들입니다.

파일을 어떻게 사용하는지에 대한 간단한 설명은 다음 포스팅에서 Nginx-uWSGI-Django 연결 편에서 사용해볼 예정입니다.


접속을 통한 확인

이제 설치가 모두 되었다면 자신의 컴퓨터의 IP주소를 브라우저 창에 치면 아래와 같이 “Welcome to nginx”가 나와야합니다.

제 경우에는 Domain이 있어서 도메인 명을 통해서 접속하였습니다.

Welcome


완료된 현재 구조

현재 구조는 현재 아래처럼 웹 클라이언트가 현재 내 웹 서버에 Nginx를 통해서 접근하고 가장 기본 index.html을 띄워주는 구조로 되어있습니다.

  • Web Client <-> Web Server(Nginx)


참고자료