"아파치 웹서버"의 두 판 사이의 차이
(→주요 인물) |
잔글 |
||
(사용자 5명의 중간 판 13개는 보이지 않습니다) | |||
1번째 줄: | 1번째 줄: | ||
− | [[파일:아파치 웹서버 로고.png|썸네일|200픽셀|'''아파치 웹서버'''(Apache Web Server) | + | [[파일:아파치 웹서버 로고.png|썸네일|200픽셀|'''아파치 웹서버'''(Apache Web Server)]] |
− | [[파일:아파치 웹서버 글자.png|썸네일|300픽셀|'''아파치 웹서버'''(Apache Web Server) | + | [[파일:아파치 웹서버 글자.png|썸네일|300픽셀|'''아파치 웹서버'''(Apache Web Server)]] |
+ | [[파일:아파치 소프트웨어 재단 글자.png|썸네일|300픽셀|'''[[아파치 소프트웨어 재단]]'''(Apache Software Foundation, ASF)]] | ||
+ | [[파일:브라이언 벨렌도르프.jpg|썸네일|200픽셀|'''[[브라이언 벨렌도르프]]'''(Brian Behlendorf)]] | ||
'''아파치 웹서버'''(Apache Web Server)는 [[리눅스]] 기반의 무료 [[오픈소스]] [[웹서버]] 소프트웨어이다. [[아파치재단]]에서 관리하고 있다. [[아파치]](Apache)는 미국 인디언 부족인 [[아파치족]]을 존경하는 의미를 담아서 만든 말이다. 로고는 아파치족이 머리에 꽂는 깃털이다. 나중에 아파치(Apache)는 "A Patchy Web Server"의 약자라는 설명(backronym)이 뒤늦게 생겨났다. | '''아파치 웹서버'''(Apache Web Server)는 [[리눅스]] 기반의 무료 [[오픈소스]] [[웹서버]] 소프트웨어이다. [[아파치재단]]에서 관리하고 있다. [[아파치]](Apache)는 미국 인디언 부족인 [[아파치족]]을 존경하는 의미를 담아서 만든 말이다. 로고는 아파치족이 머리에 꽂는 깃털이다. 나중에 아파치(Apache)는 "A Patchy Web Server"의 약자라는 설명(backronym)이 뒤늦게 생겨났다. | ||
== 개요 == | == 개요 == | ||
− | 아파치 웹서버란, 고성능의 [[HTTP]] 서버이며, 정식 이름은 아파치 HTTP 서버(Apache HTTP Server) 지만 아파치 서버로 많이 알려져 있다. 프로그램의 이름은 | + | 아파치 웹서버란, 고성능의 [[HTTP]] 서버이며, 정식 이름은 아파치 HTTP 서버(Apache HTTP Server)지만 아파치 서버로 많이 알려져 있다. 프로그램의 이름은 HTTPd이며 HTTP [[데몬]](daemon)이라는 의미다. 안정성과 확장성, 호환성이 매우좋고, 개선된 패치파일을 꾸준하게 제공하고 있었기 때문에 [[웹 서버]]용 [[소프트웨어]]로 전 세계에서 가장 높은 점유율을 가지고 있었다. 세계에서 가장 많이 쓰는 웹 서버 중 하나이며, 오픈소스 소프트웨어 그룹인 아파치 소프트웨어 재단에서 만든 HTTP 웹 서버다. [[팀 버너스 리]](Timothy Berners-Lee)가 [[유닉스]] 기반으로 만든 최초의 웹 서버 프로그램인 [[NCSA HTTPd]]를 기반으로 만들어졌다. 아파치 웹 서버는 NCSA HTTPd를 리눅스에서도 돌리는 것을 목표로 만들어진 프로그램이다. 그래서 윈도우 서버보단 리눅스 서버에서 더 지원이 잘 되지만 [[C 언어]]로 작성해서 유닉스 계열뿐 아니라 마이크로소프트 윈도우나 노벨 넷웨어 같은 다양한 운영체제에 이식되어 설치해서 사용할 수 있다. 따라서 현재 나와있는 대부분의 개인용 또는 서버용 운영체제를 지원한다. 그 이후 리눅스와 함께 퍼져나갔고, 리눅스가 서버 OS의 최다 점유율을 차지하자 아파치도 자연스럽게 최다 점유율을 차지했으며 다양한 추가 기능에, 구축이 쉽다는 이유 때문에 많이 쓰고 있다. 현재 거의 모든 리눅스 배포판이 이 아파치를 지원한다. 하지만 아파치 자체만으로 엄청 무겁고, 스퀴드(Squid)와 함께 슬로리스(Slowloris) [[취약점]]이 발견되었기에, 보통 프로그래밍 능력이 능숙한 사람들이나, 대형 사이트 운영자는 [[엔진엑스]](Nginx), [[인터넷 정보 서비스]](IIS)를 주로 쓰고 있지만 대부분의 중소기업들은 무료이기 때문에 많이 쓰인다. |
− | + | 그렇다고 [[웹호스팅]]이나 소규모 웹사이트에만 사용하는 것은 아니다. 대규모 엔터프라이즈에서도 사용되며 오히려 거대 규모 웹서버 시장 점유율은 아파치가 더욱 막강하며 금융권을 비롯해서 안정성과 보안이 중요한 곳에서도 아파치를 사용한다. 상용 소프트웨어를 능가하는 오픈소스 소프트웨어의 좋은 예시 중 하나다. 1995년에 나왔는데도 2020년인 현재까지 최신 버전은 2.4.x다. 실제 운영중인 웹사이트 중에는 지금까지도 아파치 1.x 대에 머물러 있는 곳도 있다. 너무 기능 추가나 발전이 없는 거 아닌가 싶기도 하겠지만, 그만큼 안정화가 잘 되어 있는 서버라는 뜻일 수도 있다. 사실 아파치 서버 자체는 웹 서버로서 아주 기본적인 기능만 수행하는 것이고, [[PHP]]를 비롯해서 동적 웹 페이지를 만드는 기능이라든가 하는 대부분의 발전된 기능은 외부 모듈을 붙여서 구현한다. 오랜 역사와 높은 시장 점유율 덕분에 이러한 외부 모듈이 많고, 안정화도 잘 되어 있는 것이 아파치를 찾게 되는 주된 이유 중 하나다. 기본적으로 80포트로 연결되며, Apache_HOME/bin/httpd.bat 같은 배치파일을 실행하거나, 서비스로 등록하여 서비스로 실행시키면 된다. 정적인 페이지를 보여주는 역할을 수행하는 데 적합하다.<ref> 서버이야기, 〈[https://custum.tistory.com/7?category=676318 아파치(apache)와 톰캣란?]〉, 《티스토리》, 2017-01-16</ref><ref name="이름"> 아파치 HTTP 서버 나무위키 - https://namu.wiki/w/%EC%95%84%ED%8C%8C%EC%B9%98%20HTTP%20%EC%84%9C%EB%B2%84</ref><ref> 아파치 HTTP 서버 뉴위키 - https://www.newiki.net/wiki/%EC%95%84%ED%8C%8C%EC%B9%98_HTTP_%EC%84%9C%EB%B2%84</ref> | |
− | |||
− | |||
− | + | == 주요 인물 == | |
+ | * '''[[브라이언 벨렌도르프]]'''(Brian Behlendorf) : 아파치 웹서버를 개발했고, [[아파치재단]]의 회장을 지냈다. 블록체인 기반의 [[하이퍼레저]] 프로젝트의 최고책임자이다. 미국의 기술자, 경영자, 컴퓨터 프로그래머이며, 오픈소스 소프트웨어 운동의 주요 인물이다. 그는 온라인에서 가장 인기있는 웹서버 소프트웨어인 아파치 웹서버주요 개발자이자 아파치재단의 창립 멤버였으며, 3년간 재단 회장으로 재직했다. 남부 캘리포니아에서 자란 그는 인터넷 개발에 관심을 가지게 되었고, 그의 첫 번째 프로젝트 중 하나는 전자 메일링 리스트와 온라인 음악 리소스인 SFRaves였다. | ||
− | ; 1995년 | + | == 역사 == |
− | 1995년 | + | ; 1995년 2월 |
+ | 아파치의 기원은 NCSA HTTPd 라고 불리는 공공 HTTP 서버로 거슬러 올라갈 수 있다. 이것은 버너스리가 유럽 입자 물리 연구소(CERN)에서 만든 웹서버의 대안으로 일리노이 대학교의 국립 슈퍼컴퓨팅 응용 센터(NCSA)에서 개발했다. NCSA HTTPd는 1990년대 초반에 가장 인기 있는 웹 서버가 되었지만 1994년에 넷스케이프(Netscape)가 이 프로젝트를 이끌던 개발자인 롭 맥쿨을 빼가면서 추진력을 잃었다. 그러자 전 세계에 흩어져 있던 많은 웹사이트들의 관리자들은 각자의 필요에 맞게 NCSA HTTPd를 수정하기 시작했고 결국 서로 호환되지 않는 버전들이 양산되었다. 개발자들에 따르면 NCSA httpd 라이선스의 미래에 대한 불확실성도 우려사항이었다. 이 문제를 해결하기 위해 웹 관리자 몇 명이 모여 시작한 것이 아파치였다. 1995년 2월에 브라이언 벨렌도르프(Brian Behlendorf), 로이 필딩(Roy T.Fielding), 데이비드 로빈슨(David Robinson), 롭 하틸(Rob Hartill), 클리프 스콜닉(cliff skolnick), 랜디 텔부시(Randy Terbush), 로버트 타우(Robert S. Thau), 앤드류 윌슨(Andrew Wilson)의 8명의 개발자들이 이 협업을 시작했다. 이들은 NCSA HTTPd 코드에 기반한 새로운 웹서버를 개발했고 자신의 조직을 아파치 그룹(Apache Group)이라고 불렀다. 8명 중 한 사람이었던 로버트 타우는 프로젝트가 출범할 때 이렇게 언급했다. "우리의 목표는 NCSA HTTPd 서버 버전 1.3의 개선 버전을 만드는 것이다. 우리의 요구를 실제로 충족시키는 서버를 가지기 위해서 모든 인기 있는 수정사항들을 바로 포함할 것이다" 그렇게 하기 위해서 그들은 일련의 패치(patch)들을 적용했는데 여기서 아파치라는 이름이 생겨났다. 패치 서버(a patchy server)라는 문구에서 따온 것이다. | ||
− | 아파치 프로젝트는 공공 HTTP 서버의 개발에 관한 일부 우려에 답하기 위한 시도로 만들어졌다. 이 프로젝트의 목표는 안전하고, 효과적이며, 확장이 가능한 서버를 제공하는 것이다. 이 서버는 현재의 HTTP 표준에 따라 HTTP 서비스를 제공한다.<ref name="ㅇㅇ"> 기계인간 John Grib, 〈[https://johngrib.github.io/wiki/begining-of-apache-webserver/#1995%EB%85%84-3%EC%9B%94---%EB%A1%9C%EA%B3%A0%EC%99%80-%EA%B0%95%EB%A0%B9 아파치 웹 서버의 시작]〉, 《개인블로그》, 2020-02-05</ref> | + | ; 1995년 3월 |
+ | 1995년 3월 중순이 되자 로고와 강령을 만들었다. 강령을 통해서 그들은 개방형 표준에 기반한 웹용 사실상 표준 서버를 개발하겠다고 선언했다. 아파치 프로젝트는 공공 HTTP 서버의 개발에 관한 일부 우려에 답하기 위한 시도로 만들어졌다. 이 프로젝트의 목표는 안전하고, 효과적이며, 확장이 가능한 서버를 제공하는 것이다. 이 서버는 현재의 HTTP 표준에 따라 HTTP 서비스를 제공한다.<ref name="ㅇㅇ"> 기계인간 John Grib, 〈[https://johngrib.github.io/wiki/begining-of-apache-webserver/#1995%EB%85%84-3%EC%9B%94---%EB%A1%9C%EA%B3%A0%EC%99%80-%EA%B0%95%EB%A0%B9 아파치 웹 서버의 시작]〉, 《개인블로그》, 2020-02-05</ref> | ||
− | ; 1995년 4 ~ 8월 | + | ; 1995년 4 ~ 8월 |
− | 1995년 4월 아파치의 첫 번째 공개 배포(0.6.2 Version) 한다. 이쯤에 NCSA에서도 웹서버 개발을 진행하고 있었는데, NCSA의 서버개발팀의 브랜든 롱(Brandon Long)과 베스 프랭크(Beth Frank)는 명예 멤버처럼 메일 리스트에 합류하면서 두 프로젝트에 아이디어와 버그 등을 수정하게 된다. 첫 번째 공개 배포는 빅 히트였지만 전체적인 개선과 재디자인이 필요한 시점에서 1995년 5월 ~ 6월 동안 롭 하틸과 나머지 그룹 멤버들은 0.7.x에 새로운 기능을 구현(pre-fork 기능)과 작지만 성장하고 있는 아파치 사용자 커뮤니티를 지원하는 데 힘을 쓴다. 로버트 타우는 새로운 서버 아키텍처를 디자인했는데, 코드명 샴발라(Shambhala), 모듈화된 구조와 보다 많은 확장성을 위한 API 구조, | + | 1995년 4월 아파치의 첫 번째 공개 배포(0.6.2 Version) 한다. 이쯤에 NCSA에서도 웹서버 개발을 진행하고 있었는데, NCSA의 서버개발팀의 브랜든 롱(Brandon Long)과 베스 프랭크(Beth Frank)는 명예 멤버처럼 메일 리스트에 합류하면서 두 프로젝트에 아이디어와 버그 등을 수정하게 된다. 첫 번째 공개 배포는 빅 히트였지만 전체적인 개선과 재디자인이 필요한 시점에서 1995년 5월 ~ 6월 동안 롭 하틸과 나머지 그룹 멤버들은 0.7.x에 새로운 기능을 구현(pre-fork 기능)과 작지만 성장하고 있는 아파치 사용자 커뮤니티를 지원하는 데 힘을 쓴다. 로버트 타우는 새로운 서버 아키텍처를 디자인했는데, 코드명 샴발라(Shambhala), 모듈화된 구조와 보다 많은 확장성을 위한 API 구조, 풀 기반의 메모리 할당 그리고 Adaptive pre-forking 프로세스 모델이었다. 아파치 그룹은 0.7.x에 이 기능들을 넣고 서버 베이스를 바꾼다. 그리고 8월에 0.8.8을 배포한다.<ref name="ㄴㄴ""> 리치해커 SCOTT, 〈[https://m.blog.naver.com/PostView.nhn?blogId=kostry&logNo=220830572324&proxyReferer=https:%2F%2Fwww.google.com%2F apache]〉, 《네이버 블로그》, 2016-10-07</ref> |
− | ; 1995년 12월 | + | ; 1995년 12월 |
몇 달에 걸쳐서 개발팀은 서버의 설계를 뜯어고쳤고 새로운 기능들을 추가해서 12월에 아파치 1.0 버전을 발표했다. 프로젝트가 출범한 지 일 년도 되지 않은 1996년 초에 아파치는 세계에서 웹서버의 선두 주자가 되었다.<ref name="ㅇㅇ"></ref> | 몇 달에 걸쳐서 개발팀은 서버의 설계를 뜯어고쳤고 새로운 기능들을 추가해서 12월에 아파치 1.0 버전을 발표했다. 프로젝트가 출범한 지 일 년도 되지 않은 1996년 초에 아파치는 세계에서 웹서버의 선두 주자가 되었다.<ref name="ㅇㅇ"></ref> | ||
− | ; 1996년 6월 | + | ; 1996년 6월 ~ |
− | 아파치 HTTP 서버를 법적, 재정적으로 지원하기 위해 아파치 그룹 멤버들은 Apache Software | + | 아파치 HTTP 서버를 법적, 재정적으로 지원하기 위해 아파치 그룹 멤버들은 아파치소프트웨어재단(Apache Software Foundation)을 설립하게 된다.<ref name="ㄴㄴ""></ref> 2019년 6월 기준으로 [[엔진엑스]]가 9%차이로 점차 점유율을 높이는 중이다. 아파치(29.39%), [[엔진엑스]](20.55%), [[구글]](8.36%), [[마이크로소프트]](5.97%) 순의 점유율을 기록하고 있다.<ref>Web Server Survey, 〈[https://news.netcraft.com/archives/2019/06/17/june-2019-web-server-survey.html June 2019 Web Server Survey]〉, 《Netcraft》, 2019-06-17</ref> |
− | + | ===버전=== | |
− | 아파치 | + | ; 아파치 |
− | + | *1998년 06월 06일 : Ver.1.3 | |
− | + | *2010년 02월 03일 : Ver.1.3.42 | |
− | |||
− | * | + | ; 아파치2 |
+ | *2002년 02월 03일 : Ver.2.0 | ||
+ | *2005년 12월 01일 : Ver.2.2 | ||
+ | *2012년 02월 21일 : Ver.2.4 | ||
+ | *2013년 07월 10일 : Ver.2.0.65 | ||
+ | *2017년 07월 11일 : Ver.2.2.34 | ||
+ | *2018년 03월 17일 : Ver.2.4.33 | ||
+ | *2018년 07월 16일 : Ver.2.4.34 | ||
+ | *2019년 04월 01일 : Ver.2.4.39 | ||
== 특징 == | == 특징 == | ||
− | 아파치 웹서버는 무료 오픈소스이고, 확장성, 호환성, 이식성, 안정성이 높아서 [[ | + | 아파치 웹서버는 무료 오픈소스이고, 확장성, 호환성, 이식성, 안정성이 높아서 [[웹 서버]]에서 많이 사용하며, 모듈이라는 개념으로 수많은 기능을 덧붙일 수 있다. 이 모듈을 통해 다른 프로그램과의 연동도 가능하다. 이 때문에 여러 가지 서버 사이드 [[프로그래밍 언어]]나 [[데이터베이스 관리 시스템]]과도 궁합이 잘 맞았는데, 초창기에는 펄(Perl)이 대세였고, [[PHP]]가 그 뒤를 이었다. 바로 PHP 모듈을 통해 PHP를 실행할 수도 있지만, 주로 속도 향상을 위해 PHP-FPM을 통해 PHP를 연결해서 사용한다. 좀 더 고성능을 원하는 사람은 힙합 가상 머신(HHVM)을 쓴다. 그리고 오픈소스 데이터베이스 관리 시스템인 마이에스큐엘([[MySQL]])이 나오자, APM(Apache+PHP+MySQL)이라고 통칭하면서 웹 서버를 돌리기 위한 기본이 되었다. 물론 다른 언어와 다른 데이터베이스 관리 시스템도 지원하지만, 저 조합의 인지도가 가장 높다. 자바서버 페이지(JSP)의 경우에도 설정이 조금 귀찮아지지만 [[톰캣]]과 연동하여 돌릴 수 있다. 아파치는 요청 당 프로세스 또는 쓰레드가 처리하는 구조이며, 요청이 많아지면 CPU와 메모리 사용량이 높아져 성능이 저하될수있다. 이 문제들은 킵얼라이브(Keep Alive)를 활성화함으로 해결할 수 있지만 대량 접속시에 효율이 급격히 떨어지는 문제점이 발생한다. 라이선스는 [[GPL]]이 아닌 자체 라이선스를 쓴다. [[아차피 라이선스]] 2.0을 따르는데, 아파치 소프트웨어 재단에서 만들었다는 사실을 밝히고 아파치 라이선스를 따르면 자유롭게 수정 및 재배포가 가능하다. 소스 공개 강제 사항도 없는 자유로운 라이선스다. |
− | + | 그러나 2.2 버전대에서 너무 무겁다는 평이 많아졌고, 빠른 속도를 내세운 엔진엑스라는 웹 서버 프로그램이 새로 나오면서 아파치의 위기가 왔다. 아파치는 Event MPM을 탑재하여 속도를 크게 개선한 2.4버전을 내놓으면서 대응하고 있다. 문제점들을 개선하기위해 아파치2.4부터 Event MPM을 적용했다고 해도, Event Driven을 사용하여 리소스 사용량이 적은 엔진엑스보다 떨어지는 성능과, 대량접속에도 적은 리소스를 사용하며 빠르게 서비스를 요구하는 웹사이트가 늘어남으로 인해서 아파치는 하락세를 타고있으며, 경량화 [[서버]]인 엔진엑스이 시장 점유율을 점차 늘려가고 있다. [[엔진엑스]]가 성능상의 장점을 가지고 있다고 하지만, 아파치 웹서버는 여전히 높은 서버 시장점유율과 안정성, 호환성, 확장성을 가지고 있다. 아파치 웹서버가 현재 최우선 과제로 삼고있는 성능 개발 목표를 달성하고, 지속적으로 버전 [[패치]]를 해준다면 다시 시장 점유율을 늘려갈 수 있을 것으로 기대하고 있다. | |
− | 아파치는 | ||
− | + | 아파치 웹서버는 기능이 매우 많지만 그 기능을 다 활용하는 사람이 드문 그런 프로그램이다. 확장 모듈이 매우 다양하여 간단하게 설치하고 사용 가능하지만 대부분의 사람은 이 프로그램과 PHP, 마이에스큐엘만 설치하고 돌린다. 그리고 그 기능들은 엔진엑스에도 그대로 존재하고, 더 빠르다. 호환성을 확인하고 옮길 수 있으며 옮기는 게 좋다. 윈도우용도 나온다. 윈도우에도 크로스 플랫폼 웹 서버 자유 소프트웨어 꾸러미(XAMPP)나 에이피엠셋업(APMSetup) 등의 APM을 편리하게 통합해 설치할 수 있는 패키지가 나와 있다. 아파치 웹 서버, PHP, 마이에스큐엘 전부 윈도우용이 나오기 때문에 가능한 것이다. 그러나 리눅스·유닉스 베이스로 만들어진 프로그램이다 보니 윈도우에서는 제 속도가 나오지 않는다. 윈도우 버전은 서버 입문자의 디버깅 환경 구축용 혹은 PHP+마이에스큐엘 연습용 정도라고 보면 된다. 거기다 윈도우 서버에는 마이크로소프트가 자체적으로 만든 인터넷 정보 서비스가 있기 때문에, 인터넷 정보 서비스에 FastCGI 모듈로 PHP를 연결해서 돌리는 것이 보통이다. 이 때문에 PHP의 윈도우 버전은 인터넷 정보 서비스용과 아파치용(엑스엔진용)이 따로 나온다.<ref name="이름"></ref><ref>아파치 공식 홈페이지 - [http://httpd.apache.org/docs/trunk/new_features_2_4.html Overview of new features in Apache HTTP Server 2.4]</ref> | |
− | 아파치 웹서버는 | ||
− | === | + | ====구조==== |
− | + | 아파치는 MPM(Multi Processing Module) 구조를 기반으로 클라이언트 요청 처리 방법을 처리하는 기술 기반을 하고 있다. MPM은 mpm_prefork, mpm_worker, mpm_event 이 3가지 구조를 근간으로 하고 있다. mpm_prefork는 단일 스레드 로직에서 동작하며 각 서버 프로세스는 한 번에 하나의 웹 요청(Web Request)을 처리한다. 이러한 방식은 PHP 환경에서 권장되는 방식이다. LAMP 아키턱쳐에서 PHP가 등장하는 이유도 이러한 데서 비롯된다. mpm_worker는 동시에 여러 스레드를 지원한다. 이것은 아파치가 좀 더 효율적이고 확장 가능하도록 돕는다. mpm_event는 mpm_worker와 유사한 방식으로 동작하지만 최근 등장한 웹 관련 애플리케이션을 위한 킵얼라이브 메커니즘이 포함되어 있다. 이러한 방식은 커넥션마다 새로운 스레드가 필요하다는 관점에서 커넥션이 대규모로 많아질 때 성능 측면에서 많은 이슈가 발생할 수 있다.<ref name="이거"> 청년정신, 〈[https://youngmind.tistory.com/entry/Apache-vs-Nginx Apache-vs-Nginx]〉, 《티스토리》, 2019-03-27</ref> | |
− | === | + | ====필요성==== |
− | = | + | 아파치 웹서버는 HTTP 서버를 통해 무거운 사용자 환경의 이미지, JS, CSS, HTML 파일 같은 정적 콘텐츠를 효율적으로 제공하는데 톰캣도 정적 콘텐츠를 제공할 수는 있지만 아파치 웹서버에 비해 반응 속도가 느리며 톰캣과 비교해 10% 정도 더 효율적으로 정적 콘텐츠를 처리하므로 사용자 부하가 높은 상황에서는 아파치를 통합하는 것이 좋다. 아파치 웹서버의 가장 훌륭한 기능 중 하나인 다중 웹사이트 호스팅 기능은 톰캣 7에서 처음으로 제공되는 기능이다. httpd.conf를 이용해 32개가 넘는 가상 호스트를 설정할 수 있다. 32개 이상의 가상 호스트를 설정하려면 virtual.conf 파일을 별도로 만든 다음 httpd.conf에서 virtual.conf를 포함하도록 설정해야 한다. 아파치는 클러스터링을 제공해서 톰캣에 다중 인스턴스 연결을 안정적으로 제공하는 가장 효율적인 서버다. 이 기능의 가장 큰 장점은 인스턴스가 다운됐을 때에도 애플리케이션이 온라인 상태를 유지할 수 있다는 것이다. 또한 배포 중에 다른 인스턴스를 온라인 상태로 제공해 사용자 요청을 처리함과 동시에 인스턴스에 코드를 배포할 수 있다. 즉, [[장애 (정보통신)|장애]] 없이 365일 애플리케이션을 수행할 수 있다. 그뿐 아니라, 유연한 모듈 참조를 지원해서 애플리케이션의 요구 사항에 맞게 모든 모듈을 컴파일, 재컴파일 할 수 있다. 애플리케이션의 [[확장성]], 그리고 서드 파티 도구와 통합할 때 유용한 기능이다. 아파치와 톰캣은 사용자와 호스트 기반 보안을 제공하며, 애플리케이션의 요구사항을 고려해 둘 중 누구의 보안을 활성화할 것인지를 결정해야한다. 보안 소켓 계층(SSL), 프록시, 접근제어목록, 디렉토리 접근 제한 등의 보안 기능과 하나의 서버에 여러 도메인 운영, 서버호스팅 등 가상 호스트 기능을 하고 리소스 분산처리, Cache(Expires), HTTP 표준 설정, MPM(Multi-Processing Module), 킵얼라이브(KeepAlive) 등의 성능적인 측면에서 우수하다.<ref> beom3, 〈[https://beom3.tistory.com/12 Apache HTTP서버의 장점]〉, 《네이버 블로그》, 2016-09-19</ref><ref name="ㄴㄴ""></ref> |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
===비교=== | ===비교=== | ||
====엔진엑스==== | ====엔진엑스==== | ||
− | 아파치는 요청 당 쓰레드 또는 프로세스가 처리하는 구조다. 전통적인 파일 기반 방식의 정적 | + | 아파치는 요청 당 쓰레드 또는 프로세스가 처리하는 구조다. 전통적인 파일 기반 방식의 정적 콘텐츠를 처리하고 서버 내에서 동적 콘텐츠를 처리한다. 역사가 있는 만큼 리눅스, BSD, 유닉스, 윈도우에서 지원 가능하다는 큰 장점이 있다. 특히 윈도우까지 지원이 가능해 일관성 있는 웹 서비스 아키턱쳐를 구현할 수 있다. 분산/중앙집중식 구성을 채택했으며 .htaccess를 통해 디럭토리 별로 추가 구성을 할 수 있다. 단일 기반뿐만 아니라 분산형 구축이 가능하므로 대용량 서버 구조에서 자원만 충분하다면 여러 웹 서비스를 구현할 수 있다. 60개 이상의 다양한 기능과 모듈을 지원하며, 필요에 따라 활성화 또는 비활성화 시킬 수 있다. 동적 모듈을 통해 웹 서버의 사용자지정도 가능하게 할 수 있는 등 다양한 디자인과 확장이 가능하다. 또한 보안을 위해 다양한 웹 기반 [[디도스]](DDoS) 방어에 대한 기술을 제공한다. |
− | 엔진엑스는 비동기 이벤트 기반으로 요청을 처리하는 구조다. 이벤트 처리, 비동기식, 논블로킹 방식 처리로 인해 정적 | + | |
+ | 엔진엑스는 비동기 이벤트 기반으로 요청을 처리하는 구조다. 이벤트 처리, 비동기식, 논블로킹 방식 처리로 인해 정적 콘텐츠 제공 시 고속 처리가 가능하지만 동적 웹 페이지 콘텐츠를 가진 모든 요청을 위해 외부 자원과 연계(PHP-fpm) 한다. 따라서 최종적으로 동적 콘텐츠가 다시 돌아올 때까지 기다렸다가 클라이언트에게 전달하는 방식을 가지고 있어 동적 콘텐츠를 처리하지 않는다. 리눅스, BSD, 유닉스처럼 다양한 운영 체계를 지원하지만, 윈도우는 아파치만큼 완벽히 지원하지 않는다. 중앙집중식 구성을 채택했으며 아파치처럼 .htaccess를 지원하지 않는다. 따라서 추가 구성을 할 수 없는 단점이 있다. 하지만 이러한 방식은 가상화, 클라우드, MSA와 같은 구조에서 오히려 경량화와 성능 보장이라는 측면에서 단점이 되지 않을 수도 있다. 다른 코어 모듈을 동적으로 로딩할 수 없도록 되어 있다. 옵션을 최소화해서 태생부터 성능에 포커싱 했다. 엔진엑스에서도 보안에 대한 다양한 기술 문서를 제공하며, 코드 자체가 가볍고 경량화되어 있어서 보안에 유리한 측면도 있다. | ||
+ | |||
최근 대용량의 정적 파일 및 큰 규모의 사이트가 많아짐에 따라 대량 접속에도 적은 리소스를 사용하며 빠르게 서비스를 할 수 있는 웹 사이트가 대세가 되었는데, 이런 면에서 엔진엑스가 각광받기 시작했다. 성능 면에서 아파치 2.2는 엔진엑스에 뒤처졌기 때문에 엔진엑스가 성장하게 된다. 그러다가 2012년에 빠른 응답 속도와 적은 리소스 사용 부분을 개선한 아파치 2.4를 발표하면서, 엔진엑스에 대응하기 시작한다. 그러나 아직 엔진엑스가 성능 면에서 미세하게 아파치 2.4보다 좋다. 하지만 PHP 모듈 등을 직접 적재할 수 있는 아파치가 구조상 이점이 있기에 복잡한 웹 사이트의 경우나 세션 클러스터링 같은 특별한 목적을 추가적으로 수행하는 세팅을 할 경우에는 별도의 과정을 거쳐야 하기 때문에, 이러한 별도의 작업이 많이 필요한 서비스의 경우에도 유지 보수 측면에서 아파치가 유용하다. 즉 안정성과 확장성, 호환성에서 아파치가 우세, 성능 면에서는 엔진엑스가 우세하다.<ref> victolee, 〈[https://victorydntmd.tistory.com/231 [Web Server] 아파치 2.4와 Nginx 특징 및 비교]〉, 《티스토리》, 2018-06-04</ref><ref name="이거"></ref> | 최근 대용량의 정적 파일 및 큰 규모의 사이트가 많아짐에 따라 대량 접속에도 적은 리소스를 사용하며 빠르게 서비스를 할 수 있는 웹 사이트가 대세가 되었는데, 이런 면에서 엔진엑스가 각광받기 시작했다. 성능 면에서 아파치 2.2는 엔진엑스에 뒤처졌기 때문에 엔진엑스가 성장하게 된다. 그러다가 2012년에 빠른 응답 속도와 적은 리소스 사용 부분을 개선한 아파치 2.4를 발표하면서, 엔진엑스에 대응하기 시작한다. 그러나 아직 엔진엑스가 성능 면에서 미세하게 아파치 2.4보다 좋다. 하지만 PHP 모듈 등을 직접 적재할 수 있는 아파치가 구조상 이점이 있기에 복잡한 웹 사이트의 경우나 세션 클러스터링 같은 특별한 목적을 추가적으로 수행하는 세팅을 할 경우에는 별도의 과정을 거쳐야 하기 때문에, 이러한 별도의 작업이 많이 필요한 서비스의 경우에도 유지 보수 측면에서 아파치가 유용하다. 즉 안정성과 확장성, 호환성에서 아파치가 우세, 성능 면에서는 엔진엑스가 우세하다.<ref> victolee, 〈[https://victorydntmd.tistory.com/231 [Web Server] 아파치 2.4와 Nginx 특징 및 비교]〉, 《티스토리》, 2018-06-04</ref><ref name="이거"></ref> | ||
====IIS==== | ====IIS==== | ||
− | [[IIS]](Internet Information Services)는 마이크로소프트 윈도우를 사용하는 서버들을 위한 인터넷 기반 서비스들의 모임이다. 아파치 웹서버 다음으로 두 번째로 잘 알려진 웹서버로 [[FTP]], [[SMTP]], [[NNTP]], [[HTTP]] | + | [[IIS]](Internet Information Services)는 마이크로소프트 윈도우를 사용하는 서버들을 위한 인터넷 기반 서비스들의 모임이다. 아파치 웹서버 다음으로 두 번째로 잘 알려진 웹서버로 [[FTP]], [[SMTP]], [[NNTP]], [[HTTP]] 및 [[HTTPS]] 서버를 포함하고 있다. 무료 오픈소스며 모든 운영체제에서 쉽고 빠르게 설치 가능하고 콘솔 작업을 해서 초보자가 작업하기 힘든 아파치 서버와 다르게 IIS 서버는 마이크로소프트의 제품이므로 마이크로소프트 윈도우 OS에서만 실행되고 유료지만 그래픽 사용자 인터페이스(GUI)라서 사용하기 쉽다. PHP를 사용할 수도 있지만 보통 ASP와 같이 사용하는데 IIS 웹서버에서 ASP 파일을 이용하다가 아파치 서버에서 이용하려면 ASP 파일을 PHP로 변경하여 사용한다.<ref> imm7745, 〈[https://m.blog.naver.com/imm7745/221848415062 IIS와 아파치의 비교]〉, 《네이버 블로그》, 2020-03-11</ref> |
− | == | + | ====톰캣==== |
− | + | 톰캣(Tomcat)은 일반적으로 웹 애플리케이션 서버(WAS; Web Application Server)라고 불린다. 아파치는 80포트로 연결된다. 사용 처리 속도가 빠르고 구조가 단순하여 비용 절감에 좋으며 트래픽 과부하에 강하다는 장점이 있지만 정적인 데이터만 처리가 가능하고 다른 서비스와 상호작용 불가능하다는 단점이 있다. 반면, 톰캣은 8080포트로 연결된다. 데이터 흐름이 유동적이고 데이터베이스(DB) 등 여러 서비스가 가능하다는 장점이 있지만 아파치에 비해 속도가 느리고 부가적인 비용이 발생하며 트래픽 과부하게 약하다는 단점이 있다. 아파치톰캣이란, 아파치의 기능 일부를 가져와서 제공해 주는 형태이기 때문에 톰캣과 아파치를 합쳐서 부른다. 아파치만 사용하면 정적인 웹페이지만 처리하므로 처리 속도가 매우 빠르고 안정적이다. 하지만 톰캣을 사용하면 동적인 웹페이지 처리가 가능하며 데이터베이스 연결, 데이터 조작, 다른 응용프로그램과 상호 작용이 가능하다. 톰캣만 사용하면 아파치에서 필요한 기능을 못 가져온다. 또한 여러 사용자가 요청할 시에 톰캣에 과부하가 걸린다. 그래서 아파치와 톰캣을 같이 쓰면 아파치는 정적인 데이터만 처리하고, 자바 서버 페이지 처리는 톰캣의 일부인 웹 컨테이너(Web Container)로 보내주어 분산처리할 수 있다.<ref> HR, 〈[https://m.blog.naver.com/PostView.nhn?blogId=youhr21&logNo=221542836167&proxyReferer=https:%2F%2Fwww.google.com%2F 아파치, 톰캣, 아파치톰캣의 차이]〉, 《네이버 블로그》, 2019-05-21</ref> | |
{{각주}} | {{각주}} | ||
== 참고자료 == | == 참고자료 == | ||
− | * 아파치 공식 홈페이지 - | + | * 아파치 공식 홈페이지 - http://httpd.apache.org/docs/trunk/new_features_2_4.html Overview of new features in Apache HTTP Server 2.4 |
− | * 아파치 HTTP 서버 나무위키 - | + | * 아파치 HTTP 서버 나무위키 - https://namu.wiki/w/%EC%95%84%ED%8C%8C%EC%B9%98%20HTTP%20%EC%84%9C%EB%B2%84 |
− | * 아파치 HTTP 서버 | + | * 아파치 HTTP 서버 뉴위키 - [https://www.newiki.net/wiki/%EC%95%84%ED%8C%8C%EC%B9%98_HTTP_%EC%84%9C%EB%B2%84 |
* beom3, 〈[https://beom3.tistory.com/12 Apache HTTP서버의 장점]〉, 《네이버 블로그》, 2016-09-19 | * beom3, 〈[https://beom3.tistory.com/12 Apache HTTP서버의 장점]〉, 《네이버 블로그》, 2016-09-19 | ||
* 리치해커 SCOTT, 〈[https://m.blog.naver.com/PostView.nhn?blogId=kostry&logNo=220830572324&proxyReferer=https:%2F%2Fwww.google.com%2F apache]〉, 《네이버 블로그》, 2016-10-07 | * 리치해커 SCOTT, 〈[https://m.blog.naver.com/PostView.nhn?blogId=kostry&logNo=220830572324&proxyReferer=https:%2F%2Fwww.google.com%2F apache]〉, 《네이버 블로그》, 2016-10-07 | ||
84번째 줄: | 83번째 줄: | ||
* victolee, 〈[https://victorydntmd.tistory.com/231 [Web Server] 아파치 2.4와 Nginx 특징 및 비교]〉, 《티스토리》, 2018-06-04 | * victolee, 〈[https://victorydntmd.tistory.com/231 [Web Server] 아파치 2.4와 Nginx 특징 및 비교]〉, 《티스토리》, 2018-06-04 | ||
* 청년정신, 〈[https://youngmind.tistory.com/entry/Apache-vs-Nginx Apache-vs-Nginx]〉, 《티스토리》, 2019-03-27 | * 청년정신, 〈[https://youngmind.tistory.com/entry/Apache-vs-Nginx Apache-vs-Nginx]〉, 《티스토리》, 2019-03-27 | ||
+ | * HR, 〈[https://m.blog.naver.com/PostView.nhn?blogId=youhr21&logNo=221542836167&proxyReferer=https:%2F%2Fwww.google.com%2F 아파치, 톰캣, 아파치톰캣의 차이]〉, 《네이버 블로그》, 2019-05-21 | ||
* Web Server Survey, 〈[https://news.netcraft.com/archives/2019/06/17/june-2019-web-server-survey.html June 2019 Web Server Survey]〉, 《Netcraft》, 2019-06-17 | * Web Server Survey, 〈[https://news.netcraft.com/archives/2019/06/17/june-2019-web-server-survey.html June 2019 Web Server Survey]〉, 《Netcraft》, 2019-06-17 | ||
* 기계인간 John Grib, 〈[https://johngrib.github.io/wiki/begining-of-apache-webserver/#1995%EB%85%84-3%EC%9B%94---%EB%A1%9C%EA%B3%A0%EC%99%80-%EA%B0%95%EB%A0%B9 아파치 웹 서버의 시작]〉, 《개인블로그》, 2020-02-05 | * 기계인간 John Grib, 〈[https://johngrib.github.io/wiki/begining-of-apache-webserver/#1995%EB%85%84-3%EC%9B%94---%EB%A1%9C%EA%B3%A0%EC%99%80-%EA%B0%95%EB%A0%B9 아파치 웹 서버의 시작]〉, 《개인블로그》, 2020-02-05 | ||
* imm7745, 〈[https://m.blog.naver.com/imm7745/221848415062 IIS와 아파치의 비교]〉, 《네이버 블로그》, 2020-03-11 | * imm7745, 〈[https://m.blog.naver.com/imm7745/221848415062 IIS와 아파치의 비교]〉, 《네이버 블로그》, 2020-03-11 | ||
+ | * solinsystem, 〈[https://blog.naver.com/solinsystem/221498705910 Apache 설치/아파치 설치방법]〉, 《네이버 블로그》, 2022-07-20 | ||
+ | * solinsystem, 〈[https://blog.naver.com/solinsystem/221498763660 Apache 설치/아파치 설치 후 환경설정 - 실행하기]〉, 《네이버 블로그》, 2022-07-20 | ||
+ | * solinsystem, 〈[https://blog.naver.com/solinsystem/222578275994 Apache 윈도우 서비스 등록]〉, 《네이버 블로그》, 2022-07-20 | ||
+ | * solinsystem, 〈[https://blog.naver.com/solinsystem/221621029193 Apache httpd.conf 설정 요소]〉, 《네이버 블로그》, 2022-07-20 | ||
+ | * solinsystem, 〈[https://blog.naver.com/solinsystem/222578275994 [Apache+PHP+DB] APMSETUP, XAMPP 설치방법]〉, 《네이버 블로그》, 2022-07-20 | ||
== 같이 보기 == | == 같이 보기 == | ||
92번째 줄: | 97번째 줄: | ||
* [[엔진엑스]] | * [[엔진엑스]] | ||
* [[웹서버]] | * [[웹서버]] | ||
+ | * [[IIS]] | ||
+ | * [[톰캣]] | ||
+ | * [[엔진엑스]] | ||
{{웹서버|검토 필요}} | {{웹서버|검토 필요}} |
2022년 12월 19일 (월) 17:38 기준 최신판
아파치 웹서버(Apache Web Server)는 리눅스 기반의 무료 오픈소스 웹서버 소프트웨어이다. 아파치재단에서 관리하고 있다. 아파치(Apache)는 미국 인디언 부족인 아파치족을 존경하는 의미를 담아서 만든 말이다. 로고는 아파치족이 머리에 꽂는 깃털이다. 나중에 아파치(Apache)는 "A Patchy Web Server"의 약자라는 설명(backronym)이 뒤늦게 생겨났다.
목차
개요[편집]
아파치 웹서버란, 고성능의 HTTP 서버이며, 정식 이름은 아파치 HTTP 서버(Apache HTTP Server)지만 아파치 서버로 많이 알려져 있다. 프로그램의 이름은 HTTPd이며 HTTP 데몬(daemon)이라는 의미다. 안정성과 확장성, 호환성이 매우좋고, 개선된 패치파일을 꾸준하게 제공하고 있었기 때문에 웹 서버용 소프트웨어로 전 세계에서 가장 높은 점유율을 가지고 있었다. 세계에서 가장 많이 쓰는 웹 서버 중 하나이며, 오픈소스 소프트웨어 그룹인 아파치 소프트웨어 재단에서 만든 HTTP 웹 서버다. 팀 버너스 리(Timothy Berners-Lee)가 유닉스 기반으로 만든 최초의 웹 서버 프로그램인 NCSA HTTPd를 기반으로 만들어졌다. 아파치 웹 서버는 NCSA HTTPd를 리눅스에서도 돌리는 것을 목표로 만들어진 프로그램이다. 그래서 윈도우 서버보단 리눅스 서버에서 더 지원이 잘 되지만 C 언어로 작성해서 유닉스 계열뿐 아니라 마이크로소프트 윈도우나 노벨 넷웨어 같은 다양한 운영체제에 이식되어 설치해서 사용할 수 있다. 따라서 현재 나와있는 대부분의 개인용 또는 서버용 운영체제를 지원한다. 그 이후 리눅스와 함께 퍼져나갔고, 리눅스가 서버 OS의 최다 점유율을 차지하자 아파치도 자연스럽게 최다 점유율을 차지했으며 다양한 추가 기능에, 구축이 쉽다는 이유 때문에 많이 쓰고 있다. 현재 거의 모든 리눅스 배포판이 이 아파치를 지원한다. 하지만 아파치 자체만으로 엄청 무겁고, 스퀴드(Squid)와 함께 슬로리스(Slowloris) 취약점이 발견되었기에, 보통 프로그래밍 능력이 능숙한 사람들이나, 대형 사이트 운영자는 엔진엑스(Nginx), 인터넷 정보 서비스(IIS)를 주로 쓰고 있지만 대부분의 중소기업들은 무료이기 때문에 많이 쓰인다.
그렇다고 웹호스팅이나 소규모 웹사이트에만 사용하는 것은 아니다. 대규모 엔터프라이즈에서도 사용되며 오히려 거대 규모 웹서버 시장 점유율은 아파치가 더욱 막강하며 금융권을 비롯해서 안정성과 보안이 중요한 곳에서도 아파치를 사용한다. 상용 소프트웨어를 능가하는 오픈소스 소프트웨어의 좋은 예시 중 하나다. 1995년에 나왔는데도 2020년인 현재까지 최신 버전은 2.4.x다. 실제 운영중인 웹사이트 중에는 지금까지도 아파치 1.x 대에 머물러 있는 곳도 있다. 너무 기능 추가나 발전이 없는 거 아닌가 싶기도 하겠지만, 그만큼 안정화가 잘 되어 있는 서버라는 뜻일 수도 있다. 사실 아파치 서버 자체는 웹 서버로서 아주 기본적인 기능만 수행하는 것이고, PHP를 비롯해서 동적 웹 페이지를 만드는 기능이라든가 하는 대부분의 발전된 기능은 외부 모듈을 붙여서 구현한다. 오랜 역사와 높은 시장 점유율 덕분에 이러한 외부 모듈이 많고, 안정화도 잘 되어 있는 것이 아파치를 찾게 되는 주된 이유 중 하나다. 기본적으로 80포트로 연결되며, Apache_HOME/bin/httpd.bat 같은 배치파일을 실행하거나, 서비스로 등록하여 서비스로 실행시키면 된다. 정적인 페이지를 보여주는 역할을 수행하는 데 적합하다.[1][2][3]
주요 인물[편집]
- 브라이언 벨렌도르프(Brian Behlendorf) : 아파치 웹서버를 개발했고, 아파치재단의 회장을 지냈다. 블록체인 기반의 하이퍼레저 프로젝트의 최고책임자이다. 미국의 기술자, 경영자, 컴퓨터 프로그래머이며, 오픈소스 소프트웨어 운동의 주요 인물이다. 그는 온라인에서 가장 인기있는 웹서버 소프트웨어인 아파치 웹서버주요 개발자이자 아파치재단의 창립 멤버였으며, 3년간 재단 회장으로 재직했다. 남부 캘리포니아에서 자란 그는 인터넷 개발에 관심을 가지게 되었고, 그의 첫 번째 프로젝트 중 하나는 전자 메일링 리스트와 온라인 음악 리소스인 SFRaves였다.
역사[편집]
- 1995년 2월
아파치의 기원은 NCSA HTTPd 라고 불리는 공공 HTTP 서버로 거슬러 올라갈 수 있다. 이것은 버너스리가 유럽 입자 물리 연구소(CERN)에서 만든 웹서버의 대안으로 일리노이 대학교의 국립 슈퍼컴퓨팅 응용 센터(NCSA)에서 개발했다. NCSA HTTPd는 1990년대 초반에 가장 인기 있는 웹 서버가 되었지만 1994년에 넷스케이프(Netscape)가 이 프로젝트를 이끌던 개발자인 롭 맥쿨을 빼가면서 추진력을 잃었다. 그러자 전 세계에 흩어져 있던 많은 웹사이트들의 관리자들은 각자의 필요에 맞게 NCSA HTTPd를 수정하기 시작했고 결국 서로 호환되지 않는 버전들이 양산되었다. 개발자들에 따르면 NCSA httpd 라이선스의 미래에 대한 불확실성도 우려사항이었다. 이 문제를 해결하기 위해 웹 관리자 몇 명이 모여 시작한 것이 아파치였다. 1995년 2월에 브라이언 벨렌도르프(Brian Behlendorf), 로이 필딩(Roy T.Fielding), 데이비드 로빈슨(David Robinson), 롭 하틸(Rob Hartill), 클리프 스콜닉(cliff skolnick), 랜디 텔부시(Randy Terbush), 로버트 타우(Robert S. Thau), 앤드류 윌슨(Andrew Wilson)의 8명의 개발자들이 이 협업을 시작했다. 이들은 NCSA HTTPd 코드에 기반한 새로운 웹서버를 개발했고 자신의 조직을 아파치 그룹(Apache Group)이라고 불렀다. 8명 중 한 사람이었던 로버트 타우는 프로젝트가 출범할 때 이렇게 언급했다. "우리의 목표는 NCSA HTTPd 서버 버전 1.3의 개선 버전을 만드는 것이다. 우리의 요구를 실제로 충족시키는 서버를 가지기 위해서 모든 인기 있는 수정사항들을 바로 포함할 것이다" 그렇게 하기 위해서 그들은 일련의 패치(patch)들을 적용했는데 여기서 아파치라는 이름이 생겨났다. 패치 서버(a patchy server)라는 문구에서 따온 것이다.
- 1995년 3월
1995년 3월 중순이 되자 로고와 강령을 만들었다. 강령을 통해서 그들은 개방형 표준에 기반한 웹용 사실상 표준 서버를 개발하겠다고 선언했다. 아파치 프로젝트는 공공 HTTP 서버의 개발에 관한 일부 우려에 답하기 위한 시도로 만들어졌다. 이 프로젝트의 목표는 안전하고, 효과적이며, 확장이 가능한 서버를 제공하는 것이다. 이 서버는 현재의 HTTP 표준에 따라 HTTP 서비스를 제공한다.[4]
- 1995년 4 ~ 8월
1995년 4월 아파치의 첫 번째 공개 배포(0.6.2 Version) 한다. 이쯤에 NCSA에서도 웹서버 개발을 진행하고 있었는데, NCSA의 서버개발팀의 브랜든 롱(Brandon Long)과 베스 프랭크(Beth Frank)는 명예 멤버처럼 메일 리스트에 합류하면서 두 프로젝트에 아이디어와 버그 등을 수정하게 된다. 첫 번째 공개 배포는 빅 히트였지만 전체적인 개선과 재디자인이 필요한 시점에서 1995년 5월 ~ 6월 동안 롭 하틸과 나머지 그룹 멤버들은 0.7.x에 새로운 기능을 구현(pre-fork 기능)과 작지만 성장하고 있는 아파치 사용자 커뮤니티를 지원하는 데 힘을 쓴다. 로버트 타우는 새로운 서버 아키텍처를 디자인했는데, 코드명 샴발라(Shambhala), 모듈화된 구조와 보다 많은 확장성을 위한 API 구조, 풀 기반의 메모리 할당 그리고 Adaptive pre-forking 프로세스 모델이었다. 아파치 그룹은 0.7.x에 이 기능들을 넣고 서버 베이스를 바꾼다. 그리고 8월에 0.8.8을 배포한다.[5]
- 1995년 12월
몇 달에 걸쳐서 개발팀은 서버의 설계를 뜯어고쳤고 새로운 기능들을 추가해서 12월에 아파치 1.0 버전을 발표했다. 프로젝트가 출범한 지 일 년도 되지 않은 1996년 초에 아파치는 세계에서 웹서버의 선두 주자가 되었다.[4]
- 1996년 6월 ~
아파치 HTTP 서버를 법적, 재정적으로 지원하기 위해 아파치 그룹 멤버들은 아파치소프트웨어재단(Apache Software Foundation)을 설립하게 된다.[5] 2019년 6월 기준으로 엔진엑스가 9%차이로 점차 점유율을 높이는 중이다. 아파치(29.39%), 엔진엑스(20.55%), 구글(8.36%), 마이크로소프트(5.97%) 순의 점유율을 기록하고 있다.[6]
버전[편집]
- 아파치
- 1998년 06월 06일 : Ver.1.3
- 2010년 02월 03일 : Ver.1.3.42
- 아파치2
- 2002년 02월 03일 : Ver.2.0
- 2005년 12월 01일 : Ver.2.2
- 2012년 02월 21일 : Ver.2.4
- 2013년 07월 10일 : Ver.2.0.65
- 2017년 07월 11일 : Ver.2.2.34
- 2018년 03월 17일 : Ver.2.4.33
- 2018년 07월 16일 : Ver.2.4.34
- 2019년 04월 01일 : Ver.2.4.39
특징[편집]
아파치 웹서버는 무료 오픈소스이고, 확장성, 호환성, 이식성, 안정성이 높아서 웹 서버에서 많이 사용하며, 모듈이라는 개념으로 수많은 기능을 덧붙일 수 있다. 이 모듈을 통해 다른 프로그램과의 연동도 가능하다. 이 때문에 여러 가지 서버 사이드 프로그래밍 언어나 데이터베이스 관리 시스템과도 궁합이 잘 맞았는데, 초창기에는 펄(Perl)이 대세였고, PHP가 그 뒤를 이었다. 바로 PHP 모듈을 통해 PHP를 실행할 수도 있지만, 주로 속도 향상을 위해 PHP-FPM을 통해 PHP를 연결해서 사용한다. 좀 더 고성능을 원하는 사람은 힙합 가상 머신(HHVM)을 쓴다. 그리고 오픈소스 데이터베이스 관리 시스템인 마이에스큐엘(MySQL)이 나오자, APM(Apache+PHP+MySQL)이라고 통칭하면서 웹 서버를 돌리기 위한 기본이 되었다. 물론 다른 언어와 다른 데이터베이스 관리 시스템도 지원하지만, 저 조합의 인지도가 가장 높다. 자바서버 페이지(JSP)의 경우에도 설정이 조금 귀찮아지지만 톰캣과 연동하여 돌릴 수 있다. 아파치는 요청 당 프로세스 또는 쓰레드가 처리하는 구조이며, 요청이 많아지면 CPU와 메모리 사용량이 높아져 성능이 저하될수있다. 이 문제들은 킵얼라이브(Keep Alive)를 활성화함으로 해결할 수 있지만 대량 접속시에 효율이 급격히 떨어지는 문제점이 발생한다. 라이선스는 GPL이 아닌 자체 라이선스를 쓴다. 아차피 라이선스 2.0을 따르는데, 아파치 소프트웨어 재단에서 만들었다는 사실을 밝히고 아파치 라이선스를 따르면 자유롭게 수정 및 재배포가 가능하다. 소스 공개 강제 사항도 없는 자유로운 라이선스다.
그러나 2.2 버전대에서 너무 무겁다는 평이 많아졌고, 빠른 속도를 내세운 엔진엑스라는 웹 서버 프로그램이 새로 나오면서 아파치의 위기가 왔다. 아파치는 Event MPM을 탑재하여 속도를 크게 개선한 2.4버전을 내놓으면서 대응하고 있다. 문제점들을 개선하기위해 아파치2.4부터 Event MPM을 적용했다고 해도, Event Driven을 사용하여 리소스 사용량이 적은 엔진엑스보다 떨어지는 성능과, 대량접속에도 적은 리소스를 사용하며 빠르게 서비스를 요구하는 웹사이트가 늘어남으로 인해서 아파치는 하락세를 타고있으며, 경량화 서버인 엔진엑스이 시장 점유율을 점차 늘려가고 있다. 엔진엑스가 성능상의 장점을 가지고 있다고 하지만, 아파치 웹서버는 여전히 높은 서버 시장점유율과 안정성, 호환성, 확장성을 가지고 있다. 아파치 웹서버가 현재 최우선 과제로 삼고있는 성능 개발 목표를 달성하고, 지속적으로 버전 패치를 해준다면 다시 시장 점유율을 늘려갈 수 있을 것으로 기대하고 있다.
아파치 웹서버는 기능이 매우 많지만 그 기능을 다 활용하는 사람이 드문 그런 프로그램이다. 확장 모듈이 매우 다양하여 간단하게 설치하고 사용 가능하지만 대부분의 사람은 이 프로그램과 PHP, 마이에스큐엘만 설치하고 돌린다. 그리고 그 기능들은 엔진엑스에도 그대로 존재하고, 더 빠르다. 호환성을 확인하고 옮길 수 있으며 옮기는 게 좋다. 윈도우용도 나온다. 윈도우에도 크로스 플랫폼 웹 서버 자유 소프트웨어 꾸러미(XAMPP)나 에이피엠셋업(APMSetup) 등의 APM을 편리하게 통합해 설치할 수 있는 패키지가 나와 있다. 아파치 웹 서버, PHP, 마이에스큐엘 전부 윈도우용이 나오기 때문에 가능한 것이다. 그러나 리눅스·유닉스 베이스로 만들어진 프로그램이다 보니 윈도우에서는 제 속도가 나오지 않는다. 윈도우 버전은 서버 입문자의 디버깅 환경 구축용 혹은 PHP+마이에스큐엘 연습용 정도라고 보면 된다. 거기다 윈도우 서버에는 마이크로소프트가 자체적으로 만든 인터넷 정보 서비스가 있기 때문에, 인터넷 정보 서비스에 FastCGI 모듈로 PHP를 연결해서 돌리는 것이 보통이다. 이 때문에 PHP의 윈도우 버전은 인터넷 정보 서비스용과 아파치용(엑스엔진용)이 따로 나온다.[2][7]
구조[편집]
아파치는 MPM(Multi Processing Module) 구조를 기반으로 클라이언트 요청 처리 방법을 처리하는 기술 기반을 하고 있다. MPM은 mpm_prefork, mpm_worker, mpm_event 이 3가지 구조를 근간으로 하고 있다. mpm_prefork는 단일 스레드 로직에서 동작하며 각 서버 프로세스는 한 번에 하나의 웹 요청(Web Request)을 처리한다. 이러한 방식은 PHP 환경에서 권장되는 방식이다. LAMP 아키턱쳐에서 PHP가 등장하는 이유도 이러한 데서 비롯된다. mpm_worker는 동시에 여러 스레드를 지원한다. 이것은 아파치가 좀 더 효율적이고 확장 가능하도록 돕는다. mpm_event는 mpm_worker와 유사한 방식으로 동작하지만 최근 등장한 웹 관련 애플리케이션을 위한 킵얼라이브 메커니즘이 포함되어 있다. 이러한 방식은 커넥션마다 새로운 스레드가 필요하다는 관점에서 커넥션이 대규모로 많아질 때 성능 측면에서 많은 이슈가 발생할 수 있다.[8]
필요성[편집]
아파치 웹서버는 HTTP 서버를 통해 무거운 사용자 환경의 이미지, JS, CSS, HTML 파일 같은 정적 콘텐츠를 효율적으로 제공하는데 톰캣도 정적 콘텐츠를 제공할 수는 있지만 아파치 웹서버에 비해 반응 속도가 느리며 톰캣과 비교해 10% 정도 더 효율적으로 정적 콘텐츠를 처리하므로 사용자 부하가 높은 상황에서는 아파치를 통합하는 것이 좋다. 아파치 웹서버의 가장 훌륭한 기능 중 하나인 다중 웹사이트 호스팅 기능은 톰캣 7에서 처음으로 제공되는 기능이다. httpd.conf를 이용해 32개가 넘는 가상 호스트를 설정할 수 있다. 32개 이상의 가상 호스트를 설정하려면 virtual.conf 파일을 별도로 만든 다음 httpd.conf에서 virtual.conf를 포함하도록 설정해야 한다. 아파치는 클러스터링을 제공해서 톰캣에 다중 인스턴스 연결을 안정적으로 제공하는 가장 효율적인 서버다. 이 기능의 가장 큰 장점은 인스턴스가 다운됐을 때에도 애플리케이션이 온라인 상태를 유지할 수 있다는 것이다. 또한 배포 중에 다른 인스턴스를 온라인 상태로 제공해 사용자 요청을 처리함과 동시에 인스턴스에 코드를 배포할 수 있다. 즉, 장애 없이 365일 애플리케이션을 수행할 수 있다. 그뿐 아니라, 유연한 모듈 참조를 지원해서 애플리케이션의 요구 사항에 맞게 모든 모듈을 컴파일, 재컴파일 할 수 있다. 애플리케이션의 확장성, 그리고 서드 파티 도구와 통합할 때 유용한 기능이다. 아파치와 톰캣은 사용자와 호스트 기반 보안을 제공하며, 애플리케이션의 요구사항을 고려해 둘 중 누구의 보안을 활성화할 것인지를 결정해야한다. 보안 소켓 계층(SSL), 프록시, 접근제어목록, 디렉토리 접근 제한 등의 보안 기능과 하나의 서버에 여러 도메인 운영, 서버호스팅 등 가상 호스트 기능을 하고 리소스 분산처리, Cache(Expires), HTTP 표준 설정, MPM(Multi-Processing Module), 킵얼라이브(KeepAlive) 등의 성능적인 측면에서 우수하다.[9][5]
비교[편집]
엔진엑스[편집]
아파치는 요청 당 쓰레드 또는 프로세스가 처리하는 구조다. 전통적인 파일 기반 방식의 정적 콘텐츠를 처리하고 서버 내에서 동적 콘텐츠를 처리한다. 역사가 있는 만큼 리눅스, BSD, 유닉스, 윈도우에서 지원 가능하다는 큰 장점이 있다. 특히 윈도우까지 지원이 가능해 일관성 있는 웹 서비스 아키턱쳐를 구현할 수 있다. 분산/중앙집중식 구성을 채택했으며 .htaccess를 통해 디럭토리 별로 추가 구성을 할 수 있다. 단일 기반뿐만 아니라 분산형 구축이 가능하므로 대용량 서버 구조에서 자원만 충분하다면 여러 웹 서비스를 구현할 수 있다. 60개 이상의 다양한 기능과 모듈을 지원하며, 필요에 따라 활성화 또는 비활성화 시킬 수 있다. 동적 모듈을 통해 웹 서버의 사용자지정도 가능하게 할 수 있는 등 다양한 디자인과 확장이 가능하다. 또한 보안을 위해 다양한 웹 기반 디도스(DDoS) 방어에 대한 기술을 제공한다.
엔진엑스는 비동기 이벤트 기반으로 요청을 처리하는 구조다. 이벤트 처리, 비동기식, 논블로킹 방식 처리로 인해 정적 콘텐츠 제공 시 고속 처리가 가능하지만 동적 웹 페이지 콘텐츠를 가진 모든 요청을 위해 외부 자원과 연계(PHP-fpm) 한다. 따라서 최종적으로 동적 콘텐츠가 다시 돌아올 때까지 기다렸다가 클라이언트에게 전달하는 방식을 가지고 있어 동적 콘텐츠를 처리하지 않는다. 리눅스, BSD, 유닉스처럼 다양한 운영 체계를 지원하지만, 윈도우는 아파치만큼 완벽히 지원하지 않는다. 중앙집중식 구성을 채택했으며 아파치처럼 .htaccess를 지원하지 않는다. 따라서 추가 구성을 할 수 없는 단점이 있다. 하지만 이러한 방식은 가상화, 클라우드, MSA와 같은 구조에서 오히려 경량화와 성능 보장이라는 측면에서 단점이 되지 않을 수도 있다. 다른 코어 모듈을 동적으로 로딩할 수 없도록 되어 있다. 옵션을 최소화해서 태생부터 성능에 포커싱 했다. 엔진엑스에서도 보안에 대한 다양한 기술 문서를 제공하며, 코드 자체가 가볍고 경량화되어 있어서 보안에 유리한 측면도 있다.
최근 대용량의 정적 파일 및 큰 규모의 사이트가 많아짐에 따라 대량 접속에도 적은 리소스를 사용하며 빠르게 서비스를 할 수 있는 웹 사이트가 대세가 되었는데, 이런 면에서 엔진엑스가 각광받기 시작했다. 성능 면에서 아파치 2.2는 엔진엑스에 뒤처졌기 때문에 엔진엑스가 성장하게 된다. 그러다가 2012년에 빠른 응답 속도와 적은 리소스 사용 부분을 개선한 아파치 2.4를 발표하면서, 엔진엑스에 대응하기 시작한다. 그러나 아직 엔진엑스가 성능 면에서 미세하게 아파치 2.4보다 좋다. 하지만 PHP 모듈 등을 직접 적재할 수 있는 아파치가 구조상 이점이 있기에 복잡한 웹 사이트의 경우나 세션 클러스터링 같은 특별한 목적을 추가적으로 수행하는 세팅을 할 경우에는 별도의 과정을 거쳐야 하기 때문에, 이러한 별도의 작업이 많이 필요한 서비스의 경우에도 유지 보수 측면에서 아파치가 유용하다. 즉 안정성과 확장성, 호환성에서 아파치가 우세, 성능 면에서는 엔진엑스가 우세하다.[10][8]
IIS[편집]
IIS(Internet Information Services)는 마이크로소프트 윈도우를 사용하는 서버들을 위한 인터넷 기반 서비스들의 모임이다. 아파치 웹서버 다음으로 두 번째로 잘 알려진 웹서버로 FTP, SMTP, NNTP, HTTP 및 HTTPS 서버를 포함하고 있다. 무료 오픈소스며 모든 운영체제에서 쉽고 빠르게 설치 가능하고 콘솔 작업을 해서 초보자가 작업하기 힘든 아파치 서버와 다르게 IIS 서버는 마이크로소프트의 제품이므로 마이크로소프트 윈도우 OS에서만 실행되고 유료지만 그래픽 사용자 인터페이스(GUI)라서 사용하기 쉽다. PHP를 사용할 수도 있지만 보통 ASP와 같이 사용하는데 IIS 웹서버에서 ASP 파일을 이용하다가 아파치 서버에서 이용하려면 ASP 파일을 PHP로 변경하여 사용한다.[11]
톰캣[편집]
톰캣(Tomcat)은 일반적으로 웹 애플리케이션 서버(WAS; Web Application Server)라고 불린다. 아파치는 80포트로 연결된다. 사용 처리 속도가 빠르고 구조가 단순하여 비용 절감에 좋으며 트래픽 과부하에 강하다는 장점이 있지만 정적인 데이터만 처리가 가능하고 다른 서비스와 상호작용 불가능하다는 단점이 있다. 반면, 톰캣은 8080포트로 연결된다. 데이터 흐름이 유동적이고 데이터베이스(DB) 등 여러 서비스가 가능하다는 장점이 있지만 아파치에 비해 속도가 느리고 부가적인 비용이 발생하며 트래픽 과부하게 약하다는 단점이 있다. 아파치톰캣이란, 아파치의 기능 일부를 가져와서 제공해 주는 형태이기 때문에 톰캣과 아파치를 합쳐서 부른다. 아파치만 사용하면 정적인 웹페이지만 처리하므로 처리 속도가 매우 빠르고 안정적이다. 하지만 톰캣을 사용하면 동적인 웹페이지 처리가 가능하며 데이터베이스 연결, 데이터 조작, 다른 응용프로그램과 상호 작용이 가능하다. 톰캣만 사용하면 아파치에서 필요한 기능을 못 가져온다. 또한 여러 사용자가 요청할 시에 톰캣에 과부하가 걸린다. 그래서 아파치와 톰캣을 같이 쓰면 아파치는 정적인 데이터만 처리하고, 자바 서버 페이지 처리는 톰캣의 일부인 웹 컨테이너(Web Container)로 보내주어 분산처리할 수 있다.[12]
각주[편집]
- ↑ 서버이야기, 〈아파치(apache)와 톰캣란?〉, 《티스토리》, 2017-01-16
- ↑ 2.0 2.1 아파치 HTTP 서버 나무위키 - https://namu.wiki/w/%EC%95%84%ED%8C%8C%EC%B9%98%20HTTP%20%EC%84%9C%EB%B2%84
- ↑ 아파치 HTTP 서버 뉴위키 - https://www.newiki.net/wiki/%EC%95%84%ED%8C%8C%EC%B9%98_HTTP_%EC%84%9C%EB%B2%84
- ↑ 4.0 4.1 기계인간 John Grib, 〈아파치 웹 서버의 시작〉, 《개인블로그》, 2020-02-05
- ↑ 5.0 5.1 5.2 리치해커 SCOTT, 〈apache〉, 《네이버 블로그》, 2016-10-07
- ↑ Web Server Survey, 〈June 2019 Web Server Survey〉, 《Netcraft》, 2019-06-17
- ↑ 아파치 공식 홈페이지 - Overview of new features in Apache HTTP Server 2.4
- ↑ 8.0 8.1 청년정신, 〈Apache-vs-Nginx〉, 《티스토리》, 2019-03-27
- ↑ beom3, 〈Apache HTTP서버의 장점〉, 《네이버 블로그》, 2016-09-19
- ↑ victolee, 〈[Web Server 아파치 2.4와 Nginx 특징 및 비교]〉, 《티스토리》, 2018-06-04
- ↑ imm7745, 〈IIS와 아파치의 비교〉, 《네이버 블로그》, 2020-03-11
- ↑ HR, 〈아파치, 톰캣, 아파치톰캣의 차이〉, 《네이버 블로그》, 2019-05-21
참고자료[편집]
- 아파치 공식 홈페이지 - http://httpd.apache.org/docs/trunk/new_features_2_4.html Overview of new features in Apache HTTP Server 2.4
- 아파치 HTTP 서버 나무위키 - https://namu.wiki/w/%EC%95%84%ED%8C%8C%EC%B9%98%20HTTP%20%EC%84%9C%EB%B2%84
- 아파치 HTTP 서버 뉴위키 - [https://www.newiki.net/wiki/%EC%95%84%ED%8C%8C%EC%B9%98_HTTP_%EC%84%9C%EB%B2%84
- beom3, 〈Apache HTTP서버의 장점〉, 《네이버 블로그》, 2016-09-19
- 리치해커 SCOTT, 〈apache〉, 《네이버 블로그》, 2016-10-07
- 서버이야기, 〈아파치(apache)와 톰캣란?〉, 《티스토리》, 2017-01-16
- victolee, 〈[Web Server 아파치 2.4와 Nginx 특징 및 비교]〉, 《티스토리》, 2018-06-04
- 청년정신, 〈Apache-vs-Nginx〉, 《티스토리》, 2019-03-27
- HR, 〈아파치, 톰캣, 아파치톰캣의 차이〉, 《네이버 블로그》, 2019-05-21
- Web Server Survey, 〈June 2019 Web Server Survey〉, 《Netcraft》, 2019-06-17
- 기계인간 John Grib, 〈아파치 웹 서버의 시작〉, 《개인블로그》, 2020-02-05
- imm7745, 〈IIS와 아파치의 비교〉, 《네이버 블로그》, 2020-03-11
- solinsystem, 〈Apache 설치/아파치 설치방법〉, 《네이버 블로그》, 2022-07-20
- solinsystem, 〈Apache 설치/아파치 설치 후 환경설정 - 실행하기〉, 《네이버 블로그》, 2022-07-20
- solinsystem, 〈Apache 윈도우 서비스 등록〉, 《네이버 블로그》, 2022-07-20
- solinsystem, 〈Apache httpd.conf 설정 요소〉, 《네이버 블로그》, 2022-07-20
- solinsystem, 〈[Apache+PHP+DB APMSETUP, XAMPP 설치방법]〉, 《네이버 블로그》, 2022-07-20
같이 보기[편집]