Apache HTTP Server

Apache HTTP Server 2.2.26 installation (아파치 웹 서버 설치)

aappsroot·2014년 1월 27일·조회 4,492

1. 설치

아래 스크립트는 Apache HTTP Server 2.2.26을 소스에서 내려받아 빌드하고, 서비스·로그·데이터 디렉터리를 준비하는 예시입니다. 실행 환경에 따라 디렉터리 경로, 사용자 계정, JDK 경로, 패키지 이름이 다를 수 있으니 그대로 실행하기 전에 변수 값을 먼저 확인하는 것이 좋습니다.

참고로 Apache HTTP Server 2.2 계열은 현재 유지보수가 종료된 오래된 버전입니다. 운영 환경에서는 가능한 한 지원 중인 버전을 검토하고, 이 글의 내용은 기존 환경을 재현하거나 과거 설치 절차를 이해하기 위한 참고 자료로 보는 편이 안전합니다.

#!/bin/bash

## Common Variable

export SVC_DIR=/svc1
export LOG_DIR=/log1
export DAT_DIR=/dat1
export REP_DIR=/Downloads
export HTTP_USER=httpuser
export HTTP_VER=2.2.26
export JAVA_HOME=/usr/java7_51

if [ -e /etc/centos-release ]; then
  export INSTALLER=yum
elif  [ -e /etc/lsb-release ]; then
  export INSTALLER=apt-get
else
  export INSTALLER=yum
fi

## Create Directory

mkdir -p ${SVC_DIR}/http
mkdir -p ${LOG_DIR}/http
mkdir -p ${DAT_DIR}/http

## Install Package

${INSTALLER} -y install ant
${INSTALLER} -y install gcc
${INSTALLER} -y install apr-util-devel
${INSTALLER} -y install openssl-devel

## Set Variable

HTTP_SVC_DIR=${SVC_DIR}/http
HTTP_LOG_DIR=${LOG_DIR}/http
FILE_NAME=httpd-2.2.26

## Download HTTP Server

mkdir ${REP_DIR}/http
cd ${REP_DIR}/http
wget http://mirror.apache-kr.org//httpd/${FILE_NAME}.tar.gz
gzip -d ${FILE_NAME}.tar.gz
tar -xvf ${FILE_NAME}.tar

## Compile HTTP Server

cd ${FILE_NAME}
./configure \
  --prefix=${HTTP_SVC_DIR}/${HTTP_VER} \
  --enable-modules=all \
  --enable-mods-shared=most \
  --with-mpm=worker \
  --enable-proxy \
  --enable-proxy-http \
  --enable-proxy-connect \
  --enable-cache \
  --enable-mem-cache \
  --enable-disk-cache \
  --enable-deflate \
  --enable-ssl \
  --with-ssl=/usr/include/openssl
make
make install

## Post Work

mkdir -p ${HTTP_SVC_DIR}/${HTTP_VER}/servers
mkdir -p ${HTTP_LOG_DIR}/${HTTP_VER}/servers
chown -R ${HTTP_USER}:${HTTP_USER} ${HTTP_SVC_DIR}/${HTTP_VER}
chown -R ${HTTP_USER}:${HTTP_USER} ${HTTP_LOG_DIR}/${HTTP_VER}

설치 후에는 바이너리가 정상적으로 생성되었는지 먼저 확인합니다. 예를 들어 설치 경로 아래의 bin/httpd가 존재하는지 확인하고, 설정 파일 문법 검사는 httpd -t 방식으로 수행할 수 있습니다. 실제 기동 전에는 conf/httpd.conf의 포트, 사용자, 로그 경로, 모듈 로딩 여부를 함께 점검하는 것이 좋습니다.


2. 주요 빌드 옵션

Apache HTTP Server 빌드 옵션 중 자주 확인하게 되는 몇 가지만 정리합니다.

  • --enable-mods-shared=most

DSO(Dynamic Shared Object) 방식으로 대부분의 모듈을 공유 객체, 즉 .so 파일로 빌드해 설치합니다. 정적으로 포함하는 방식은 특정 모듈을 추가하려면 다시 빌드해야 하는 경우가 많지만, DSO 방식은 필요한 모듈을 빌드한 뒤 설정에서 로드하는 식으로 비교적 유연하게 운영할 수 있습니다.

  • --with-mpm=worker

MPM(Multi-Processing Module)을 선택하는 옵션입니다. Apache HTTP Server 2.2에서는 대표적으로 preforkworker를 많이 사용하며, 기본값은 일반적으로 prefork입니다. worker는 프로세스와 스레드를 함께 사용하는 방식이고, prefork는 스레드를 사용하지 않는 다중 프로세스 방식입니다. httpd-mpm.conf 설정에 대해서는 조만간 따로 한번 이야기를 해봐야겠지요.

  • --enable-ssl

HTTPS 처리를 위한 SSL/TLS 모듈을 빌드합니다. 이 옵션을 사용하려면 OpenSSL 헤더와 라이브러리가 필요하므로, 아래의 필요 패키지 항목처럼 openssl-devel 계열 패키지가 설치되어 있어야 합니다.

  • --enable-deflate

응답 압축을 위한 mod_deflate를 활성화합니다. 빌드 과정에서 zlib 관련 헤더를 찾지 못하면 configure 단계에서 실패할 수 있습니다.


3. 필요 패키지

다음은 configure 수행 시 발생할 수 있는 오류와 그때 확인할 패키지입니다. 배포판에 따라 패키지 이름은 조금씩 다를 수 있으며, CentOS/RHEL 계열과 Debian/Ubuntu 계열의 이름이 다를 수 있습니다.

checking whether the C compiler works... no
configure: error: in `/Downloads/http/httpd-2.2.26':
configure: error: C compiler cannot create executables

-> C 컴파일러가 없어 발생하는 오류입니다. gcc 패키지를 설치합니다.

checking for zlib location... not found
checking whether to enable mod_deflate... configure: error: mod_deflate has been requested but can not be built due to prerequisite failures

-> zlib 개발 헤더를 찾지 못한 경우입니다. CentOS/RHEL 계열에서는 zlib-devel 패키지를 확인합니다.

no SSL-C headers found
configure: error: ...No recognized SSL/TLS toolkit detected

-> OpenSSL 개발 헤더를 찾지 못한 경우입니다. openssl-devel 패키지를 설치합니다.

패키지를 설치한 뒤에는 이전 configure 결과가 남아 있지 않도록 빌드 디렉터리 상태를 확인하고, 다시 ./configure부터 수행합니다. 오류 메시지는 대부분 필요한 헤더나 라이브러리를 직접 알려주므로, 마지막 몇 줄뿐 아니라 그보다 앞선 checking for ... 부분까지 함께 보는 것이 원인 파악에 도움이 됩니다.

댓글 0

로그인 후 댓글을 남길 수 있습니다.

아직 댓글이 없습니다.