### Apache HTTP Server Version 2.0

# 1.3에서 2.0으로 업그레이드

우리는 기존 아파치 사용자가 업그레이드하는 것을 돕기위해 중요한 정보를 알려주는 문서를 유지한다. 이 문서는 간단한 설명이므로, 새로운 기능 문서나 `src/CHANGES` 파일에서 정보를 찾아봐야 한다.

### 컴파일시 구성 변화

- 아파치는 이제 아파치 컴파일과 설치를 위해 `autoconf`와 `libtool` 시스템을 사용한다. 이 시스템의 사용법은 Apache 1.3의 APACI 시스템과 같지는 않지만 비슷하다.
- 컴파일 여부를 선택할 모듈외에 Apache 2.0은 요청을 처리하는 주요 부분을 아파치 다중처리 모듈 (Multi-Processing Modules, MPMs)로 옮겼다.

### 실행시 설정 변화

- Apache 1.3에서 서버 핵심에 있었던 많은 지시어들이 이제는 MPM에 있다. 서버가 Apache 1.3과 최대한 비슷하게 동작하길 바란다면 prefork MPM을 선택해야 한다. 다른 MPM은 프로세스 생성과 요청 처리를 조절하는데 다른 지시어를 사용한다.
- 프록시 모듈는 HTTP/1.1에 맞추어 수정되었다. 중요한 변화중 하나는 이제 프록시 접근 제어가 <Directory proxy:> 블록이 아닌 <Proxy> 블록에 위치하는 점이다.
- 몇몇 모듈에서 PATH_INFO (진짜 경로명 뒤에 나오는 경로 정보) 처리가 변경되었다. 전에 핸들러였지만 이제 이제 필터로 구현되는 모듈은 더 이상 PATH_INFO가 있는 요청을 받아들이지 못한다. INCLUDES와 같은 필터는 core 핸들러 상위에 구현되기때문에 PATH_INFO가 있는 요청을 거부한다. core 핸들러가 PATH_INFO가 있는 요청을 받아들이고 server-side include에서 PATH_INFO를 사용하게 하려면, AcceptPathInfo 지시어를 사용해야 한다.
- `CacheNegotiatedDocs` 지시어는 이제 아규먼트로 `on`과 `off`를 받는다. 기존의 `CacheNegotiatedDocs`는 `CacheNegotiatedDocs on`으로 대체되야 한다.
- `ErrorDocument` 지시어는 더이상 메세지를 나타내는 아규먼트 앞에 따옴표를 사용하지 않는다. 대신 쌍따옴표로 메세지를 묶어야 한다. 예를 들어 과거

  > `ErrorDocument 403 "Some Message`

  는 다음과 같이 수정되야 한다.

  > `ErrorDocument 403 "Some Message"`

  두번째 아규먼트가 유효한 URL이나 경로명이 아니라면 메세지로 간주한다.
- `AccessConfig`와 `ResourceConfig` 지시어는 더이상 없다. 기존에 사용하던 지시어는 같은 기능을 하는 `Include` 지시어로 대체할 수 있다. 과거에 내용을 설정파일에 포함하지 않고 이 지시어들의 기본값을 사용했다면, http.conf에 `Include conf/access.conf`와 `Include conf/srm.conf`를 추가할 필요가 있다. 아파치가 이전 지시어와 같은 순서로 설정파일을 읽게하려면 `Include` 지시어를 httpd.conf 끝에 두고, `srm.conf`이 `access.conf` 앞에 나와야 한다.
- `BindAddress`와 `Port` 지시어는 더이상 없다. 더 유연한 `Listen` 지시어가 같은 기능을 한다.
- Apache-1.3에서 `Port`의 다른 용도는 자기참조 URL의 포트 번호를 설정하는 일이였다. Apache-2.0에서 이 기능은 새로운 `ServerName`으로 한다. 이는 한 지시어에 호스트명과 자기참조 URL을 위한 포트 번호를 같이 설정할 수 있게 수정되었다.
- `ServerType` 지시어는 더이상 없다. 요청을 서비스하는 방법은 이제 MPM 선택에 달렸다. 현재 inetd에서 시작하도록 설계된 MPM은 없다.
- `AgentLog`, `RefererLog`, `RefererIgnore` 지시어를 제공한 mod_log_agent와 mod_log_referer 모듈이 없어졌다. agent 로그와 referer 로그는 mod_log_config의 CustomLog 지시어를 사용하여 계속 제공된다.
- `AddModule`과 `ClearModuleList` 지시어는 더이상 없다. 이 지시어들은 모듈을 올바른 순서로 활성화하려고 사용되었다. 새로운 Apache 2.0 API는 모듈이 활성화되는 순서를 명시적으로 지정할 수 있게하여, 이 지시어들이 불필요하게 되었다.
- `FancyIndexing` 지시어가 없어졌다. 같은 기능이 IndexOptions 지시어의 `FancyIndexing` 옵션으로 제공된다.

### 기타 변화

- 가상호스트 설정을 출력하기위한 `httpd`의 명령행 옵션 `-S`가 `-t -D DUMP_VHOSTS`로 대체되었다.
- Apache 1.3에서 실험적이였던 mod_auth_digest 모듈이 이제 표준 모듈이 되었다.
- Apache 1.3에서 실험적이였던 mod_mmap_static 모듈이 mod_file_cache로 대체되었다.
- 배포본이 완전히 새로 구성되어 더이상 독립된 `src` 디렉토리가 없다. 대신 소스는 주 배포본 디렉토리 아래 논리적으로 구성되고, 컴파일된 서버는 독립된 디렉토리에 설치해야 한다.

### 추가 모듈

Apache 2.0에서 서버 API가 많이 변경되었다. Apache 1.3 API에 맞춰진 기존 모듈은 수정없이 Apache 2.0에서 사용할 수 없다. 자세한 정보는 개발자 문서를 참고하라.

### Apache HTTP Server Version 2.0