1. 개요
Apache HTTP Server 2.4를 설치하면서 발생할 수 있는 이슈와 해결 방법을 공유합니다. 아래 내용은 주로 CentOS 6.4 환경에서 소스 빌드할 때 겪은 사례를 기준으로 정리했습니다.
설정을 수정한 뒤에는 바로 재기동하기보다 먼저 설정 문법을 확인하는 것이 좋습니다. 일반적으로 apachectl configtest 또는 httpd -t로 확인할 수 있으며, 사용하는 설치 경로와 실행 파일 이름에 따라 명령은 달라질 수 있습니다.
2. apr, apr-util 사전 설치 필요
Apache HTTP Server 2.4.*는 APR 1.4 이상을 요구합니다. 하지만 CentOS 6.4 기준으로 yum을 통해 설치 가능한 APR은 1.3.9입니다. 따라서 APR 소스를 내려받아 수동으로 빌드하는 작업이 필요합니다.
만일 APR 버전이 1.4 미만이라면 빌드 시 다음과 같은 오류가 발생할 수 있습니다.
STDERR: configure: WARNING: APR version 1.4.0 or later is required, found 1.3.9 configure: WARNING: skipped APR at apr-1-config, version not acceptable configure: error: APR not found. Please read the documentation.
2014년 8월 기준으로는 apr-1.5.1, apr-util-1.5.3을 설치하면 됩니다. 관련 파일과 문서는 http://apr.apache.org를 참조하세요.
소스 빌드 환경에서는 APR과 apr-util을 먼저 설치한 뒤, Apache HTTP Server의 configure 단계에서 해당 경로를 올바르게 찾는지 확인해야 합니다. 여러 버전의 APR이 함께 설치되어 있다면 오래된 apr-1-config가 먼저 잡히지 않는지도 점검하는 것이 좋습니다.
3. AH01177: Failed to lookup provider 'shm' for 'slotmem': is mod_slotmem_shm loaded??
빌드 후 기동 시 다음과 같은 메시지가 발생할 수 있습니다.
AH01177: Failed to lookup provider 'shm' for 'slotmem': is mod_slotmem_shm loaded??
이 오류는 공유 메모리 기반 slotmem provider를 제공하는 mod_slotmem_shm 모듈이 로드되지 않았을 때 발생할 수 있습니다. httpd.conf에서 아래 LoadModule 라인의 주석을 제거하면 됩니다.
LoadModule 예제입니다.
LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
아래처럼 여러 LoadModule 설정이 모여 있는 영역에서 해당 모듈이 주석 처리되어 있지 않은지 확인하세요.
LoadModule mime_module modules/mod_mime.so #LoadModule ldap_module modules/mod_ldap.so LoadModule log_config_module modules/mod_log_config.so #LoadModule log_debug_module modules/mod_log_debug.so #LoadModule logio_module modules/mod_logio.so LoadModule env_module modules/mod_env.so #LoadModule expires_module modules/mod_expires.so LoadModule headers_module modules/mod_headers.so #LoadModule unique_id_module modules/mod_unique_id.so LoadModule setenvif_module modules/mod_setenvif.so LoadModule version_module modules/mod_version.so #LoadModule remoteip_module modules/mod_remoteip.so
수정 후에는 설정 테스트를 실행해 같은 오류가 다시 발생하는지 확인한 다음 Apache를 재기동합니다.
4. Either all Options must start with + or -, or no Option may.
Apache HTTP Server 2.2에서 사용하던 아래 설정을 2.4로 그대로 가져오면 오류가 발생할 수 있습니다.
Options -Indexes FollowSymLinks
Options 지시어에서는 옵션을 혼합해서 사용할 때 모든 항목에 + 또는 -를 명시하거나, 아무 항목에도 붙이지 않아야 합니다. 따라서 다음과 같이 명시적으로 +, -를 포함해야 합니다.
Options -Indexes +FollowSymLinks
설정 파일 전체에서 같은 패턴이 반복될 수 있으므로, 2.2 설정을 2.4로 이전할 때는 Options 지시어를 함께 점검하는 것이 좋습니다.