역사
아파치는 원래 일리노이 대학교 어바나 샴페인 분교의 국가 고급 컴퓨팅 센터에서 개발한 것이다. 그 이후로 Apache 는 오픈 소스 커뮤니티의 회원들에 의해 지속적으로 개발되고 강화되었다. 아파치 서버는 이미 절반 이상의 인터넷 사이트, 특히 가장 인기 있고 방문이 가장 많은 사이트에서 이미 사용되고 있는 안정적이고 신뢰할 수 있는 명성을 가지고 있습니다.
처음에는 Apache 가 Netscape 웹 서버 (현재의 Sun ONE) 의 오픈 소스 대체 제품일 뿐이었습니다. 점차적으로, 그것은 기능과 속도면에서 시작되었습니다. 다른 유닉스 기반 HTTP 서버를 능가하다. 아파치는 1996 년 4 월 이후 인터넷에서 가장 인기 있는 HTTP 서버: 1999 년 5 월, 57% 의 웹 서버에서 실행됩니다. 2005 년 7 월까지 이 비율은 69% 로 상승했다.
저자는 처음 이 이름을 선택한 것은 기억하기 쉽기 때문이라고 주장하지만, 가장 인기 있는 해석은 1995 년 초 아파치를 개발할 때 당시 가장 유행했던 HTTP 서버 NCSA HTTPd 1.3 의 코드를 수정했기 때문에' 라는 것이다 하지만 서버 공식 홈페이지의 FAQ 에서 이렇게 설명했다.' 아파치' 라는 이름은 미국 인디언 중 아파치 (힌디어) 라는 분기를 기념하기 위한 것으로, 그들이 뛰어난 전투 전략과 끝없는 인내심을 가지고 있다는 것은 잘 알려져 있다. " 어쨌든 Apache 2.x 분기에는 NCSA 코드가 포함되어 있지 않습니다.
특징
아파치는 많은 기능을 지원하며, 대부분 컴파일된 모듈을 통해 이루어진다. 이러한 기능에는 서버측 프로그래밍 언어 지원에서 인증 체계에 이르기까지 다양합니다. 일부 공용 언어 인터페이스는 Perl, Python, Tcl 및 PHP 를 지원합니다. 일반적인 인증 모듈에는 mod_access, mod_auth 및 mod_digest 가 포함됩니다. 다른 예로는 SSL 및 TLS 지원 (mod_ssl), 에이전트 모듈, 유용한 URL 재작성 (mod_rewrite 에서 구현), 사용자 정의 로그 파일 (mod_log_config) 및 필터링 지원 ( Apache 로그는 웹 브라우저를 통해 무료 스크립트인 AWStats 또는 Visitors 를 사용하여 분석할 수 있습니다.
버전 2.x
Apache 의 버전 2.x 는 Apache 1.x 를 크게 개선했습니다. 여기에는 스레드, Windows 와 같은 비 UNIX 플랫폼에 대한 향상된 지원, 새로운 Apache API 및 IPv6 지원이 포함됩니다.
평가
2004 년 8 월 PC Magazine》2004 는 지난 30 년 동안 10 최고의 소프트웨어 제품을 선정했습니다. 그들 중 몇몇은 가장 휘황찬란한 역사를 가지고 있거나 가장 창조적이다. Apache 에 대한 평가는 3 위: Apache (Apache, 1995 소개) Apache 가 이제' 램프' 인 Linux, Apache, MySQL 로 진화했다는 것이다. 이것은 마이크로소프트에 심각한 위협이 된 오픈 소스 소프트웨어 프로젝트이다. " 그물' 전략. 특히 Apache web server 는 사용자가 소스 소프트웨어 개발의 안정성, 안정성 및 사용자 정의를 충분히 경험할 수 있도록 합니다.
Apple.com 이 Apache 에 대해 논평했을 때, 그는 Apache 가 진화하는 서버 소프트웨어의 중요한 부분이라고 말했다. 그것은 무료이지만 값진 것이다. 아파치는 자원 개방 운동의 절대 보물이다. 개인 특허가 아니라 대중에게 공짜이기 때문이다. 일단 이 소스 코드를 갖게 되면 프로그래머들은 자신이 하고 싶은 일을 자유롭게 할 수 있다. 다른 프로그래머들이 그들의 일을 맡을 때, 그들은 자신의 소스 코드를 변경하고 수정할 수 있는 동일한 권리를 부여받을 수 있다. (존 F. 케네디, 원어민, 원어민, 원어민, 원어민, 원어민, 원어민)
주다주석을 달다
새로운 허점이 계속 발견되기는 하지만 오픈 소스의 특성으로 인해 항상 빠르게 복구될 수 있습니다. 그래서 전반적으로, 그것의 안전은 여전히 상당히 높다.
() [# page _ #] [# page _ #] addhandler CGI-스크립트. 컴퓨터가 이미지를 생성합니다
AddHandler 서버가 구문 분석됩니다. Shtml
Sethandler CGI 스크립트
AddHandler 는 어떤 확장자를 어떤 문자열로 설명할지 정의합니다.
SetHandler 는 디렉토리의 모든 파일이 이 문자열로 설명되도록 지정합니다.
내가 여기서 언급한 명령은 그들의 구조와 밀접한 관련이 있다. 다음은 처리기와 유형 간의 관계에 대해 설명합니다. 많은 것들이 밖에서 잘 보이지 않는다. 다음으로, 우리는 내부에서 본다.
프로그램의 기본 구조
--
아파치는 매우 플랫폼에 걸쳐 있습니다. 이러한 목표를 달성하기 위해 모듈 작성자의 부담을 단순화하기 위해 Apache 는 특정 플랫폼과 독립적인 IO 및 메모리 할당과 같은 많은 기본 기능을 완성했습니다. Hashtable 과 Array 와 같은 유용한 루틴도 있습니다. 전체 시스템에서 Apache 는 가능한 한 간단한 구조와 알고리즘을 사용하여 쉽게 이해하고 유지 관리할 수 있을 뿐만 아니라 안정성을 높일 수 있는 기본점을 가지고 있습니다.
UNIX 시스템에서 Apache 는 창에 다중 프로세스 모델과 다중 스레드 모델을 사용합니다. 복수 프로세스 모델에서 하위 프로세스는 고객 요청을 처리하고 상위 프로세스는 하위 프로세스를 관리합니다. 시스템이 과부하되면 상위 프로세스는 여러 하위 프로세스를 시작합니다. 시스템이 유휴 상태일 때 상위 프로세스는 여러 하위 프로세스를 죽입니다. 하위 프로세스 수는 "MinSpareServers" 와 "MaxSpareServers" 사이에 있습니다. 또한 각 하위 프로세스에서 처리하는 요청 수가 제한되어 메모리 누수 등의 문제를 해결할 수 있습니다. 모든 프로세스 상태는 공유 메모리에 기록됩니다. 각 프로세스의 상태는 작은 메모리 블록에 기록되며 일반적으로 이 메모리만 읽고 쓰므로 Apache 는 동기화 메커니즘을 사용하지 않습니다.
Apache 는 Richard Steve 의 책에 언급된 몇 가지 다중 프로세스 서버 모델을 사용하며, 해당 특성에 따라 시스템마다 다른 방법을 사용하도록 선택합니다.
1. 수락:
커널 수준에서 accept 를 구현하는 경우에만 accept 시 차단될 수 있습니다.
2. 다음을 선택합니다.
선택할 때 차단됩니다.
3. 상호 배제/잠금 파일:
뮤텍스 또는 lock _ mutex 상호 배타적인 accpet 을 사용합니다.
세 가지 방법 모두 차폐가 필요한데, 차이점은 차폐가 다르다는 것이다. 처음 두 가지 방법은 소위 거인 그룹 문제를 일으킬 수 있습니다. 즉, 동일한 자원에서 차단된 여러 프로세스가 동시에 깨어나면 재경쟁으로 이어질 수 있습니다. 하지만 리처드 스티브의 평가에 따르면 첫 번째 방법은 가장 빠르고, 두 번째는 두 번째, 세 번째는 가장 느리다. 사실, 세 번째 방법은 리눅스에서도 거인그룹 문제가 발생할 수 있다.
아파치는 성능을 강조하지 않지만, 그들이 성능을 중시하지 않는 것은 아니다. 대신 Apache 는 realiable 이 서버 측 1 위라고 생각하지만, Apache 의 성과는 여전히 좋다.