[APM] libpng 설치

 1. libpng 설치

 – 앞에서 설치한 zlib 가 생성한 이미지파일을 png 포멧으로 변형하여 사용하기 위한
라이브러리임. 즉, 포터블네트워크 그래픽라이브러리로서 libpng 는 zlib 이 반드시 설치되어 있어야 함. 이 역시 MRTG
등에서 웹화면 실시간 그래픽표현을 위해 zlib 과 함께 없어서는 안될 라이브러임.

 – 홈페이지 : http://www.libpng.org

 – libpng 다운받기
wget ftp://ftp.superuser.co.kr/etc/libpng-1.2.5.tar.gz
※ 이 페이지에는 libpng-1.2.14.tar.gz 버전이 올려져 있다. 선택은 자유.

 – 압축해제
tar xvfz libpng-1.2.5.tar.gz

 – 디렉토리 이동
cd libpng-1.2.5

 –
libpng 에서는 configure 를 실행하지 않고 기존에 있던 여러종류의 makefile 가운데 linux 버전으로
되어있는 makefile.linux 파일을 cp 로 복사하여 사용함. 이 작업이 config 작업이라 보면 됨.
cp scripts/makefile.linux makefile

 – make test
make test
※ 이 과정에서 gcc 컴파일러는 libpng 관련 목적파일과 헤드파일을 생성해 냄.

 – make install
make install

[APM] zlib 설치

 1. zlib 설치

 – zlib 은 gzip 등으로 압축된 파일을 읽고 쓰기 위해 꼭 필요한 라이브러리임. MRTG 를 이용한 트래픽모니터링 홈페이지를 구축할 때에 반드시 필요함.

 – zlib 홈페이지 : http://www.zlib.org 또는 http://www.gzip.org/zlib

 – zlib 다운받기
wget http://pchero21.com:8080/file_download.php?filename=5949f302fc32ac4895fbe35169d8dc46
또는
wget ftp://ftp.superuser.co.kr/etc/zlib-1.2.1.tar.gz
※ 이 페이지에 올려져있는 zlib의 버전은 zlib-1.2.3.tar.gz 이고 superuser.co.kr 의 버전은 zlib-1.2.1.tar.gz 이다. 참고.

 – 다운을 받았으면 압축을 푼다.
tar xvfz zlib-1.2.3.tar.gz   <– zlib-1.2.3 버전

 – zlib 디렉토리로 이동
cd zlib-1.2.3

 – config 실행
./configure –prefix=/usr/local/zlib
※ –prefix=/usr/local/zlib 는 설치 경로를 지정해 준 것이다. 마음에 안들면 바꿔도 무방. 하지만 설치 경로는 기억해둬야 한다.

 – make 실행
make

 – make install 실행
make install

 설치끝.

[APM] APM 연동설치 및 각종 라이브러리 설치하기

1. APM 을 설치하고 사용하려면 필요한 라이브러리

 – zlib : 가장 보편적으로 사용하는 데이터압축 라이브러리

 – libpng : png 포멧의 이미지파일을 사용하기 위한 포터블 네트워크 그래픽 라이브러리

 – freetype : 텍스트의 이미지툴력등을 하기 위한 공개 폰트엔진

 – jpeg : JPEG 압축/압축해제 라이브러리 소프트웨어

 – gd : 동적이미지 생성 ANSI C 라이브러리

 – libxml12 : XML C 파서( parser )

 – MYSQL : MYSQL 데이터베이스 DDBMS

 – APACHE2 : 아파치 어플리케이션

 – PHP : PHP 인터프리터

 – PHP ZendOptimizer : PHP 코드를 최적화하여 속도를 향상시켜주는 Optimizer

아파치 configure 옵션

옵션

구성 옵션

이 옵션들은 configure 자체 행동에 영향을 준다.
-C
--config-cache
--cache-file=config.cache와 같다.
--cache-file=FILE
검사 결과를 FILE 파일에 캐싱한다. 기본값은 검사 결과를 기록하지 않는다.
-h
--help [short|recursive]
도움말을 출력하고 종료한다. short 아규먼트는 이 패키지 특유의 옵션만을 출력한다. recursive 아규먼트는 포함된 모든 패키지에 대한 짧은 도움말을 보여준다.
-n
--no-create
configure 스크립트를 정상적으로 실행하지만, 출력파일을 만들지 않는다. 이 옵션은 컴파일을 위한 makefile을 만들기 이전에 검사 결과를 확인해볼때 유용하다.
-q
--quiet
실행중에 checking ... 문구를 출력하지 않는다.
--srcdir=DIR
DIR 디렉토리를 소스파일 디렉토리로 지정한다. 기본값은 configure가 있는 디렉토리 혹은 상위디렉토리 ..이다.
--silent
--quiet와 같다.
-V
–version
저작권 정보를 출력하고 종료한다.

설치 디렉토리

이 옵션들은 설치 디렉토리를 지정한다. 설치 위치는 선택한 구조(layout)에 따라 다르다.
--prefix=PREFIX
아키텍쳐에 독립적인 파일을 PREFIX에 설치한다. 기본값은 /usr/local/apache2이다.
--exec-prefix=EPREFIX
아키텍쳐에 의존적인 파일을 EPREFIX에 설치한다. 기본값은 PREFIX 디렉토리이다.
기본적으로 make install/usr/local/apache2/bin, /usr/local/apache2/lib와 같은 위치에 모든 파일을 설치한다. --prefix=$HOME과 같이 --prefix 옵션을 사용하여 /usr/local/apache2 이외의 설치 상위디렉토리를 지정할 수 있다.

디렉토리 구조 지정

--enable-layout=LAYOUT
설치 위치를 LAYOUT 구조에 따르도록 소스코드와 컴파일 스크립트를 구성한다. 구조를 사용하면 파일 종류에 따라 설치 위치를 따로 지정할 수 있다. config.layout 파일에 여러 설정 예가 있고, 이를 참고하여 직접 설정을 만들 수도 있다. 파일에서 각 구조는 <Layout FOO>...</Layout>로 구분되며, 이 부분은 FOO라는 이름의 구조를 나타낸다. 구조의 기본값은 Apache이다.

설치 디렉토리의 자세한 조정

