가끔 서버에 파일을 업로드하거나 다운로드 할 때 해당 파일의 용량이 얼마나 되는지 알아야 할 때가 있다. 이런 때 아파치 로그로 I/O가 된 Byte를 표기해야 하는데 아래와 같은 설정을 하면된다.
( 새로 Apache를 설치하는게 아니라 동작하고 있는 녀석에 모듈을 추가하는 것이다. )

우선 내가 작업한 환경은 apache-2.0.63 이다.

우선 http://httpd.apache.org/download.cgi 여기서 아파치를 다운 받는다.
다운로드 (http://mirror.apache-kr.org/httpd/httpd-2.0.63.tar.gz)

서버에서 작업 중이라면

/]wget http://mirror.apache-kr.org/httpd/httpd-2.0.63.tar.gz 

이렇게 명령어를 하면 파일이 다운받아진다.

그리고 다운받은 녀석의 압축을 푼다.

/]tar xvf httpd-2.0.63tar.gz

하면 압축이 줄줄 풀린다. 

그리고 logio.c가 있는지 확인하기 위해 디렉토리 이동을 한다.
/]cd /httpd-2.0.63/modules/loggers

그 안에 mod_logio.c가 있는지 확인이 되었으면 다시 /]로 돌아가서 configure 파일을 만든다.

/]./configure --enable-mods-shared=logio --prefix=/apache

이러면 checking 하면서 설정할 파일들이 제대로 있는지 확인하고나서 configure 파일을 만들게 된다.

그리고 예전에 make 파일을 지우기위해 다음과 같은 명령어를 쓴다.

/]make clean

그럼 예전에 make 파일 만든게 몽땅 삭제된다.

그리고 나서 logio만 make하기 위해 modules/loggers 밑으로 이동한다.

/]cd modules/loggers

그다음 make 명령어로 make 파일을 만든다.
modules/loggers] make
/httpd-2.0.63/srclib/apr/libtool --silent --mode=compile gcc  -g -O2 -pthread    -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -DAP_HAVE_DESIGNATED_INITIALIZER   -I/httpd-2.0.63/srclib/apr/include -I/httpd-2.0.63/srclib/apr-util/include -I. -I/httpd-2.0.63/os/unix -I/httpd-2.0.63/server/mpm/prefork -I/httpd-2.0.63/modules/http -I/httpd-2.0.63/modules/filters -I/httpd-2.0.63/modules/proxy -I/httpd-2.0.63/include -I/httpd-2.0.63/modules/generators -I/httpd-2.0.63/modules/dav/main -prefer-non-pic -static -c mod_log_config.c && touch mod_log_config.lo
/httpd-2.0.63/srclib/apr/libtool --silent --mode=link gcc  -g -O2 -pthread    -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -DAP_HAVE_DESIGNATED_INITIALIZER   -I/httpd-2.0.63/srclib/apr/include -I/httpd-2.0.63/srclib/apr-util/include -I. -I/httpd-2.0.63/os/unix -I/httpd-2.0.63/server/mpm/prefork -I/httpd-2.0.63/modules/http -I/httpd-2.0.63/modules/filters -I/httpd-2.0.63/modules/proxy -I/httpd-2.0.63/include -I/httpd-2.0.63/modules/generators -I/httpd-2.0.63/modules/dav/main -module -export-dynamic    -o mod_log_config.la mod_log_config.lo
make[1]: Leaving directory `/httpd-2.0.63/modules/loggers'

이러면 apache의 modules아래 mod_logio.so 라는 파일이 만들어졌을 것이다.

그럼 이제 apache/conf 에 가서 로그 설정만 해주면 된다.

apache/conf]vi httpd.conf

맨 아래에 LoadModule logio_module modules/mod_logio.so 요걸 추가해준다.

이거 추가하면 아파치가 이 모듈을 로딩한다는 것이다. 그리고 로그 포멧 중 맨 마지막 combined 라고 된 녀석에 뒤에

%I %O를 추가해주면 된다.

LogFormat "%h %D %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combined

그리고 저장하구 나와서

apache/bin]./httpd -t

해서 문법이 맞는지 확인 한다.
Syntax OK 이렇게 나오면 잘 한 것이다.

이제 아파치 설정을 적용한다.

apache/bin] ./apachectl graceful

끝~ 이제 access 로그 뒷 쪽에 보면 해당 I/O 값들이 붙어서 날아 올 것 이다.





Posted by 서오석
,