[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이 있어서 도메인 명을 통해서 접속하였습니다.
완료된 현재 구조
현재 구조는 현재 아래처럼 웹 클라이언트가 현재 내 웹 서버에 Nginx를 통해서 접근하고 가장 기본 index.html을 띄워주는 구조로 되어있습니다.
- Web Client <-> Web Server(Nginx)