설치 디렉토리를 더 수정한다면 아래 옵션을 사용한다. 각 디렉토리의 기본값은 autoconf가 지정하며, 선택한 구조에 따라 다름을 주의하라.
--bindir=DIR
사용자 실행파일을 DIR에 설치한다. 사용자 실행파일에는 사이트 관리자에게 유용한 htpasswddbmmanage 같은 지원 프로그램도 포함된다. DIR의 기본값은 EPREFIX/bin이다.
--datadir=DIR
아키텍쳐 독립적인 읽기전용 자료를 DIR에 설치한다. datadir의 기본값은 PREFIX/share이다. autoconf에 이 옵션이 있지만 현재 사용하지 않는다.
--includedir=DIR
C 헤더파일을 DIR에 설치한다. includedir의 기본값은 EPREFIX/include이다.
--infodir=DIR
info 문서를 DIR에 설치한다. infodir의 기본값은 PREFIX/info이다. 현재 이 옵션은 사용하지 않는다.
--libdir=DIR
오브젝트코드 라이브러리를 DIR에 설치한다. libdir의 기본값은 EPREFIX/lib이다.
--libexecdir=DIR
프로그램 실행파일을 (즉, 공유모듈) DIR에 설치한다. libexecdir의 기본값은 EPREFIX/libexec이다.
--localstatedir=DIR
변경되는 머쉰별 정보를 DIR에 설치한다. localstatedir의 기본값은 PREFIX/var이다. autoconf에 이 옵션이 있지만 현재 사용하지 않는다.
--mandir=DIR
man 문서를 DIR에 설치한다. mandir의 기본값은 EPREFIX/man이다.
--oldincludedir=DIR
gcc가 아닌 컴파일러를 위한 C 헤더파일을 DIR에 설치한다. oldincludedir의 기본값은 /usr/include이다. autoconf에 이 옵션이 있지만 현재 사용하지 않는다.
--sbindir=DIR
시스템 관리자용 실행파일을 DIR에 설치한다. 시스템 관리자용 실행파일이란 아파치 웹서버를 실행하는데 필요한 httpd, apachectl, suexec 등 서버 프로그램을 말한다. sbindir의 기본값은 EPREFIX/sbin이다.
--sharedstatedir=DIR
변경되는 아키텍쳐 독립적인 자료를 DIR에 설치한다. sharedstatedir의 기본값은 PREFIX/com이다. autoconf에 이 옵션이 있지만 현재 사용하지 않는다.
--sysconfdir=DIR
서버 설정파일 httpd.conf, mime.types와 같은 읽기전용 머쉰별 자료를 DIR에 설치한다. sysconfdir의 기본값은 PREFIX/etc이다.

시스템 종류

다른 시스템에서 실행할 아파치 웹서버를 교차컴파일하기(cross-compile)하기 위한 옵션들이다. 서버를 컴파일한 시스템에서 서버를 실행하는 일반적인 경우, 이 옵션을 사용하지 않는다.
--build=BUILD
도구를 컴파일하는 시스템의 종류를 지정한다. 기본값은 config.guess 스크립트의 결과이다.
--host=HOST
서버를 실행할 시스템의 종류를 지정한다. HOST의 기본값은 BUILD이다.
--target=TARGET
TARGET 시스템 종류를 위한 컴파일러를 만들때 사용한다. 기본값은 HOST이다. autoconf에 이 옵션이 있지만 아파치 웹서버와는 관련이 없다.

기능 선택

이 옵션은 웹서버의 세부 기능을 조절한다.

일반적인 문법

일반적으로 다음 문법을 사용하여 기능을 포함하고 뺀다:
--disable-FEATURE
FEATURE 기능을 뺀다. --enable-FEATURE=no와 같다.
--enable-FEATURE[=ARG]
FEATURE 기능을 포함한다. ARG의 기본값은 yes이다.
--enable-MODULE=shared
해당 모듈을 DSO 모듈로 컴파일한다.
--enable-MODULE=static
포함하는 모듈은 기본적으로 정적으로 링크된다. 이 옵션은 명시적으로 정적 링크를 강제한다.

주의

configurefoo가 없는 경우 --enable-foo를 사용해도 이 사실을 알려주지 않으므로 주의해서 입력해야 한다.

기본적으로 포함하는 모듈

어떤 모듈은 기본적으로 컴파일되기때문에 사용하지 않는다면 명시적으로 빼줘야 한다. 다음 옵션은 특정 모듈을 컴파일 과정에서 제외한다.
--disable-actions
mod_actions가 제공하는 요청에 대한 행동 기능을 사용하지 않는다.
--disable-alias
mod_alias가 제공하는 요청을 파일시스템의 다른 부분으로 대응하는 기능을 사용하지 않는다.
--disable-asis
mod_asis가 제공하는 as-is 파일형을 지원하지 않는다.
--disable-auth
mod_auth가 제공하는 사용자별 접근제어 기능을 사용하지 않는다. 이 모듈은 사용자명과 암호를 일반 문자파일에 저장하는 HTTP Basic Authentication에서 사용한다.
--disable-autoindex
mod_autoindex가 제공하는 디렉토리 목록 기능을 사용하지 않는다.
--disable-access
mod_access가 제공하는 호스트별 접근제어 기능을 사용하지 않는다.
--disable-cgi
비쓰레드 MPM을 사용하는 경우 CGI 스크립트를 지원하는 mod_cgi를 기본적으로 포함한다. 이 옵션을 사용하면 CGI를 지원하지 않는다.
--disable-cgid
쓰레드 MPM인 workerperchild를 사용하는 경우 기본적으로 mod_cgid가 CGI 스크립트를 지원한다. 이 옵션을 사용하면 CGI를 지원하지 않는다.
--disable-charset-lite
mod_charset_lite가 제공하는 문자집합 변환 기능을 사용하지 않는다. 이 모듈은 EBCDIC 시스템에서만 기본적으로 포함한다.
--disable-dir
mod_dir이 제공하는 디렉토리 요청 처리 기능을 사용하지 않는다.
--disable-env
mod_env가 제공하는 환경변수 설정/해제 기능을 사용하지 않는다.
--disable-http
HTTP 프로토콜을 처리하지 않는다. http 모듈은 서버가 웹서버로 동작하는데 기본적인 모듈이다. 대신 다른 프로토콜 모듈을 사용할 경우에만 이 모듈이 유용하다. 자신이 무엇을 하는지 확실히 알지 못한다면 이 옵션을 빼지 마라
주의: 이 모듈은 항상 정적으로 링크된다.
--disable-imagemap
mod_imagemap이 제공하는 서버기반 imagemap 기능을 사용하지 않는다.
--disable-include
mod_include가 제공하는 Server Side Includes 기능을 사용하지 않는다.
--disable-log-config
mod_log_config가 제공하는 로그 설정을 사용하지 않는다. 이 모듈이 없으면 서버의 요청을 로그에 기록할 수 없다.
--disable-mime
mod_mime은 요청한 파일명의 확장자에 따라 파일의 행동과 내용(mime-type, 언어, 문자집합, 인코딩)을 결정한다. (이 모듈을 제거하여) 파일 확장자를 MIME과 연관하지 않는 것을 일반적으로 추천하지 않는다.
--disable-negotiation
mod_negotiation이 제공하는 내용협상 기능을 사용하지 않는다.
--disable-setenvif
mod_setenvif가 제공하는 헤더에 따라 환경변수를 설정하는 기능을 사용하지 않는다.
--disable-status
mod_status가 제공하는 프로세스/쓰레드 감시 기능을 사용하지 않는다.
--disable-userdir
mod_userdir이 제공하는 요청을 사용자별 디렉토리에 대응하는 기능을 사용하지 않는다.

기본적으로 포함하지 않는 모듈

