웹서버를 운영하면서.. 로그 관리라는 걸 하게 되었습니다.
로그 파일이 커지면 일단 웹서버가 느려지고 보통의 경우 /var/log에 로그 관리를 했는데
(님들은 어떻게 하시는 지 모릅니다..^^) 저의 경우 /var에 메모리 할당을 적게 하기 때문에
주기적으로 지워주기 위해 logrotate를 썼는데 컴파일이 잘 안되더군요.(참고로 전 스크래칭
리눅스를 사용하고 있습니다..^^) 그리고 cron디몬이 root로 뿌려대는 메일의 양도 만만치
않더군요. 특히나 제가 webalizer를 깔고 5분마다 한번씩 돌려주었기 때문에..-_-;;
그래서 다른 방법을 찾아보다가 로그를 디비로 관리하는 걸 우연치 않게 발견해서 그냥
맨날 보고 가기 미안한 마음도 있구해서리...그야말로 1전짜리 팁을 하나 제공하고자 합니
다. 이 아파치 모듈은 포스트그래스를 이용합니다. 전 포스트그래스와 MySQL을 동시에 사용
하고 있는데요. 일단 포스트그래스는 MySQL에 비해 시스템 리소스를 덜먹습니다.(디몬자체
는..)물론 쿼리속도는 MySQL이 짱이지요. 따라서 극한의 빠른속도가 필요한 항목이 아닌 경
우엔 오히려 MySQL보다 나은점이 많이 있는것같구요. 저는 초보라(디비에 있어선..) 잘 모르
겠습니다만은 포스트그래스가 고급기술이 더 많이 채용되어 있다고 하네용.^^ 근데 사실
제가 운영하는 소형 웹서버에서는 거의 상관이 없을 정도로 속도가 그렇게 나쁘다고 생각
되지는 않습니다. 이 모듈은 아파치를 첨부터 다시 컴파일을 할 필요가 없습니다...모듈만
컴파일해서 그냥 httpd.conf 에 올려주기만 하면 되더군요.
*설치
PostgreSQL의 설치는 설명하지 않겠습니다. http://kltp.kldp.org에 좋은 팁들이 많이 있더군요.
일단 그냥 하시던대로 아파치를 컴파일하십시오. rpm으로 해도 상관은 없는 듯합니다.
이 부분도 많은 하우투들이 있으니 참고하세요.
저의경우엔, MySQL,PostgreSQL,php,mod_gzip을 미리 컴파일하였습니다.
모듈소스코드 다운로드 : http://download.extreme-ware.com/ 무슨 소프트웨어 회사인거 같은데요..
.Open Source Project라는 항목 3번째에 mod_pgsqllog 항목이 있습니다. 다운로드 받으세요..
압축푸세용.
#zcat mod_pgsqllog-0.4.tar.gz|tar xvf -
#cd mod_pgsqllog-0.4
#ls
COPYING INSTALL create-table.sql src
일단 INSTALL을 잘 읽으세요..하우투가 있더라도..특정한 문제엔 INSTALL을 보는 게 좋더구만
요. 제 경험...^^
src디렉으로 이동합니다. 컴파일해야죵...^^
#cd src
#ls
Makefile mod_pgsqllog.c mod_pgsqllog.h
다음 Makefile을 vi나 기타 좋아하시는 에디터로 편집하세요.
#vi Makefile
<<<<<파일의 시작
##
## Makefile -- Build procedure for sample pgsqllog Apache module
## Autogenerated via ``apxs -n pgsqllog -g''.
##
# the used tools
APXS=apxs //<-아파치에 포함되어 있는 apxs가 있는 위치로 바꿔주세요..
APACHECTL=apachectl//<-마찬가지..만약 아파치를 /usr/local/apache에 깔았다면..이부분은 /usr/local/apac
he/bin/apachectl이라고 하면 됩니다. # additional defines, includes and libraries
#DEF=-D_DEBUG -D_TRACE_C_CALLS -D_TRACE_POSTGRESQL
INC=-I/usr/local/pgsql/include // <-postgres를 깐위치..저의경우 prefix를 /usr/local/pgsql에 두었으니 이
렇게 되었겠지요? LIB=-L/usr/local/lib -lpq -L/usr/local/pgsql/lib -lpq // <-마찬가지입니다.
# the default target
all: mod_pgsqllog.so
# compile the shared object file
mod_pgsqllog.so: mod_pgsqllog.c
$(APXS) -c $(DEF) $(INC) $(LIB) mod_pgsqllog.c
# install the shared object file into Apache
install: all
$(APXS) -i -a -n 'pgsqllog' mod_pgsqllog.so
# cleanup
clean:
-rm -f mod_pgsqllog.o mod_pgsqllog.so
# simple test
test: reload
lynx -mime_header http://localhost/pgsqllog
# install and activate shared object by reloading Apache to
# force a reload of the shared object file
reload: install restart
# the general Apache start/restart/stop
# procedures
start:
$(APACHECTL) start
restart:
$(APACHECTL) restart
stop:
$(APACHECTL) stop
<<끝...
제가 주석달아놓은 그부분만 수정하시면 되구요..
일단 올바르게 수정되었으면 make하세요.
#make
#make install <-이렇게 해주면..아파치의 prefix에 libexec에 바이너리가 자동으로 들어가구..
httpd.conf도 고쳐줍니당...
이제 디비를 만들어주어야겠지요..
일단 postgresql을 다룰수 있는 계정으로 접근하세요. 보통의 경우 postgres란 이름의 계정을 만
들지요.
#su - postgres
디비를 만들어줍니다.
$createdb apache
CREATE
다음 디비를 사용할 사용자를 만들어줍니다.
$psql
>CREATE USER "apache" WITH SYSID 1012 PASSWORD '사용할패스워드' CREATEDB NOCREATEUSE
R VALID UNTIL '2038-01-18 00:00:00+09';
>q
다음 소프트웨어 배포시 나오는 sql파일을 덤프하세요.
원래 배포되는 사이트에서 나온 sql파일은 테이블이름이 apachelog로 되어 있을 겁니다.
맘에 안드시면 바궈도 됩니다. 그럼 뒤에 httpd.conf에 table항목을 그 이름으로 바꿔주면 되겠
지요. #psql apache < create-table.sql
이제 모든 준비는 끝났습니다.
httpd.conf에 디비 접속정보를 넣어주어야겠군요.
INSTALL파일을 읽어보면 LoadModule이나 Addmodule을 넣어주어야 한다는데 그건 make install시에
다 됩니다. 따라서....
<IfModule mod_pgsqllog.c>
PgSqlLogHost localhost
PgSqlLogPort 5432
PgSqlLogDatabase apache
PgSqlLogUsername apache
PgSqlLogPassword 사용할패스워드
PgSqlLogTable apachelog
</IfModule>
이것만 넣어주세요.
아파치 리부팅.
#apachectl restart
다음 확인해보세요.
$psql apache
$select * from apachelog;
만약 돌아간다면...httpd.conf에 access로그 관련을 모두 날리세요.(인스톨파일에는 중복-dual-
관리가 가능하다고 말하고 있으나 별 필요없는 듯합니다...)하지만 errorlog부분은 남기셔야
합니다. 로그를 쓸 수 없을 경우 에러를 잡기 위해서입니다. 디비접속 실패 등도 이곳에 기
록됩니다. 다시 아파치 리부팅.
#apachectl restart
모두 끝났군요.
테스트해보세요.
로그 분석툴을 php로 짜도 되겠죠? 히히...
지금 제가 연구중인데...워낙 초보라...혹시 잘짜신 분계심 짜서 공개해 주시면 엄청 감사
시럽겠죵..^^ ps. 디비에 무척이나 많이 쌓이는군여..크크..역시 가끔은 비워줘야 할것같습
니다. 하지만 일단 로그를 쓰는게 느려지지 않으니까...좋군염...
잘못된 점 있으면 사정없이 후려주셈.
그럼~^^--멍멍