2011. 12. 5. 10:33ㆍ개발/서버
apax (APache eXtension)
1. 아파치 http 서버의 확장모듈을 컴파일하고 설치하는 도구
2. 아파치에 모듈을 추가하고자 할때 아파치 소스파일을 "./configure" 을 이용하여 재컴파일 하는 방법도 있지만..
아파치 소스코드가 존재하지 않을때 모듈을 간단이 DSO화일로 만들때 사용하는 도구이다.
-> DSO 화일이란? Dynamic Shared Object : LoadModule 을 사용해서 동적으로 동작하는 모듈 화일.
* DSO가 아닌 모듈은 아파치 검파일시 --add_module, --enable-module, --disable-module 이용하여 정적으로 동작하는 모듈이다. (config.status에 --enable-module, --disable-module 리스트 있다.) - AddModule 지시어를 사용한다.
-> LoadModule : mod_so 모듈에서 제공하는 지시어.
3. apax를 사용하려면 플랫폼이 DSO기능을 지원하고, 아파치 httpd 실행화일을 mod_so 모듈과 같이 컴파일 해야한다.
(확인하는 방법 : "httpd -l" 을 실행했을때 mod_so 모듈이 나와야한다.)
-----------------------------------------------------------------------------------
$ apxs -i -a -c mod_foo.c
gcc -fpic -DSHARED_MODULE -I/path/to/apache/include -c mod_foo.c
ld -Bshareable -o mod_foo.so mod_foo.o
cp mod_foo.so /path/to/apache/modules/mod_foo.so
chmod 755 /path/to/apache/modules/mod_foo.so
[activating module `foo' in /path/to/apache/etc/httpd.conf]
$ apachectl restart
/path/to/apache/sbin/apachectl restart: httpd not running, trying to start
[Tue Mar 31 11:27:55 1998] [debug] mod_so.c(303): loaded module foo_module
/path/to/apache/sbin/apachectl restart: httpd started
-----------------------------------------------------------------------------------
* -c 뒤의 화일들은 확장자를 보고 소스화일(.c), 오브젝트화일(.o), 라이브러리모음(.a)로 구분해서 알아서 컴파일 or 링크한다고 한다. 똑똑한 녀석..
* 컴파일한 오브젝트를 사용하려면 반드시 위치독립코드(PIC:Position Independent Code)로 컴파일 해야한다고 한다.(gcc 에선 -fpic 옵션)
-> PIC : 적재시에 메모리의 어떤 주소에 적재되더라도 정상적으로 실행될 수 있는 코드
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
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.3.X 버젼에서 mod_rewrite 적재
아파치소스(./configure 명령을 한번도 내리지 않은 원본소스를 말함) 디렉토리에서
# ./configure --enable-module=rewrite
# cd src/modules/standard
# gcc -shared -o mod_rewrite.so mod_rewrite.o
# cp mod_rewrite.so /usr/local/apache/libexec/
2.X 버젼에서
./modules/mappers/mod_rewrite.c 위치에 있다.
# /usr/local/apache/bin/apxs -c -I/usr/include/gdbm mod_rewrite.c
# gcc -shared -o mod_rewrite.so mod_rewrite.o -lgdbm
# /usr/local/apache/bin/apxs -i mod_rewrite.so
에러 처리
다음 에러가 발생 할수도 있다 .
/usr/bin/ld: cannot find -lgdbm
collect2: ld returned 1 exit status
이때는 yum install gdbm-devel 패키지 설치한다.
--------------------
mod_header.c 추가 방법
modules/metadata 에 있다.
위와 동일
/usr/local/apache/bin/apxs -c -I/usr/include/gdbm mod_headers.c
gcc -shared -o mod_headers.so mod_headers.o -lgdbm
/usr/local/apache/bin/apxs -i mod_headers.so
아파치 압축 전송 apache2 mod_deflate (gzip) 설치
/modules/filters/mod_deflate.c 에 있음
/usr/local/apache/bin/apxs -c -I/usr/include/gdbm mod_deflate.c
gcc -shared -o mod_deflate.so mod_deflate.o -lgdbm
/usr/local/apache/bin/apxs -i mod_deflate.so
1.3 에서 쓰던 mod_gzip 은 사라지고, 2.x 부터는 mod_deflate 이 대신
gzip compress 기능을 활성화 하기 위해 httpd.conf 파일에 들어갔던 세팅입니다 (apache 2.0 기준 :: windows 설치 버전) 1. 아래 모듈의 주석("#")을 해제하거나 없을 시에는 작성. # 압축을 위한 모듈 LoadModule deflate_module modules/mod_deflate.so # 헤더 제어를 위한 모듈 LoadModule headers_module modules/mod_headers.so 2. 타입에 의한 설정을 이용하였습니다 (다른 방법도 있음) 압축률은 1~9까지 있는데 크게 차이는 없더군요, 테스트결과 1이 더 느린거 같아서 저는 9로 했습니다 (최대압축률:9 ~ 최소압축률:1) ######################################################################## # 타입에 따라 압축을 한다 (text파일 위주) ######################################################################## AddOutputFilterByType DEFLATE text/html text/plain text/xml # 압축률을 설정한다. DeflateCompressionLevel 9 ######################################################################## 3. 브라우저 따라 문제가 있는 것 같더군요 그외 압축을 회피할 경우에 대해 설정합니다(이미 압축이 되어있는 형식의 파일, 압축시 간헐적으로 FF에서 문제가 생기는 파일등) ######################################################################## # 압축을 하지 않을 경우 지정 ######################################################################## # Netscape 4.x에 문제가 있다... BrowserMatch ^Mozilla/4 gzip-only-text/html # Netscape 4.06-4.08에 더 문제가 있다 BrowserMatch ^Mozilla/4\.0[678] no-gzip # MSIE은 Netscape라고 자신을 알리지만, 문제가 없다 BrowserMatch \bMSIE !no-gzip !gzip-only-text/html # 압축하지 않을것목록.. SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|bmp|zip|tar|rar|alz|a00|ace|mp3|mpe?g|wav|asf|wma|wmv|swf|exe|pdf|doc|xsl|hwp|java|c|t?gz|bz2|7z)$ no-gzip dont-vary # 프록시가 잘못된 내용을 전달하지않도록 한다 Header append Vary User-Agent env=!dont-vary ########################################################################
구글 페이지 개선 모듈 Mod_pagespeed
http://code.google.com/intl/ko/speed/page-speed/download.html
-- 아직은 비추
libxml2.so 모듈 추가
64비트는 LoadFile /usr/lib64/libxml2.so
컴파일 이후에 추가해야 하는 라인도 아파치 버젼에 따라 다릅니다.
[출처] 아파치 모듈 추가하기 (apax)|작성자 줄리
'개발 > 서버' 카테고리의 다른 글
ipconfig /flushdns (0) | 2011.12.13 |
---|---|
공개 네트워크 모니터링 툴 [Ethereal] (0) | 2011.12.13 |
vsftp (0) | 2011.12.05 |
libqrencode (0) | 2011.11.15 |
sendmail (0) | 2011.11.05 |