기본적으로 컴파일되는 모듈도 있지만, 모듈을 사용하려면 직접 혹은 mostall 키워드를 사용하여 명시적으로 포함해야 하는 모듈이 있다. 그래서 아래 옵션들을 사용한다.
--enable-auth-anon
mod_auth_anon이 제공하는 익명사용자 접근 기능을 사용한다.
--enable-auth-dbm
mod_auth_dbm은 사용자명과 암호를 DBM형식의 데이터베이스 파일에 저장하는 HTTP Basic Authentication에서 사용한다. 모듈을 사용하려면 이 옵션을 사용한다.
--enable-auth-digest
mod_auth_digest가 제공하는 RFC2617 Digest authentication을 사용한다. 이 모듈은 정보를 일반 문자파일에 저장한다.
--enable-authnz-ldap
mod_authnz_ldap이 제공하는 LDAP기반 인증 기능을 사용한다.
--enable-cache
mod_cache
제공하는 동적으로 생성하는 파일의 캐싱 기능을 사용한다. 매우 부하가 많거나 프록시 서버를 캐싱하는 서버에게 이 실험적인 모듈이
유용할 수 있다. 최소한 한가지 저장관리모듈(storage management module)을 (예를 들어, mod_disk_cachemod_mem_cache) 같이 사용해야 한다.
--enable-cern-meta
mod_cern_meta가 제공하는 CERN 메타파일 지원 기능을 사용한다.
--enable-charset-lite
mod_charset_lite가 제공하는 문자집합 변환 기능을 사용한다. 이 모듈은 EBCDIC 시스템에서만 기본적으로 포함된다. 다른 시스템에서는 직접 포함시켜줘야 한다.
--enable-dav
mod_dav가 제공하는 WebDAV 프로토콜 처리 기능을 사용한다. 독립된 mod_dav_fs 모듈이 파일시스템 자원을 지원한다. 이 모듈은 --enable-dav를 사용하면 자동으로 포함한다.
주의: mod_davhttp 프로토콜 모듈과 같이 사용해야 한다.
--enable-dav-fs
mod_dav_fs가 제공하는 DAV의 파일시스템 자원 지원 기능을 사용한다. 이 모듈은 mod_dav 모듈을 위한 제공자이기 때문에 --enable-dav도 사용해야 한다.
--enable-deflate
mod_deflate가 제공하는 압축전송 인코딩 기능을 사용한다.
--enable-disk-cache
mod_disk_cache가 제공하는 디스크 캐싱 기능을 사용한다.
--enable-expires
mod_expires가 제공하는 Expires 헤더 조절 기능을 사용한다.
--enable-ext-filter
mod_ext_filter가 제공하는 외부 필터 지원 기능을 사용한다.
--enable-file-cache
mod_file_cache가 제공하는 파일 캐싱 기능을 사용한다.
--enable-headers
mod_headers가 제공하는 HTTP 헤더 조절 기능을 사용한다.
--enable-info
mod_info가 제공하는 서버정보 기능을 사용한다.
--enable-ldap
mod_ldap이 제공하는 LDAP 캐싱과 연결풀 기능을 사용한다.
--enable-logio
mod_logio가 제공하는 로그에 헤더와 입출력 바이트수를 기록하는 기능을 사용한다.
--enable-mem-cache
mod_mem_cache가 제공하는 메모리 캐싱 기능을 사용한다.
--enable-mime-magic
mod_mime_magic이 제공하는 MIME type 자동 인식 기능을 사용한다.
--enable-isapi
mod_isapi가 제공하는 isapi 확장을 지원한다.
--enable-proxy
mod_proxy가 제공하는 프록시/게이트웨이 기능을 사용한다. CONNECT, FTP, HTTP에 대한 프록시 기능을 각각 mod_proxy_connect, mod_proxy_ftp, mod_proxy_http 모듈이 제공한다. --enable-proxy를 사용하면 이 세 모듈을 자동으로 포함한다.
--enable-proxy-connect
mod_proxy_connect가 제공하는 CONNECT 요청에 대한 프록시 지원 기능을 사용한다. 이 모듈은 mod_proxy 모듈의 확장이므로, --enable-proxy도 같이 사용해야 한다.
--enable-proxy-ftp
mod_proxy_ftp가 제공하는 FTP 요청에 대한 프록시 지원 기능을 사용한다. 이 모듈은 mod_proxy 모듈의 확장이므로, --enable-proxy도 같이 사용해야 한다.
--enable-proxy-http
mod_proxy_http가 제공하는 HTTP 요청에 대한 프록시 지원 기능을 사용한다. 이 모듈은 mod_proxy 모듈의 확장이므로, --enable-proxy도 같이 사용해야 한다.
--enable-rewrite
mod_rewrite가 제공하는 규칙기반 URL 조작 기능을 사용한다.
--enable-so
mod_so가 제공하는 DSO 기능을 사용한다. --enable-mods-shared 옵션을 사용하면 자동으로 이 모듈을 포함한다.
--enable-speling
mod_spelling이 제공하는 URL에서 일반적인 맞춤법 실수를 고치는 기능을 사용한다.
--enable-ssl
mod_ssl이 제공하는 SSL/TLS 기능을 사용한다.
--enable-unique-id
mod_unique_id가 제공하는 요청마다 유일한 식별자를 만드는 기능을 사용한다.
--enable-usertrack
mod_usertrack이 제공하는 사용자세션 추적 기능을 사용한다.
--enable-vhost-alias
mod_vhost_alias가 제공하는 대량 가상호스트 기능을 사용한다.

개발자를 위한 모듈

다음 모듈은 테스트용으로 개발자에게만 유용하며, 기본적으로 포함하지 않는다. 이 모듈을 사용하려면 다음 옵션을 사용한다. 이 모듈이 필요한지 확실치않다면 사용하지 마라.
--enable-bucketeer
mod_bucketeer가 제공하는 버킷(bucket) 조작 필터를 사용한다.
--enable-case-filter
mod_case_filter의 대문자변환 출력필터 견본을 사용한다.
--enable-case-filter-in
mod_case_filter_in의 대문자변환 입력필터 견본을 사용한다.
--enable-echo
mod_echo가 제공하는 ECHO 서버를 사용한다.
--enable-example
견본 예제모듈인 mod_example을 사용한다.
--enable-optional-fn-export
mod_optional_fn_export가 제공하는 선택적인 함수 엑스포트(exporter)의 예를 사용한다.
--enable-optional-fn-import
mod_optional_fn_import가 제공하는 선택적인 함수 임포트(importer)의 예를 사용한다.
--enable-optional-hook-export
mod_optional_hook_export가 제공하는 선택적인 훅(hook) 엑스포트의 예를 사용한다.
--enable-optional-hook-import
mod_optional_hook_import가 제공하는 선택적인 훅 임포트의 예를 사용한다.

MPM과 제삼자가 만든 모듈

다음 옵션을 사용하여 필요한 다중처리모듈과 제삼자가 만든 모듈을 추가한다:
--with-module=module-type:module-file
제삼자가 만든 모듈을 정적으로 링크할 모듈 목록에 추가한다. 아파치 웹서버 소스 트리의 modules/module-type에서 모듈의 소스파일 module-file을 찾기때문에 그곳에 소스파일이 있어야 한다. 그곳에 파일이 없다면 configuremodule-file이 절대파일경로라고 가정하고 소스파일을 module-type 하위디렉토리에 복사하려고 시도한다.
이 옵션은 소스파일이 한개인 작은 외부 모듈을 추가하는데 유용하다. 더 복잡한 모듈은 개발사가 제공한 문서를 참고해야 한다.

주의

정적으로 링크된 모듈이 아닌 DSO 모듈을 원한다면 apxs를 사용하라.

--with-mpm=MPM
서버의 동작방식을 선택한다. 정확히 한가지 다중처리모듈만을 선택해야 한다. 선택하지 않으면 사용하는 운영체제의 기본 MPM을 사용한다. 사용할 수 있는 MPM에는 beos, leader, mpmt_os2, perchild, prefork, threadpool, worker가 있다.

기타 옵션

