5화 본격적인 서버 구축 - 웹 서버(Web Server) 설치
왜 파일 서버 설치 이후에 웹 서버(Web Server)를 설치할까요?
그럼 웹 서버(Web Server)란 무엇일까요?
웹 서버(Web Server)는 HTTP를 통해 웹 브라우저에서 요청하는 HTML 문서나 오브젝트(이미지 파일 등)을 전송해주는 서비스 프로그램을 말한다. 웹 서버 소프트웨어를 구동하는 하드웨어도 웹 서버라고 해서 혼동하는 경우가 간혹 있다.
웹 서버는 크게 하드웨어와 소프트웨어로 나뉠 수 있지만 우리가 흔히 말하는 웹 서버는 소프트웨어로 크롬이나 익스플로러 같은 웹 브라우저로부터 HTTP 요청을 받아들이고, HTML 문서와 같은 웹 페이지에서 흔히 찾아볼 수 있는 자료 컨텐츠에 따라 HTTP 응답을 해주는 프로그램을 말한다
웹서버란 말을 쉽게 비유하면 아래와 같습니다.
우리가 흔히 쓰는 크롬이나 익스플로러를 일종의 문서를 보기 위한 장치로 볼 경우
여러 기능들이 있지만 그중 가장 대표적인 기능을 본다면
이용자가 요청한 문서의 내용을 전송해주는 프로그램을 이야기합니다.
웹서버의 특징
1.웹서버는 이미지나 단순 Html 파일 같은 정적인(변하지 않는) 데이터 혹은 파일을 이용자에게 전송할때 사용한다.
2. 대규모 웹 사이트를 구성하는 경우, 같은 서비스를 제공하는 웹 서버를 병렬로 설치하고, 웹서버의 앞쪽에 로드 밸런스(분산처리)를 통해 웹 서버에 처리를 분배하는 방식을 사용하고 있다.
이중 제가 설치하려는 목적은 1에 가깝습니다.
이용할 수 있는 대표적인 웹 서버(Web Server)의 종류는 무엇이 있을까?
Developer |
July 2016 |
Percent |
August 2016 |
Percent |
Change |
Apache |
340,551,074 |
31.72% |
300,028,832 |
26.01% |
-5.71 |
nginx |
170,896,716 |
15.92% |
181,606,297 |
15.74% |
-0.17 |
출처: https://news.netcraft.com/archives/category/web-server-survey/
기존의 오픈 소스 시장에서 아차피(Apache)의 위치는 독보적 이었다.
근래 들어 엔진엑스(Nginx)가 아파치(Apache)의 지분을 가져가고 있습니다.
그럼 각각의 웹서버의 차이는 무엇인지 알아보겠습니다.
- 아파치(Apache)
오픈소스 소프트웨어 그룹인 아파치 소프트웨어 재단에서 만드는 웹 서버 프로그램.
팀 버너스 리가 만든 최초의 웹 서버 프로그램인 "NCSA HTTPd"를 기반으로 만들어졌다. 현재 최신 버전은 2.4.18이다.
리눅스가 서버 OS의 최다 점유율을 차지하자 아파치도 자연스럽게 최다 점유율을 차지하게 되었다.이후 2.2 버전대에서 너무 무겁다는 평이 많아졌고, 빠른 속도를 내세운 엔진엑스(Nginx)는 웹 서버 프로그램이 새로 나오면서 아파치(Apache)의 위기가 왔다. 그러나 아파치는 Event MPM을 탑재하여 속도를 크게 개선한 2.4 버전을 내놓으면서 거기에 대응하고 있다.
- 엔진엑스(Nginx)
2002년부터 러시아의 프로그래머 이고르 시쇼브(Игорь Сысоев)가 Apache(아파치)를 코딩하다 Apache의 C10K 문제를 보고 이를 극복하면서 네이티브 Win32환경에도 돌아갈 무설치 웹 서버 프로그램에 대한 개발을 시작하여 2004년에 발표한 오픈소스 서버 프로그램
역사가 오래되진 않아서 점유율 면에서 아파치(Apache)에게 많이 밀린다. 하지만 신규서비스를 중심으로 점유율에 가속이 붙는 중이며, 이미 아파치(Apache)가 여러가지면에 한계를 많이 보였으므로 특별히 큰 사유가 없다면 엔진엑스(nginx)로 갈아타는 추세다. 다만 확장 모듈이 아파치(Apache)에 비해 적다는 것이 흠인데, 어차피 아파치(Apache)의 이 많은 확장 모듈을 제대로 쓰는 사람은 드물다. 리소스만 낭비하는 모듈이 대부분이다. 따라서 호환성 확인 후 별다른 문제가 없다면 엔진엑스(Nginx)로 갈아타는 것이 현추세입니다.
이글을 쓰고 있는 현재 네이버의 권위를 빌려오면 네이버 메인 역시도 아파치에서 엔진엑스로 갈아타는 추세이다.
참조:http://www.slideshare.net/sjjang61/nginx-testing-innaver-16742438
위와 같은 이유로 우리는 엔진엑스(Nginx)를 사용하겠습니다.
이제 엔진엑스(Nginx)를 설치해 보겠습니다.
엔진엑스(Nginx)설치는 Yum으로 설치하게 됩니다.
최신 버전의 설치를 위해 엔진엑스(Nginx) 전용 저장소를 추가해서 설치해보겠습니다.
1) Yum 저장소 설정
[root@mobileflow yum]# vi /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=0 enabled=1
:wq
2)엔진엑스(Nginx) 설치
[root@mobileflow yum]#
yum install nginx
3) 엔진엑스(Nginx) 재부팅시 자동실행 설정
[root@mobileflow yum]#
systemctl enable nginx
4) 엔진엑스(Nginx) 설정파일 위치 검색
[root@mobileflow conf]# whereis nginx
nginx: /usr/local/nginx
5) 엔진엑스(Nginx) 설정파일 수정
[root@mobileflow conf]# vi /usr/local/nginx/conf/nginx.conf
#user nobody; worker_processes 1; #보통CPU 수만큼 설정합니다. #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; #max_clients = worker_processes * worker_connections } http { include mime.types; default_type application/octet-stream; #access_log logs/access.log main; sendfile on; keepalive_timeout 5; #gzip on; server { listen 4000; #포트설정 server_name localhost; #이름 location / { root /var/www; #파일이 업로드 되는 위치 expires 1M; #기간 access_log off; #로그 여부 add_header Cache-Control "public";#캐시설정 } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
6)엔진엑스(Nginx) 실행
[root@mobileflow conf]# service nginx start
[개발자가 하는 일 1] 서버 구축에 앞서..
[개발자가 하는 일 3] 본격적인 서버 구축 - 기본 설정 및 확인
[개발자가 하는 일 4] 본격적인 서버 구축 - vsftpd설치
1)
http://nginx.org/
3) https://www.nginx.com/resources/wiki/
4) http://nginx.org/en/docs/http/ngx_http_headers_module.html#expires
5) http://nginx.org/en/docs/http/ngx_http_core_module.html#worker_processes
6) http://nginx.org/en/docs/http/ngx_http_headers_module.html#expires
7) http://www.slideshare.net/sjjang61/nginx-testing-innaver-16742438
8) https://en.wikipedia.org/wiki/Web_server
9) https://news.netcraft.com/archives/category/web-server-survey/
11)https://namu.wiki/w/%EC%9B%B9%20%EC%84%9C%EB%B2%84?from=%EC%9B%B9%EC%84%9C%EB%B2%84
작성 폼 양식
번호) 제목
[root@mobileflow ~]# 명령어
실행결과
1) http://nginx.org/
3) https://www.nginx.com/resources/wiki/
4) http://nginx.org/en/docs/http/ngx_http_headers_module.html#expires
5) http://nginx.org/en/docs/http/ngx_http_core_module.html#worker_processes
6) http://nginx.org/en/docs/http/ngx_http_headers_module.html#expires
7) http://www.slideshare.net/sjjang61/nginx-testing-innaver-16742438
8) https://en.wikipedia.org/wiki/Web_server
9) https://news.netcraft.com/archives/category/web-server-survey/
11)https://namu.wiki/w/%EC%9B%B9%20%EC%84%9C%EB%B2%84?from=%EC%9B%B9%EC%84%9C%EB%B2%84
작성 폼 양식
번호) 제목
[root@mobileflow ~]# 명령어
실행결과