Apache HTTP Server Version 2.4

Apache > HTTP Server > Documentation > Version 2.4

# 컴파일과 설치

이 문서는 최신판 번역이 아닙니다. 최근에 변경된 내용은 영어 문서를 참고하세요.

이 문서는 유닉스와 유닉스류 시스템에서 아파치를 컴파일하고 설치하는 것만을 다룬다. 윈도우즈에서 컴파일하고 설치하는 방법은 마이크로소프트 윈도우즈에서 아파치 사용을 참고하라. 다른 플래폼에 대해서는 플래폼 문서를 참고하라.

아파치 2.0의 구성과 설치 환경은 1.3과 매우 다르다. 아파치 1.3은 쉬운 설치를 위해 자체 스크립트를 사용했다. 아파치 2.0은 이제 다른 여러 오픈소스 프로젝트와 비슷한 환경을 만들기위해 `libtool`과 `autoconf`를 사용한다.

만약 작은 버전을 한단계 업그레이드한다면 (예를 들어, 2.0.50에서 2.0.51), 업그레이드 장으로 바로 가길 바란다.

### 참고

- 소스 트리 구성
- 아파치 시작
- 아파치 중단과 재시작

## 성미 급한 사람을 위한 개요

다운로드 | `$ lynx http://httpd.apache.org/download.cgi`
압축 풀기 | `$ gzip -d httpd-2_1_NN.tar.gz $ tar xvf httpd-2_1_NN.tar`
구성 | `$ ./configure --prefix=PREFIX`
컴파일 | `$ make`
설치 | `$ make install`
설정 | `$ vi PREFIX/conf/httpd.conf`
검사 | `$ PREFIX/bin/apachectl start`

NN은 현재 작은 버전 숫자로, PREFIX는 서버가 설치될 파일시스템 경로로 대체해야 한다. PREFIX를 지정하지 않으면 기본값으로 `/usr/local/apache2`를 사용한다.

아래는 아파치 웹서버를 컴파일하고 설치하기위한 요구사항부터 컴파일과 설치 과정을 각각 자세히 설명한다.

## 요구사항

아파치를 컴파일하기위해 다음과 같은 것들이 필요하다:

디스크 공간
  디스크 여유공간이 최소 50 MB 이상인지 확인하라. 설치후 아파치는 약 10 MB의 디스크 공간을 차지한다. 실제 필요한 디스크 공간은 선택한 구성 옵션과 추가 모듈에 따라 상당히 차이가 난다.
ANSI-C 컴파일러와 컴파일 시스템
  ANSI-C 컴파일러가 설치되있는지 확인하라. Free Software Foundation (FSF)의 GNU C compiler (GCC)를 추천한다. (버전 2.7.2면 된다.) GCC가 없다면 최소한 사용하는 컴파일러가 ANSI 호환인지 확인하라. 추가로 `PATH` 환경변수는 `make`와 같은 기본적인 컴파일 도구를 포함해야 한다.
정확한 시간
  HTTP 프로토콜에는 하루중 시간을 표현하는 부분이 있다. 그래서 이제 시스템의 시간 동기화 기능을 살펴볼 시간이다. 보통 이를 위해 Network Time Protocol (NTP)에 기반한 `ntpdate`나 `xntpd`를 사용한다. NTP 소프트웨어와 공개 시간 서버에 대한 정보는 뉴스그룹 comp.protocols.time.ntp와 NTP 홈페이지를 참고하라.