--enable-maintainer-mode
디버깅 모드와 컴파일시 경고를 작동한다.
--enable-mods-shared=MODULE-LIST
동적공유모듈로 컴파일할 모듈 목록을 지정한다. 즉, 이 모듈들은 LoadModule 지시어를 사용하여 동적으로 읽어들여야 한다.
MODULE-LIST는 공백으로 구분한 모듈명들을 따옴표로 묶은 목록이다. 모듈명에서 앞에 mod_는 뺀다. 예를 들어:
--enable-mods-shared='headers rewrite dav'
또, 특별한 키워드 allmost를 사용할 수 있다. 예를 들어,
--enable-mods-shared=most
는 대부분의 모듈을 DSO 모듈로 컴파일한다.
--enable-modules=MODULE-LIST
--enable-mods-shared와 비슷하지만, 이 옵션은 열거한 모듈들을 정적으로 링크한다. 즉, 이 모듈들은 httpd 실행하면 언제나 사용할 수 있다. LoadModule로 읽어들일 필요가 없다.
--enable-v4-mapped
IPv6 소켓이 IPv4 연결을 처리할 수 있도록 한다.
--with-port=PORT
httpd가 기다릴 포트를 지정한다. 이 포트번호는 설정파일 httpd.conf를 만들때 쓰인다. 기본값은 80이다.
--with-program-name
다른 실행파일명을 지정한다. 기본값은 httpd이다.

추가 패키지 선택

다음 옵션은 추가 패키지를 선택한다.

일반적인 문법

일반적으로 다음과 같은 문법을 사용하여 추가 패키지를 다룬다:
--with-PACKAGE[=ARG]
패키지 PACKAGE를 사용한다. ARG의 기본값은 yes이다.
--without-PACKAGE
패키지 PACKAGE를 사용하지 않는다. --with-PACKAGE=no와 같다. autoconf에 이 옵션이 있지만 아파치 웹서버와는 관계가 없다.

특정 패키지

--with-apr=DIR|FILE
httpd 소스 배포본에 포함된 Apache Portable Runtime (APR)은 자동으로 웹서버와 같이 컴파일된다. 만약 이미 설치된 APR을 대신 사용하고 싶다면 configure에게 apr-config 스크립트의 경로를 알려주어야 한다. APR가 설치된 절대경로, 파일명, 디렉토리명을 사용할 수 있다. 지정한 디렉토리나 그 디렉토리의 하위디렉토리 binapr-config가 있어야 한다.
--with-apr-util=DIR|FILE
httpd 소스 배포본에 포함된 Apache Portable Runtime Utilities (APU)는 자동으로 웹서버와 같이 컴파일된다. 만약 이미 설치된 APU을 대신 사용하고 싶다면 configure에게 apu-config 스크립트의 경로를 알려주어야 한다. APU가 설치된 절대경로, 파일명, 디렉토리명을 사용할 수 있다. 지정한 디렉토리나 그 디렉토리의 하위디렉토리 binapu-config가 있어야 한다.
--with-ssl=DIR
mod_ssl을 사용하는 경우 configure는 설치된 OpenSSL을 찾는다. 대신 이 옵션을 사용하여 SSL/TLS 도구의 디렉토리경로를 알려줄 수 있다.
--with-z=DIR
(mod_deflate를 사용하는 경우와 같이) 구성에 필요하다면 자동으로 configure는 설치된 zlib 라이브러리를 찾는다. 대신 이 옵션을 사용하여 압축 라이브러리의 디렉토리경로를 알려줄 수 있다.
mod_authn_dbmmod_rewrite의 DBM RewriteMap
같은 아파치 웹서버의 일부 기능은 정보를 빨리 찾기위해 간단한 키/값 데이터베이스를 사용한다. APU에 SDBM이 들어있어서
언제나 최소한 이 데이터베이스는 사용할 수 있다. 다른 종류의 데이터베이스를 사용하고 싶다면 아래 옵션을 사용한다:
--with-gdbm[=path]
path를 지정하지 않으면, configure는 일반적인 검색경로에서 설치된 GNU DBM 헤더파일과 라이브러리를 찾는다. 직접 path를 지정하면 configurepath/libpath/include에서 필요한 파일을 찾는다. 마지막으로 path에 헤더파일 경로와 라이브러리 경로를 콜론을 사이에 두고 같이 적을 수 있다.
--with-ndbm[=path]
--with-gdbm과 같지만 설치된 New DBM을 찾는다.
--with-berkeley-db[=path]
--with-gdbm과 같지만 설치된 Berkeley DB를 찾는다.

주의

DBM 옵션은 APU가 제공하며 APU 구성스크립트로 직접 전달된다. 그래서 --with-apr-util을 사용하여 이미 설치된 APU를 사용한다면 DBM 옵션은 소용이 없다.
웹서버는 여러 DBM 구현을 같이 사용할 수 있다. 실행시 적절한 DBM 종류를 설정할 수 있다.

지원 프로그램을 위한 옵션

--enable-static-support
지원 프로그램을 정적으로 링크된 실행파일로 만든다. 즉, 필요한 라이브러리를 모두 포함하도록 실행파일을 컴파일한다. 이 옵션을 사용하지 않으면 기본값으로 지원 프로그램을 동적으로 링크한다.
--enable-suexec
웹서버가 실행하는 프로세스의 uid와 gid를 설정하는 suexec를 사용하려면 이 옵션을 사용한다. suid 실행파일의 보안상 위험을 모두 알지 못한다면 이 옵션을 사용하지 마라. suexec를 구성하는 옵션은 아래에서 설명한다.
다음 옵션을 사용하여 지원 프로그램별로 정적으로 링크된 실행파일을 만들 수 있다:
--enable-static-ab
ab를 정적으로 링크된 실행파일로 컴파일한다.
--enable-static-checkgid
checkgid를 정적으로 링크된 실행파일로 컴파일한다.
--enable-static-htdbm
htdbm을 정적으로 링크된 실행파일로 컴파일한다.
--enable-static-htdigest
htdigest를 정적으로 링크된 실행파일로 컴파일한다.
--enable-static-htpasswd
htpasswd를 정적으로 링크된 실행파일로 컴파일한다.
--enable-static-logresolve
logresolve를 정적으로 링크된 실행파일로 컴파일한다.
--enable-static-rotatelogs
rotatelogs를 정적으로 링크된 실행파일로 컴파일한다.

suexec 설정 옵션

아래 옵션은 suexec를 자세히 설정한다. 더 자세한 정보는 suEXEC 구성과 설치를 참고하라.
--with-suexec-bin
suexec 실행파일의 경로를 지정한다. 기본값은 --sbindir이다 (설치 디렉토리의 자세한 조정 참고).
--with-suexec-caller
suexec를 실행할 사용자를 지정한다. 이 사용자는 보통 httpd를 실행하는 사용자와 같아야 한다.
--with-suexec-docroot
suexec는 이 옵션으로 지정한 디렉토리 아래에 있는 실행파일만을 실행할 수 있다. 기본값은 --datadir/htdocs다.
--with-suexec-gidmin
suexec에서 지정가능한 최소 GID를 설정한다. 기본값은 100이다.
--with-suexec-logfile
suexec 로그파일명을 지정한다. 로그파일명의 기본값은 suexec_log이고, --logfiledir에 위치한다.
--with-suexec-safepath
suexec가 시작하는 프로세스의 PATH 환경변수값을 지정한다. 기본값은 /usr/local/bin:/usr/bin:/bin이다.
--with-suexec-userdir
사용자 디렉토리에서 suexec가 접근할 수 있는 (실행파일이 있는) 하위디렉토리를 지정한다. 이 설정은 suexec와 (mod_userdir이 제공하는) 사용자별 디렉토리를 같이 사용할때 필요하다. 기본값은 public_html이다.
--with-suexec-uidmin
suexec에서 지정가능한 최소 UID를 설정한다. 기본값은 100이다.
--with-suexec-umask
suexec가 실행하는 프로세스의 umask를 지정한다. 기본값은 사용하는 시스템의 기본 설정과 같다.
top

