>> Edit article
이름
제목
패스워드
웹서버를 운영하면서.. 로그 관리라는 걸 하게 되었습니다. 로그 파일이 커지면 일단 웹서버가 느려지고 보통의 경우 /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/apache/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. 디비에 무척이나 많이 쌓이는군여..크크..역시 가끔은 비워줘야 할것같습니다. 하지만 일단 로그를 쓰는게 느려지지 않으니까...좋군염... 잘못된 점 있으면 사정없이 후려주셈. 그럼~^^--멍멍
Copyleft
1999-2026 by
JSBoard Open Project
Theme Designed by
IDOO
All right reserved