Apache HTTP Server Version 2.0

Apache > HTTP Server > Documentation > Version 2.0

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

가능한 언어: de | en | es | fr | ja | ko | ru

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

### 참고

- 아파치 2.0의 새로운 기능 요약

## 컴파일시 구성 변화

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

## 실행시 설정 변화

- Apache 1.3에서 서버 핵심에 있었던 많은 지시어들이 이제는 MPM에 있다. 서버가 Apache 1.3과 최대한 비슷하게 동작하길 바란다면 `prefork` MPM을 선택해야 한다. 다른 MPM은 다른 지시어를 사용하여 프로세스 생성과 요청의 처리를 조절한다.
- proxy 모듈은 HTTP/1.1에 맞추어 수정되었다. 중요한 변화중 하나는 이제 프록시 접근제어가 `<Directory proxy:>` 블록이 아니라 `<Proxy>` 블록에 위치하는 점이다.
- 몇몇 모듈에서 `PATH_INFO` (진짜 경로명 뒤에 나오는 경로 정보) 처리 방식이 변경되었다. 전에 핸들러였지만 이제 필터로 구현되는 모듈은 더 이상 `PATH_INFO`가 있는 요청을 받아들이지 못한다. INCLUDES나 PHP와 같은 필터는 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` 옵션이 같은 기능을 한다.
- `mod_negotiation`의 MultiViews 내용협상이 더 엄격하게 기본파일을 찾는다. 내용협상은 협상가능한 파일 중에서만 선택한다. `MultiviewsMatch` 지시어를 사용하여 이전과 같이 동작하게 할 수 있다.
- (2.0.51 버전 이후)

  `ErrorHeader` 지시어는 잘못된 명칭으로, 이 지시어가 담당한 기능은 `Header` 지시어로도 가능하다. 원하는 기능을 위해,

  `Header always set 어쩌고 저쩌고`

  와 같이 설정한다.

## 기타 변화

- 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에서 사용할 수 없다. 자세한 정보는 개발자 문서를 참고하라.

가능한 언어: de | en | es | fr | ja | ko | ru