환경변수

configure의 선택을 무시하거나 관례와 다른 이름이나 위치에 있는 라이브러리와 프로그램을 찾도록 도와주는 유용한 환경변수들이 있다.
CC
컴파일에 사용할 C 컴파일러 명령어를 지정한다.
CFLAGS
컴파일때 사용하길 바라는 C 컴파일러 옵션을 지정한다.
CPP
사용할 C 선처리기 명령어를 지정한다.
CPPFLAGS
C/C++ 선처리기 옵션. 예를 들어, 헤더파일이 관례와 달리 includedir 디렉토리에 있다면 -Iincludedir을 사용한다.
LDFLAGS
링커 옵션. 예를 들어, 라이브러리가 관례와 달리 libdir 디렉토리에 있다면 -Llibdir을 사용한다.

아파치 rewrite 모듈 올리기

mod_rewrite 설치시 도움 될만한 글입니다…
이것은 처음 설치용이 아닌 사용중 추가하는 방법입니다.

cd 아파치설치디렉토리/src/modules/standard
#/usr/local/apache/apxs -c -I/usr/include/gdbm mod_rewrite.c

gcc -shared -o mod_rewrite.so mod_rewrite.o -lgdbm
/usr/local/apache/apxs -i mod_rewrite.so
또는
# apxs -a -i -c mod_rewrite.c

이렇게 하면 됩니다.
-a : active
-i : install

 
에러가 날 경우
# ls -l /usr/include/ndbm.h
-rw-r–r–   1 root     bin         3141 Jan  6  2000 /usr/include/ndbm.h
# ls -l /usr/local/include/ndbm.h
-rw-r–r–   1 bin      bin         2003 May  4  2003 /usr/local/include/ndbm.h
 
# mv /usr/local/include/ndbm.h /usr/local/include/ndbm.h.org
 
vi /usr/local/apache/conf/httpd.conf
#——- 아래 부분 추가 ——-
LoadModule rewrite_module libexec/mod_rewrite.so
Addmodule mod_rewrite.c
#——- 여기까지 ———
/usr/local/apache/apachectl configtest
/usr/local/apache/apachectl restart
 
 
 
[목차]

1. 참고내용 및 관련 문서
2. 아파치 가상 유저 호스트란?(이게 뭡니까?)
3. 네임서버(BIND8)의 설정
4. 아파치에서 “가상 유저 호스트”를 지원하게 하려면?
  4-1. 확인 과정
  4-2. modr_rewrite 모듈 추가
5. 아파치 가상 호스트 설정(httpd.conf)
6. 조그마한 팁
7. 마치며

1. 참고내용 및 관련 문서(다 읽어보질 못했음)

– 아파치 제공 문서 – Module mod_rewrite URL Rewriting Engine :
  http://www.apache.org/docs/mod/mod_rewrite.html

– 아파치 제공 문서 – Rewriting Guide :
  http://www.apache.org/docs/misc/rewriteguide.html

– 아파치 제공 문서 – Dynamically configured mass virtual hosting :
  http://www.apache.org/docs/vhosts/mass.html

– 아파치 제공 문서 – Apache Server Frequently Asked Questions :
  http://www.apache.org/docs/misc/FAQ.html

– A Users Guide to URL Rewriting with the Apache Webserver :
  Ralf S. Engelschall <rse@apache.org>
  http://www.engelschall.com/pw/apache/rewriteguide/

– URL manipulation with Apache Forwarded :
  Ralf S. Engelschall, Christian Reiber
  http://www.heise.de/ix/artikel/E/9612149/

2. 아파치 가상 유저 호스트란?(이게 뭡니까?)

예를 들어, 리눅스 계정 ID가 “san2″이고 도메인이 “linux.ac.kr”이면
http://san2.linux.ac.kr 이 되도록 설정하는 것입니다.

즉,
리눅스 계정($USER)을 추가하면 자동적으로 그 계정이 호스트로 설정되어
아파치의 가상 호스트로 운영하는 것을 의미한다.

물론 수동으로 하나하나씩 막노동(?)으로 네임서버에 각각의 계정을 모두
등록하고 아파치 가상 호스트 섹션에 추가할 수 있지만
조금 비능률적이다.

때문에 네임서버를 조금 건드려 줘야하며(한번 만), 주로 웹호스팅 업체나
이런 서비스를 전문으로하는 업체에서 유용하게 쓰이는 방법이기도 하다.

*주)—————————————————————
몇 개의 호스트만 관리하고 있고 각 계정을 굳지 호스트로 지정할 필요가
없다면 이 방법은 무용지물입니다.
——————————————————————–

3. 네임서버(BIND8)의 설정

부트파일(named.conf)에서 정의한 Public Domain의 zone 파일이
“zone-linux.ac.kr”로 명시되어 있다면,(일반적으로 /var/named 디렉토리)
다음과 같이 편집합니다.