Perl 5 [선택사항]
  (Perl로 쓰여진) apxs나 dbmmanage와 같은 지원 스크립트를 위해 Perl 5 인터프리터가 필요하다. (버전 5.003 이상이면 된다.) ``configure`' 스크립트가 이 인터프리터를 찾지 못해도 문제없이 아파치 2.0을 컴파일하고 설치할 수 있다. 다만 지원 스크립트를 사용하지 못할 뿐이다. 여러 Perl 인터프리터가 설치되있다면 (아마도 살때 포함된 Perl 4와 직접 컴파일한 Perl 5) `./configure`가 올바른 것을 찾기위해 `--with-perl` 옵션을 (아래 참고) 사용하길 바란다.

## 다운로드

아파치는 여러 미러 목록이 있는 아파치 웹서버 다운로드 사이트에서 다운로드할 수 있다. 유닉스류 시스템을 사용한다면 소스코드를 다운받아서 컴파일하는 편이 낫다. 쉽게 (아래에서 설명) 컴파일할 수 있고, 자신의 용도에 알맞게 서버를 맞출 수 있다. 또, 최신 버전 바이너리 배포본이 없는 경우도 많다. 바이너리를 다운받는다면 배포본에 있는 `INSTALL.bindist` 파일의 지시를 따르라.

다운로드후 다운받은 파일이 완전하고 변경되지않은 아파치 웹서버임을 확인하는 것이 중요하다. PGP 서명을 가지고 다운로드한 타볼(tarball)을 검사하여 확인한다. 자세한 방법은 다운로드 페이지에 있고, PGP 사용법을 설명하는 상세한 예도 있다.

## 압축 풀기

아파치 웹서버 타볼에서 소스를 푸는 작업은 단순히 압축과 tar를 푸는 것이다:

`$ gzip -d httpd-2_1_NN.tar.gz
$ tar xvf httpd-2_1_NN.tar`

그러면 현재 디렉토리 아래에 배포본의 소스코드를 담은 새로운 디렉토리가 생긴다. 서버를 컴파일하기 전에 그 디렉토리로 `cd`해야 한다.

## 소스 트리 구성하기

다음 과정은 특정 플래폼과 개인적인 필요에 따라 아파치 소스 트리를 구성하는 일이다. 이를 위해 배포본의 최상위 디렉토리에 있는 `configure` 스크립트를 사용한다. (아파치 소스 트리의 CVS 버전을 다운로드한 개발자는 이미 `autoconf`와 `libtool`가 설치되있고, 다음 과정으로 넘어가기 전에 `buildconf`를 실행해야 한다. 이는 정식 버전에서는 필요없다.)

모두 기본 옵션을 사용하여 소스 트리를 구성하려면 간단히 `./configure`를 입력하면된다. 기본 옵션을 수정하려면 `./configure`에 여러 변수와 명령행 옵션을 사용한다.

가장 중요한 옵션은 아파치가 정상적으로 작동하기위해 아파치를 구성하고 설치할 장소인 `--prefix`다. 다른 configure 옵션들을 사용하여 파일의 위치를 더 자세히 설정할 수도 있다.

모듈을 포함하거나 빼서 아파치에 포함할 기능을 선택한다. Base 상태인 모듈은 기본적으로 아파치에 포함된다. 다른 상태의 모듈은 `--enable-module` 옵션을 사용하여 포함한다. 여기서 module은 모듈 이름에서 `mod_`를 빼고 밑줄을 빼기기호로 변경한 결과다. `--enable-module=shared` 옵션을 사용하면 모듈을 실행중에 포함하거나 뺄 수 있는 공유객체(shared object, DSO)로 컴파일한다. 또, `--disable-module` 옵션을 사용하여 Base 모듈을 뺄 수 있다. 지정한 모듈이 없어도 `configure`가 경고하지않고 그냥 무시하기때문에 모듈 이름을 정확히 입력하라.

가끔 `configure` 스크립트에게 컴파일러, 라이브러리, 헤더파일 등의 위치를 알려줘야 할 경우가 있다. 이 정보는 환경변수나 `configure`의 명령행 옵션을 사용하여 전달한다. 자세한 내용은 configure manpage를 참고하라.

여러분이 선택할 수 있는 가능성을 보여주기위해 다음은 특정 컴파일러와 플래그를 사용하고 나중에 DSO로 읽어들일 두 모듈 `mod_rewrite`와 `mod_speling`을 추가하여 `/sw/pkg/apache`에 설치할 아파치를 컴파일하는 전형적인 예이다:

`$ CC="pgcc" CFLAGS="-O2" \
./configure --prefix=/sw/pkg/apache \
--enable-rewrite=shared \
--enable-speling=shared`

`configure`를 실행하면 몇분간 시스템의 기능을 검사하여 나중에 서버를 컴파일할때 사용할 Makefile들을 만든다.

`configure` 옵션들에 대한 자세한 설명은 configure manpage에 있다.

## 컴파일

이제 다음 명령어 하나로 아파치의 여러 부분을 컴파일할 수 있다:

`$ make`

여기서 좀 기다려라. 펜티엄 III/리눅스 2.2 시스템에서 기본 구성을 컴파일하는데 약 3분 정도 걸린다. 이 시간은 하드웨어와 포함한 모듈수에 따라 크게 변한다.

## 설치

이제 다음 명령어로 패키지를 (위의 `--prefix` 옵션 참고) 지정한 설치 위치 PREFIX에 설치한다:

`$ make install`

업그레이드한다면 이 설치 과정이 기존 설정파일이나 문서를 덮어쓰지 않는다.

## 설정

다음으로 `PREFIX/conf/`에 있는 설정파일을 편집하여 아파치 웹서버를 설정한다.

`$ vi PREFIX/conf/httpd.conf`

사용가능한 설정 지시어에 대한 완전한 설명과 이 문서의 가장 최근 판은 docs/manual/이나 http://httpd.apache.org/docs/2.4/에 있는 아파치 설명서를 참고하라.

## 검사

이제 다음과 같이 아파치 웹서버를 시작할 수 있다:

`$ PREFIX/bin/apachectl start`

그리고 URL `http://localhost/`로 첫 문서를 요청한다. 보게될 웹페이지는 아마도 `PREFIX/htdocs/`일 `DocumentRoot` 아래에 있다. 그리고 다음 명령어로 다시 서버를 중단한다:

`$ PREFIX/bin/apachectl stop`

## 업그레이드

업그레이드한다면 먼저 사이트에 영향을 줄 수 있는 변화가 있는지 알아보기위해 발표문과 소스 배포본의 `CHANGES` 파일을 읽는다. (예를 들어, 1.3에서 2.0이나 2.0에서 2.2와 같은) 큰 버전이 변한 경우 컴파일 옵션과 설정을 직접 수정해야할 정도의 큰 변화가 있을 것이다. 모든 모듈도 모듈 API의 변화에 알맞게 업그레이드해야 한다.

작은 버전을 한단계 업그레이드하는 것은 (예를 들어, 2.0.55에서 2.0.57) 쉽다. `make install` 작업은 기존의 문서, 로그파일, 설정파일을 수정하지 않는다. 또, 개발자는 작은 버전간에 `configure` 옵션, 설정, 모듈 API의 호환성없는 변화를 최대한 막는다. 대부분의 경우 동일한 `configure` 명령행, 동일한 설정파일을 사용할 수 있고, 모듈들도 모두 계속 동작할 것이다. (이 말은 2.0.41이후 버전에만 해당한다. 이전 버전들에는 호환성없는 변화가 있다.)

이전에 설치했던 소스를 가지고 있다면, 업그레이드가 더 쉬워진다. 이전 소스 최상위에 있는 `config.nice` 파일에는 소스를 구성할 때 사용했던 `configure` 명령행 옵션이 그대로 있다. 그래서 다음 버전으로 업그레이드한다면 새로운 버전 소스로 `config.nice` 파일을 복사하고, 원한다면 조금 수정을 한 후, 다음과 같이 실행한다:

`$ ./config.nice
$ make
$ make install
$ PREFIX/bin/apachectl stop
$ PREFIX/bin/apachectl start
`

새로운 버전을 사용하기 전에 항상 검사해봐야 한다. 예를 들어, 업그레이드를 마치기 전에 호환성 문제가 있는지 알아보기위해 다른 `--prefix`와 (`Listen` 지시어로) 다른 포트를 사용하여 새로운 버전을 설치한후 이전 버전과 같이 실행해볼 수 있다.