Apache HTTP Server Version 2.0
이 문서는 유닉스와 유닉스류 시스템에서 아파치를 컴파일하고 설치하는 것만을 다룬다. 윈도우즈에서 컴파일하고 설치하는 방법은 마이크로소프트 윈도우즈에서 아파치 사용을 참고하라. 다른 플래폼에 대해서는 플래폼 문서를 참고하라.
아파치 2.0의 구성과 설치 환경은 1.3과 매우 다르다.
아파치 1.3은 쉬운 설치를 위해 자체 스크립트를 사용했다.
아파치 2.0은 이제 다른 여러 오픈소스 프로젝트와 비슷한 환경을
만들기위해 libtool
과 autoconf
를
사용한다.
다운로드 | $ lynx
http://www.apache.org/dist/httpd/httpd-2_0_NN.tar.gz
|
압축 풀기 | $ gzip -d httpd-2_0_NN.tar.gz |
구성 | $ ./configure --prefix=PREFIX
|
컴파일 | $ make |
설치 | $ make install |
설정 | $ vi PREFIX/conf/httpd.conf |
검사 | $ PREFIX/bin/apachectl start
|
NN은 현재 작은 버전 숫자로, PREFIX는
서버가 설치될 파일시스템 경로로 대체해야 한다. PREFIX를
지정하지 않으면 기본값으로 /usr/local/apache2
를
사용한다.
아래는 아파치 웹서버를 컴파일하고 설치하기위한 요구사항부터 컴파일과 설치 과정을 각각 자세히 설명한다.
아파치를 컴파일하기위해 다음과 같은 것들이 필요하다:
PATH
환경변수는 make
와
같은 기본적인 컴파일 도구를 포함해야 한다.ntpdate
나 xntpd
를 사용한다.
NTP 소프트웨어와 공개 시간 서버에 대한 정보는 뉴스그룹
comp.protocols.time.ntp와
NTP 홈페이지를
참고하라.configure
' 스크립트가
이 인터프리터를 찾지 못해도 문제없이 아파치 2.0을
컴파일하고 설치할 수 있다. 다만 지원 스크립트를 사용하지
못할 뿐이다. 여러 Perl 인터프리터가 설치되있다면 (아마도
살때 포함된 Perl 4와 직접 컴파일한 Perl 5)
./configure
가 올바른 것을 찾기위해
--with-perl
옵션을 (아래 참고) 사용하길 바란다.아파치는 여러 미러 목록이 있는 아파치 웹서버 다운로드 사이트에서 다운로드할 수 있다. 그곳에서 최신 안정판을 찾을 수 있다.
다운로드후, 특히 미러 사이트를 사용했다면, 완전하고
변경되지않은 아파치 웹서버임을 확인하는 것이 중요하다.
PGP 서명을 가지고 다운로드한 타볼(tarball)을 검사하여 확인한다.
이 과정은 두 단계를 거친다. 먼저 아파치 웹서버 다운로드
사이트에서 KEYS
파일을 얻는다. (KEYS
파일 자체가 수정되지
않았음을 확인하기위해 이전 아파치 버전의 파일을 사용하거나
공개 키 서버에서 키를 가져오는 것이 좋다.) 키를 (pgp 버전에
따라 다름) 다음 명령어 중 하나로 개인 키 링에 포함한다:
$ pgp < KEYS
혹은
$ gpg --import KEYS
다음 단계는 아파치
웹사이트에서 얻은 PGP 서명을 가지고 타볼을 검사하는
일이다. 서명 파일에 대한 링크는 해당 다운로드 링크 아래나
아파치 배포본
사이트의 특정 디렉토리에서 찾을 수 있다. 서명파일 이름은
소스 타볼 파일명뒤에 .asc
가 붙은 것이다. (또,
pgp 버전에 따라 다름) 다음 명령어중 하나로 배포본을 확인할
수 있다:
$ pgp httpd-2_0_NN.tar.gz.asc
혹은
$ gpg --verify httpd-2_0_NN.tar.gz.asc
다음과 같은 메세지가 나와야 한다.
Good signature from user "Martin Kraemer
<martin@apache.org>".
키 링에 포함된 신뢰관계에 따라 키와 키 서명자 사이의
관계를 확인할 수 없다는 문구가 나올 수도 있다. 그러나 당신이
KEYS
파일를 신뢰한다면 문제가 아니다.
아파치 웹서버 타볼에서 소스를 푸는 작업은 단순히 압축과 tar를 푸는 것이다:
$ gzip -d httpd-2_0_NN.tar.gz
$ tar xvf httpd-2_0_NN.tar
그러면 현재 디렉토리 아래에 배포본의 소스코드를 담은
새로운 디렉토리가 생긴다. 서버를 컴파일하기 전에 그
디렉토리로 cd
해야 한다.
다음 과정은 특정 플래폼과 개인적인 필요에 따라 아파치
소스 트리를 구성하는 일이다. 이를 위해 배포본의 최상위 디렉토리에
있는 configure
스크립트를 사용한다. (아파치
소스 트리의 CVS 버전을 다운로드한 개발자는 이미
autoconf
와 libtool
가 설치되있고,
다음 과정으로 넘어가기 전에 buildconf
를 실행해야
한다. 이는 정식 버전에서는 필요없다.)
모두 기본 옵션을 사용하여 소스 트리를 구성하려면 간단히
./configure
를 입력하면된다. 기본 옵션을 수정하려면
./configure
에 여러 변수와 명령행 옵션을 사용한다.
다른 옵션은 ./configure
명령어 뒤에 위치하지만,
환경변수는 일반적으로 앞에 나온다. 여기서 가장 중요한 옵션은
아파치가 정상적으로 작동하기위해 구성되는 장소이자 아파치가
설치될 장소인 prefix다. 그러나 입맛에 맞는 다른 다양한
옵션들이 있다.
여러분이 선택할 수 있는 가능성을 보여주기위해 다음은
특정 컴파일러와 플래그를 사용하고 나중에 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 --help
이다. 다음은 대부분의 아규먼트와
환경변수에 대한 간단한 설명이다.
autoconf
는 컴파일 환경을 구성하기위해 여러
환경변수를 사용한다. 일반적으로 이 환경변수들은 서버의 기능이
아니라 아파치를 컴파일하는 방법에 영향을 미친다. 이 변수를
configure
를 실행하기 전에 환경에 넣을 수도
있지만, 위의 예와 같이 configure
명령행에 써주는
것이 더 쉽다.
CC=...
CPPFLAGS=...
CFLAGS=...
LDFLAGS=...
LIBS=...
-L
"과
"-l
" 옵션).INCLUDES=...
-Idir
").TARGET=...
[기본값: apache
]NOTEST_CPPFLAGS=...
NOTEST_CFLAGS=...
NOTEST_LDFLAGS=...
NOTEST_LIBS=...
NOTEST
가 안붙은 것들과 같은
기능을 한다. 단, 이 변수들은 autoconf가 기능 검사를 마친후
컴파일 과정에만 영향을 미친다. 그래서 기능 검사중에는
문제를 일으키지만 마지막 컴파일때는 사용해야할 옵션을
포함한다.SHLIB_PATH=...
--help
--quiet
checking...
" 문구를 출력하지
않는다.--verbose
아파치가 설치될 경로명을 지정하는 방법은 현재 두가지다. 첫번째는 디렉토리를 지정하고, 아파치가 그 장소 밑에 설치하는 방법이다.
--prefix=PREFIX
[기본값:
/usr/local/apache2
]아키텍쳐 특유의 파일들을 다른 디렉토리에 설치할 수도 있다.
--exec-prefix=EPREFIX
[기본값:
PREFIX
]두번째로 아파치 설치 경로 위치를 구성하는 더 유연한
방법은 config.layout
파일을 사용하는 것이다.
이 방법을 사용하면 파일의 종류마다 위치를 따로 지정할 수
있다. config.layout
파일은 여러 구성 예를
담고있고, 이를 참고하여 자신만의 구성을 만들 수도 있다.
이 파일 내용은 <Layout FOO>...</Layout>
로
구분되며 FOO
와 같은 이름으로 지칭한다.
--enable-layout=LAYOUT
config.layout
의 해당 레이아웃을 사용하여
설치 경로를 지정한다.아파치는 모듈로 구성된 서버다. 서버 핵심에는 가장 기본적인
기능만이 포함되있다. 여러 모듈은 확장 기능을 제공한다.
구성 과정중에 서버에서 사용하기위해 컴파일할 모듈을 선택해야
한다. 문서에 포함된 모듈 목록을
참고하라. 상태가
"Base"인 모듈은 (예, mod_userdir
) 서버에 기본적으로
포함되므로, 원하지 않는다면 명시적으로 빼줘야 한다. 다른
상태의 모듈은 (예, mod_expires
) 사용하길
원한다면 명시적으로 넣어줘야 한다.
모듈을 컴파일하고 사용하는 방법은 두 가지다. 정적으로
컴파일된 모듈은 아파치 실행파일에 영구히 포함된다.
이외에 운영체제가 동적공유객체(Dynamic Shared Objects, DSO)를
지원하고 autoconf
가 이 사실을 알아낸다면 모듈을
동적으로 컴파일할 수도 있다. DSO 모듈은 아파치
실행파일에 직접 포함되지는 않지만, mod_so
가 제공하는
설정 지시어를 사용하여 실행중에 서버에 포함하거나 뺄 수 있다.
컴파일때 동적 모듈을 포함하면 mod_so는 자동으로 서버에 포함된다.
동적 모듈을 같이 컴파일하지 않고 서버가 DSO를 읽어들일 수 있게
하려면 --enable-so
옵션을 직접 사용해야 한다.
--enable-MODULE[=shared]
=shared
옵션을 붙인다.--disable-MODULE
--enable-modules=MODULE-LIST
--enable-mods-shared=MODULE-LIST
--enable-modules
와
--enable-mods-shared
옵션에서 MODULE-LIST는
모듈명들을 공백으로 구분한 목록이다. 예를 들어
mod_dav
와 mod_info
를
포함하려면 아래 두 가지 모두 가능하다.
./configure --enable-dav --enable-info
나
./configure --enable-modules="dav info"
또, 특별한 키워드 all
이나 most
를
사용하여 한번에 모든 혹은 대부분의 모듈을 포함할 수 있다.
그런후 원하지 않는 모듈은 --disable-MODULE
옵션으로 제거한다. 예를 들어 mod_info
를
제외한 모든 모듈을 DSO로 포함하려면,
./configure --enable-mods-shared=all
--disable-info
표준 모듈들외에 아파치 2.0은 다중처리
모듈 (MPM)을 선택할 수 있다. 오직 한 MPM만을 컴파일
과정에 포함할 수 있다. 각 플래폼의 기본 MPM은
MPM 문서 페이지에 나와있으나,
configure
명령행에서 변경할 수 있다.
--with-mpm=NAME
mpm_name이라는 MPM을 사용한다면, 다음과 같다.
./configure --with-mpm=mpm_name
mod_auth_dbm
과 mod_rewrite
의
DBM RewriteMap
같은
여러 아파치 기능은 정보를 빨리 찾아보기위해 키와 값으로된
간단한 데이터베이스를 사용한다. 아파치는 소스코드에 SDBM을
포함하여, 이 데이터베이스는 항상 사용할 수 있다. 만약 다른
데이터베이스를 사용하려면 다음 configure
옵션을
사용한다:
--with-gdbm[=path]
--with-ndbm[=path]
--with-berkeley-db[=path]
/lib
와
path/include
에서 필요한 파일을 찾게 된다.
마지막으로 path에 헤더파일 경로와 라이브러리 경로를
콜론으로 구분하여 적을 수도 있다.아파치는 사용자 CGI 프로그램을 격리하여 실행할 수 있는 suexec라는 지원 프로그램을 포함한다. 그러나 suexec를 잘못 설정하면 심각한 보안 문제가 생길 수 있다. 그러므로 이 기능을 사용하기 전에 suexec 문서를 주의있게 읽고 고민해야 한다.
이제 다음 명령어 하나로 아파치의 여러 부분을 컴파일할 수 있다:
$ make
여기서 좀 기다려라. 펜티엄 III/리눅스 2.2 시스템에서 기본 구성을 컴파일하는데 약 3분 정도 걸린다. 이 시간은 하드웨어와 포함한 모듈수에 따라 크게 변한다.
이제 다음 명령어로 패키지를 (위의 --prefix
옵션 참고) 지정한 설치 위치 PREFIX에 설치한다:
$ make install
업그레이드한다면 이 설치 과정이 기존 설정파일이나 문서를 덮어쓰지 않는다.
다음으로 PREFIX/conf/
에 있는
설정파일을 편집하여 아파치
웹서버를 설정한다.
$ vi PREFIX/conf/httpd.conf
사용가능한 설정 지시어에 대한 완전한 설명과 이 문서의 가장 최근 판은 docs/manual/이나 http://httpd.apache.org/docs-2.0/에 있는 아파치 설명서를 참고하라.
이제 다음과 같이 아파치 웹서버를 시작할 수 있다:
$ PREFIX/bin/apachectl start
그리고 URL http://localhost/
로 첫 문서를
요청한다. 보게될 웹페이지는 아마도
PREFIX/htdocs/
일 DocumentRoot
아래에 있다. 그리고
다음 명령어로 다시 서버를 중단한다:
$ PREFIX/bin/apachectl stop