/var/named/zone-linux.ac.kr —————————————–
@       IN      SOA     ns.linux.ac.kr. san2.linux.ac.kr.  (
                                      2000041005 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
        IN      NS      ns.linux.ac.kr.
IN NS ns2.linux.ac.kr.
IN A 192.168.10.3
@       IN      HINFO   “x86 Pentium” “XXX Linux”
;
ns2 IN A 192.168.10.4
; 중간생략
;
; 제일 마지막 줄에 추가
*       IN      A       192.168.10.3
————————————————————————

이름기반 가상 호스트로 운영할 계획이라면,
더이상 www, mail, ns, 등등의 호스틀 추가할 필요는 없다.
반면,
각각의 서비스기능을 하는 호스트를 다른 IP 주소를 사용하면
A 레코드로 각각 다르게 설정해 줄 필요는 분명이 있다.
이점에서 각자 사용 목적에 맞게 네임서버를 설정하길 바랍니다.

앞의 설정에서 눈여겨 볼 설정은 와일드카드 문자(*)를 사용해서
모든(*) 호스트에 대해서 A 레코들로 192.168.10.3의 IP 주소를 지정해
주었다는 점이다.

@ IN A 192.168.10.3
;또는
* IN A 192.168.10.3
*.linux.ac.kr. IN A 192.168.10.3

그럼 어떤 현상(?)이 일어나는지 잠시 네임서버에 질의해 봅시다.
우선, 설정내용을 바꾸었으므로 2차 네임서버를 운영하고 있다면
Serial을 바꾸어줘야함을 잊어서는 안된다.

# ndc reload
#
# nslookup
Default Server:  linux.ac.kr
Address:  192.168.10.3

> linux.ac.kr

Name:    linux.ac.kr
Address:  192.168.10.3

> www.linux.ac.kr

Name:    www.linux.ac.kr
Address:  192.168.10.3

> mail.linux.ac.kr

Name:    mail.linux.ac.kr
Address:  192.168.10.3

이 번에는 무작위 아무 호스트(aabbcc)를 질의해 보자.

> aabbcc.linux.ac.kr

Name:    aabbcc.linux.ac.kr
Address:  192.168.10.3

> exit
#

즉, 네임서버에 와일드카드 문자(*)를 사용해서 모든 호스트를
192.168.10.3의 IP 주소로 지정해 버렸기 때문이다.

이 기능(?)을 이용해서 아파치에서 가상호스트로 지정하는 방법이다.
대충 짐작이 되었으리만 믿습니다.

4. 아파치에서 “가상 유저 호스트”를 지원하게 하려면?

아파치에서 가상 유저 호스트를 지원하게 하려면 아파치 모듈중에서
“mod_rewrite.c”가 필요하다.

4-1. 확인 과정

[경우1] 아파치를 RPM으로 설치했을 경우

아파치 설정 파일(httpd.conf)에

LoadModule rewrite_module     modules/mod_rewrite.so

AddModule mod_rewrite.c

부분이 있는지 확인하다.
일반적으로 rpm 패키지를 제작할 경우 이 모듈을 DSO 기반 모듈로 로딩
하도록 설정되어 있을 것입니다.

[경우2] 아파치를 소스로 직접 컴파일했을 경우

이 경우에는 손수 직접 확인해 줘야한다.
아파치 설치자가 DSO 기반 모듈로 설치했는지 아니면
“Compiled-in modules”으로 설치했는지 이미 알고 있을 것이다.
전자의 경우는 앞의 RPM으로 설치했을 경우와 같이 직접 설정파일을
확인해 본다.
후자의 경우는 다음과 같이 “httpd -l”과 같이 옵션으로 확인하다.

# httpd -l (또는 # /usr/local/apache/bin/httpd -l)
Compiled-in modules:
  http_core.c
  mod_env.c
  mod_log_config.c
  mod_mime.c
  mod_negotiation.c
  mod_status.c
  mod_include.c
  mod_autoindex.c
  mod_dir.c
  mod_cgi.c
  mod_asis.c
  mod_imap.c
  mod_actions.c
  mod_userdir.c
  mod_alias.c
  mod_rewrite.c <—————확인사항
  mod_access.c
  mod_auth.c
  mod_setenvif.c
  mod_php3.c
#

*주)—————————————————————-
일반적으로 아파치를 소스로 직접 컴파일하여 설치했을 경우에는
특별한 옵션이 없는한 mod_rewrite 모듈은 추가되어 있지 않다.
——————————————————————–

필자역시 기존의 소스디렉토리에서 다시 컴파일하여 추가해 줘야하는
단점이 있었다.

4-2. mod_rewrite 모듈 추가 방법

다음의 작업 과정은 현재 이 mod_rewrite.c이 추가되어 있지 않았다는
가정이다.

우선 현재의 아파치 서버를 종료한다.

# killall httpd
#

아파치 서버를 /usr/local/apache에 설치했다면
잠시 다른 이름으로 바꾸어 놓는다.

# cd /usr/local
# mv apache apache_old

전에 아파치를 컴파일 했던 소스 디렉토리가 /usr/local/src/apache_1.3.12
이라면 그곳으로 이동한다.
만약 새로 컴파일할 계획이라면 이하 같은 방법대로 한다.

필자는 전에 PHP를 서드파티 모듈을 추가했으므로 이번에도 똑 같이 해줘야
하는 또 하나의 숙제(?)가 남아 있다.
그러나 그 숙제는 숙제가 아니다.
소스 디렉토리에 config.status 파일을 이용하면 그만이다.

# pwd
/usr/local/apache_1.3.12
#
# cat config.status
——config.status —————————————————
#!/bin/sh
##
##  config.status — APACI auto-generated configuration restore script
##
##  Use this shell script to re-run the APACI configure script for
##  restoring your configuration. Additional parameters can be supplied.
##

./configure
“–with-layout=Apache”
“–prefix=/usr/local/apache”
“–activate-module=src/modules/php4/libphp4.a”
“$@”
———————————————————————–

전에 작업했던 내용이 이 파일(config.status)에 기록되어 있으므로 이 파일을
이용해서 PHP4 모듈도 함께 추가해 보자.

# make clean
#
# ./config.status –enable-module=rewrite
#

이때 주의해야 할점은 “–enable-module=mod_rewrite”가 아니라는 점이다.
“mod_”를 뺀 나머지 모듈이 그 모듈이름이다.

만약 처음으로 아파치를 컴파일할 계획이라면 다음과 같이
중간 단계에서 컴파일 옵션이 필요할 것이다.(PHP4 추가시 포함)

# ./configure
–prefix=/usr/local/apache
–activate-module=src/modules/php4/libphp4.a
–enable-module=rewrite

“” 문자는 적접 입력하는 문자가 아니고 즉 한줄에 계속 이어서 쓴다는 의미입니다.

앞의 예는 Compiled-in modules 형식이다.
만약 DSO 기반 모듈로 사용할 계획이라면, 최소한 다음과 같은 옵션이 필요하다.
(mod_rewrite 모듈만 DSO 방식으로 사용)

# ./configure
–prefix=/usr/local/apache
–activate-module=src/modules/php4/libphp4.a
–enable-module=rewrite <— 주의 꼭
–enable-shared=rewrite

*주)—————————————————————-
–enable-shared=rewrite 옵션은 –enable-shared=so를 포함함.
——————————————————————–

*주)—————————————————————-
DSO 기반 모듈은 Compiled-in modules 모듈보다 아파치 서버 시작시 20%,
실행속도가 5% 정도 느려진다고 아파치 관련 문서에 나와 있다.
——————————————————————–

*참고)————————————————————–
mod_rewrite 모듈을 DSO 방식으로 추가하는 기타 방법

기본적으로 mod_rewrite 모듈은 disable 되어 있다는 점에서
다음과 같은 방법이 가능하다.

1. APXS 유틸리티 사용
# apxs -i -a -c /any/path/to/src/modules/standard/mod_rewrite.c

2. –enable-module=all –enable-shared=rewrite
모든 모듈을 enable 시키고 mod_rewrite만 DSO 방식으로 추가

3. –enable-module=all –enable-shared=max
모든 모듈을 enable 시키고 httpd_core와 mod_so를 제외한 나머지
모듈(mod_rewrite가 포함됨)을 DSO 방식으로 추가

4. –enable-module=rewrite –enable-shared=max
mod_rewrite를 enable 시키고 나머지 enable된 모듈과 함께 DSO 방식으로 추가

5. –enable-shared=remain
아직 enable되어 있지 않은 mod_rewrite 모듈을 포함한 나머지 기본 enable
모듈을 enable시키고 httpd_core와 mod_so를 제외한 나머지 모듈(mod_rewrite
가 포함됨) 을 DSO 방식으로 추가

[–enabl/disable-shared=max 옵션]
바로 이전 옵션에서 enable 되어 있는 모듈에 대해서만 DSO 방식으로
enable/disable.

[–enable-shared=remain 옵션]
바로 이전 옵션에서 enable 되어 있지 않은 모듈을 enable 시키고 이 모듈에
대해서만 DSO 방식으로 enable.

[특별한 옵션이 없는 경우 기본 enable 모듈]
  http_core.c
  mod_env.c
  mod_log_config.c
  mod_mime.c
  mod_negotiation.c
  mod_status.c
  mod_include.c
  mod_autoindex.c
  mod_dir.c
  mod_cgi.c
  mod_asis.c
  mod_imap.c
  mod_actions.c
  mod_userdir.c
  mod_alias.c
  mod_access.c
  mod_auth.c
  mod_setenvif.c
*참고 끝) ————————————————————–

컴파일 옵션 설정이 끝났으면
컴파일과 설치를 다름과 같이 진행한다.

# make
#
# make install

/usr/local/apache 디렉토리에 새로 아파치가 설치되어 있을 것이다.
원하는 모듈이 추가되어 있는지 직접확인해 보자.

# cd /usr/local/apache/bin
# ./httpd -l

  mod_rewrite.c

#
원하는 모듈이 추가되어 있군요…

이번에는 전에 설정해 놓았던 설정파일(httpd.conf)을
다시 복사해 놓자.(같은 버전일 경우)

# cd /usr/local/apache/conf
#
# cp /usr/local/apache_old/conf/httpd.conf .
#

httpd.conf 파일이 덮어쓰기가 될것입니다.

*주)—————————————————————–
아파치 버전 1.3.11과 1.3.12의 설정파일은
그 설정 내용이 조금씩 다르므로 절대로 덮어쓰는 일이 없도록 주의하기
바랍니다.
———————————————————————

만약 rewrite 모듈을 DSO 기반 모듈로 설치했다면
httpd.conf 파일에서


LoadModule rewrite_module ……

AddModule mod_rewrite.c

부분을 확인 및 빼먹지 않도록 주의한다.

5. 아파치 가상 호스트 설정(httpd.conf)

드디어 아파치 가상 호스트 설정 차례입니다.

필자의 경우(예제의 가상의 도메인: linux.ac.kr)는 다음과 같다.
주석으로 설명되어 있습니다.

—–httpd.conf ——————————————————-

ServerName www.linux.ac.kr
DocumentRoot /home/httpd/html

UserDir public_html


# 가상 호스트 설정
NameVirtualHost 192.168.10.3

# 기본이 되는 호스트
<VirtualHost 192.168.10.3>
ServerName www.linux.ac.kr
#
# 다음의 설정은 일반적인 각각의 사용자 URL(~ID)을 ID.domain.com의
# 형태로  Redirect하는 설정이다.
# 꼭 필요하지는 않지만 그럭저럭 괜찮은 서비스 일것 같다.(필자의 생각)
#
RewriteEngine on
RewriteRule    ^/~(([a-zA-Z])[a-z0-9]+) http://$1.linux.ac.kr [R,L]
#
# 다음의 2줄에 대해서 주석을 제거하면 요청한 문서와 DocumentRoot 상에
# 존재하는 문서와 서로 일치하지 않을 경우
# http://www.linux.ac.kr/index.html 파일을 보여주도록 되어 있다.
# 따라서 “ErrorDocument 404″의 의미는 없어지며,
# 이 방법 외에, 원한다면 404 에러코드에 대한 문서를 상위의
# 기본 문서(index.html)로 URL 포워딩할 수 있는 방법도 있다.
#
#RewriteCond   /home/httpd/html/%{REQUEST_FILENAME} !-f
#RewriteRule   ^(.+)    http://www.linu.ac.kr/index.html

</VirtualHost>

# mail 호스트 설정
# “mail”이라는 계정은 /etc/passwd 파일에 존재하지만
# 실제로는 /home/mail로 홈디렉토리를 가지고 있지 않다.
# 때문에 필자의 경우는 mail.linux.ac.kr 호스트에 대해서
# 웹 메일서버스를 위해서 다음과 같이 설정했을 뿐이다.
# 물론 8080 포트로 설정하는 경우도 많다.
# 이 예는 필자의 경우이다.(하나의 리눅스 박스에서)
#
<VirtualHost 192.168.10.3>
ServerName mail.linux.ac.kr
ServerAdmin admin@linux.ac.kr
DocumentRoot /home/httpd/mail
ErrorLog logs/mail.linux.ac.kr-error_log
CustomLog logs/mail.linux.ac.kr-access_log common
#ErrorDocument 401 /401.php
</VirtualHost>

# redhat 호스트 설정
# redhat 계정은 시스템 계정에 포함되어 있지 않은 계정이다.
# 따라서 따로 분류해서 하나의 가상 호스트로 설정할
# 필요가 있는 경우이다.
# 이 예제와 같이 /home/ID 처럼 존재하지 않은 가상 호스트에 대해서
# 중요하다고 생각되는 호스트(예: www, kernel, tip, study)를 별도로
# 가상 호스트로 추가 설정한다.
#
<VirtualHost 192.168.10.3>
ServerName redhat.linux.ac.kr
ServerAdmin admin@linux.ac.kr
DocumentRoot /home/httpd/redhat
ErrorLog logs/redhat.linux.ac.kr-error_log
CustomLog logs/redhat.linux.ac.kr-access_log common
ErrorDocument 401 /401.php
ErrorDocument 404 /404.php
</VirtualHost>

# linux 호스트 설정
# linux 계정은 시스템 계정에 포함되어 있지 계정이다.
# 또한 리눅스 계정에 포함되어 있다하더로도
# 필자의 소견으로는
# http://linux.linux.ac.kr 이라는 이름은 왠지
# 어색할 따름이다.
# 따라서 이 가상 호스트에 대해서 www.linux.ac.kr
# 호스트로 Redirect 지시자로 포워딩하는 예제이다.
# 주의 Redirect / http://www.linux.ac.kr 이 되지 않도록!!!
#
<VirtualHost 192.168.10.3>
ServerName linux.linux.ac.kr
Redirect /index.html http://www.linux.ac.kr/
</VirtualHost>

# 가상 유저 호스트 설정 ##########################################
# 이 글의 가장 핵심적인 내용이며 필자가 말하려는 부분이기도 하다.
#
<VirtualHost 192.168.10.3>
ServerName linux.ac.kr
#
# ServerAlias 지시자를 이용해서 나머지 모든 호스트에 대해서
# 설정한 경우이다.
ServerAlias *.linux.ac.kr
ServerAdmin admin@linux.ac.kr
#
# 다음의 설정은 http://linux.ac.kr을 요청했을 경우에
# http://www.linux.ac.kr 호스트로 URL 포워딩한 예이다.
# 이 설정은 필자의 습관이다.
# 굳지 Redirect 지시지를 사용하지 않고 /home/httpd/html/index.html
# 파일을 보이도록 할 수는 있다.
#DocumentRoot /home/httpd/html
#
Redirect /index.html http://www.linux.ac.kr/
#
#
# 가장 핵심적인 설정 부분이다. 그러나 ………T.T
# 불행히도 필자는 이부분에 대해서 자세하게 설명할 실력이 못된다.
# 다만 아파치 제공문서와 [임대호]님 홈페이지를 참고로 했을 뿐입니다.
# 자신의 환경에 맞게 수정하면 무리가 없을듯 합니다.
#
# Virtual User Hosts
RewriteEngine on
RewriteCond   %{HTTP_HOST}         ^[^.]+.linux.ac.kr$
RewriteRule   ^(.+)                %{HTTP_HOST}$1     [C]
RewriteRule   ^([^.]+).linux.ac.kr(.*) /home/$1/public_html$2
#
ErrorLog logs/users.linux.ac.kr-error_log
CustomLog logs/users.linux.ac.kr-access_log common
# 아래의 두개의 설정은 가상 유저 호스트를 위한 설정이다.
# 즉, 각 가상 유저 호스트의 DocumentRoot에 에러코드문서를
# 모두 만들 필요없이(사용자 몫) 기본 호스트의 에러코드로
# 모두 설정해 주었다.
ErrorDocument 401 http://www.linux.ac.kr/401.php
ErrorDocument 404 http://www.linux.ac.kr/404.php
</VirtualHost>

——————————————————————————

설정이 끝났으면 아파치 서버를 가동한다.
서버를 가동하지 전에 설정 구문이 제대로 맞는지 확인 점검해 보는 습관도 좋다.
#
# httpd -t (또는 /usr/sbin/httpd -t)
또는
# /usr/local/apache/bin/httpd -t
Syntax OK
#

현재 서버가 가동 중이 아니므로…

RPM으로 설치했을 경우,
#
# /etc/rc.d/init.d/httpd start

소스로 컴파일하여 설치했을 경우
#
# /usr/local/apache/bin/apachectl start
#

서버가 정상적으로 시작되면
웹 브라우저로 테스트해 본다.
또한,
새로운 계정을 추가하여 제대로 작동하는지 확인해 보시길 바랍니다.

예 :
http://san2.linux.ac.kr/

6. 조그마한 팁

필자는 RedHat 리눅스 외에 다룰 줄 아는 리눅스 배포본은 없다.
따라서 다음에 나오는 팁은 당연히 레드햇 기준입니다.

*팁1)
사용자 추가시 기본 웹 디렉토리(public_html)와 index.html 파일

사용자 “기본 웹 디렉토리”라 함은 아파치 설정 파일에서
UserDir 지시자에 의해서 명시한 디렉토리를 말한다.
일반적으로 public_html 이나 Public_html, wwwhome, html …. 등등으로
아파치 서버 관리자가 설정하기 나름이다.

필자의 경우는 Public_html으로 바꾸어 사용한다.(대문자 P, 필자의 습관)
#
# cat httpd.conf | grep UserDir
  UserDir Public_html
#
따라서 다음과 같이 이름을 미리 바꾸어 놓음으로써 다음 계정 추가시 자동적으로
UserDir과 맞도록 설정한다.

#
# cd /etc/skel
# ls -hl
total 12k
drwxr-xr-x   5 root     root         4.0k Feb 24 03:34 Desktop/
drwx——   2 root     root         4.0k Jun  8  1999 Mail/
drwx——   2 root     root         4.0k Feb 25 01:54 public_html/
#
# mv public_html Public_html
#
# chmod 701 Public_html
#
# ls -hl
total 12k
drwxr-xr-x   5 root     root         4.0k Feb 24 03:34 Desktop/
drwx——   2 root     root         4.0k Jun  8  1999 Mail/
drwx—–x   2 root     root         4.0k Feb 25 01:54 Public_html/
#

그 다음 index.html 파일은 아파치 설정파일에서 DirectoryIndex 지시자에 의해서
명시된 우선적인 파일을 의미한다.
즉,(리눅스 초보자에 해당되는 설명) 웹에서 특정 디렉토리에 접근할 경우 자동으로
보여주는 문서를 말합니다.

DirectoryIndex index.html index.htm index.php3 index.cgi index.phtml index.shtml

따라서 필자는 다음과 같이 미리 index.html 파일을 생성해 주었다.
#
# pwd
/etc/skel
# cd P* (또는 cd Public_html)
# pico index.html (또는 index.php)

# cat index.html ————————————————————–
<?
//$server_name = “$SERVER_NAME”;
//$http_host = “$HTTP_HOST”;
//$user = eregi_replace(“.$server_name”, “”, $http_host);
$user = eregi_replace(“.$SERVER_NAME”, “”, $HTTP_HOST);

?>

<html>
<head>
<META HTTP-EQUIV=”Content-Type” CONTENT=”text/html; charset=EUC-KR”>
<title>welcome to <? echo $user ?> HomePage !!!</title>
</head>

<body bgcolor=white>

<p>
&nbsp;
<p>
<center> <font color=blue size=3> 환영합니다.</font>
<br>
여기는
<a href=mailto:<? echo $user ?>@<? echo $SERVER_NAME ?>>
<? echo $user ?></a>
의 홈페이지 입니다.
<p>http://<? echo $HTTP_HOST ?>

</body>
</html>
———————————————————————————-

물론, DB를 사용하여 사용자 이름을 깔끔하게 표시하면 금상첨화이겠지요…
필자가 웹 프로그램에 대해서 거의 맹~~ 수준이라서 고작 USER(사용자)를 표시한다는 것이
이 정도 수준밖에………..T.T(죄송)

*팁2)
사용자 홈디렉토리 퍼미션

레드햇 리눅스는 사용자를 새로 추가할 경우 기본 퍼미션은 700 이다.
즉 사용자(소유자)만 읽기/쓰기/실행하도록 디렉토리 퍼미션이 주어진다.
따라서 당연히,
웹디렉토리(Public_html) 퍼미션이 701, 755이다하더라도 사용자 홈디렉토리 퍼미션이
700이므로 웹에서는 접근할 수 없다.

그렇기 때문에 사용자 추가시 자동적으로 701 정도의 퍼미션이 되도록 설정해 주는것
한가지 방법인듯 하다.
방법은 다음과 같다.

# ls /etc/login*
/etc/login.defs
#
# pico /etc/login.defs

—–/etc/login.defs ————————————————————-


# 제일 마지막줄이나 적당한 위치에 다음 한줄을 추가한다.
UMASK 076
———————————————————————————–

이제 새로 추가할 사용자 디렉토리 퍼미션은 701이 될것이다.
참고로 퍼미션이 755가 되게하려면 “UMASK 022″으로 수정한다.

7. 마치며

매번(?) 글을 쓸때마다 느낌점이 있다면, 역시 글을 쓴다는 것은 한편으로 즐겁기도
하면서 한편으로는 제 자신을 애석하게 만들더군요.
(지식의 한계로 인한 “끙끙거림 = 키보드 위에 쌓인 머리카락)

급하게(?) 테스트하고 올린 내용이라서 오타 및 잘못된 설정이 있으리라 생각됩니다.
잘못된 점이 있으면 지적해 주셨으면 감사하겠습니다.

이 문서는 어느 누구도 전체 또는 부분을 복제 및 수정해서 재배포할 수 있으며
자신의 홈페이지에 링크 또는 자신의 홈페이지에 올려놓아도 상관없습니다.
또한 상업적으로 이용할 계획이라도 본 필자에게 문의 메일없이 사용할 수
있습니다
즉,
이 문서에 대해서는 사용상 어떠한 제한이 없음을 알려드립니다.
원작성자를 표기하지 않아도 상관없으며, 필요하다고 생각되면 원작성자를
표기해도 상관없습니다.

단,
사용상의 문제점등으로 피해를 있었을 경우, 본인에게 어떠한 법률적인 책임이
없음을 미리 공지하는 바입니다.

..

본 문서의 보완이나 잘못된 점이 있으면
아래의 본인의 홈페이지 질문과 답변란 게시판을 이용해 주셨으면 고맙겠습니다.

http://www.linuxchannel.net/

끝까지 읽어 주셔서 감사합니다.
——–end————————————————————————