호스팅 업체 변경

내가 블로그 호스팅을 했던 업체는 eyah.net이었다. 그러나 이야넷은 지속적인 요청에도 불구하고 mod_rewrite 모듈을 지워해주지 않아 결국 업체를 바꾸고 3월 23일 태터 1.02 버전으로 업데이트했다. 각종 플러그인을 설치하는 재미도 쏠쏠했고 개선된 어려가지 기능을 맛보는 재미도 있었다.

호스팅 업체 변경

내가 블로그 호스팅을 했던 업체는 eyah.net이었다. 그러나 이야넷의 경우 지속적인 요청에도 불구하고 mod_rewrite 모듈을 지워해주지 않아 결국 업체를 바꾸고 3월 23일 태터 1.02 버전으로 업데이트했다. 각종 플러그인을 설치하는 재미도 쏠쏠했고 개선된 어려가지 기능을 맛보는 재미도 있었다.

그러나 막상 업데이트를 하자 예상하지 못한 문제가 여러 가지 발생했다. 그 중 하나는 13종의 웹 통계 프로그램의 소개 및 간략한 분석을 통해 소개한 TraceWatch였다[1]. 모든 통계 프로그램이 다 마찬가지이지만 TraceWatch도 통계를 분석하기위해서는 .PHP 파일이나 .HTML 파일에 통계 코드를 삽입해야 한다. 태터 클래식까지는 대문 파일에 해당하는 index.php 파일 하나에만 로그 코드를 삽입하면 됐다. 그런데 1.x 부터는 구조가 완전히 바뀌어서 상당히 많은 파일에 통계 코드를 삽입해야 했다.

그래서 생각한 방식이 skin.html 파일에 JavaScript로 분석 코드를 삽입하고 skin.html과 관련이 없는 파일(/rss, index.xml)에는 직접 분석 코드를 삽입하는 방식을 제안했었다. 그런데 문제는 JavaScript로 분석 코드를 삽입하면 로봇에 의한 접속 통계가 나타나지 않았다.

그 많은 소스를 모두 수정하는 것이 귀찮아 플러그인을 작성하던 중 태터 센터에 TraceWatch 플러그인이 올라온 것을 보고 설치했다. 모든 사람들에게 동일하게 발생하는 현상은 아닐 수 있지만 이 플러그인을 설치한 덕에 며칠을 고생했다.

이상한 오류

나는 관리자 외에는 답글을 달 수 없도록 설정하고 사용하고 있다. 사람들이 답글을 남긴 것을 보고 답글을 작성한 후 완료 버튼을 클릭하면 '댓글이 등록되었습니다'라는 메시지가 나타나지 않고 그림처럼 빈 화면이 나타나는 것이었다. 물론 댓글은 정상적으로 달리지만 페이지가 갱신되지 않아 매번 새로 고침을 해야했다.

문제의 원인을 파악하기위해 태터 센터의 Support를 확인하자 동일한 문제는 아니지만 방명록에 글을 올리면 글이 올라가지 않는다는 내용이 있고, 이 글의 내용 중 각종 폼 태그의 이름을 표시하는 방법이 변경되서 발생한 문제라는 답글을 읽었다.

방명록은 다른 문제이지만 댓글이 바로 업데이트되지 않는 문제는 ID="" 속성일 가능성이 많기때문에 표준 스킨과 내가 사용하는 스킨을 비교해서 확인해보니 사용하는 스킨에서는 ID="" 속성만 있지만 태터의 표준 스킨에는 ID="" 속성과 NAME="" 속성이 포함되어 있었다. 아마 방명록 문제를 해결하기위해 두개의 속성을 모두 사용한 것 같았다. 아무튼 문제의 원인이 이 것일 것 같아 사용하는 스킨 역시 NAME="" 속성이 포함되도록 변경했다.

그러나 문제는 해결되지 않았다. 표준 스킨을 사용하면 정상적으로 동작한다는 사실[2]때문에 계속 스킨의 여러 부분을 수정했다. 그러던 중 정상적인 스킨에는 직접 삽입한 플러그인 치환자가 없다는 것을 생각하고 태터 환경설정에서 플러그인을 하나씩 죽이는 방법으로 문제의 원인을 찾아봤다.

문제 해결

TraceWatch 플러그인을 죽이자 댓글이 정성적으로 동작하는 것이었다. 플러그인을 사용하는 것이 코드를 삽입하기 훨씬 편하기 때문에 이러한 문제를 해결한 플러그인을 작성하게되었다. 플러그인을 설치하고 사용하는 방법은 상당히 간단하다.

  1. 다운로드
    TraceWatchPlugin.zip을 클릭해서 'TraceWatch' 플러그인을 다운로드한다.
  2. 통계 코드 수정
    다운로드한 파일을 압축해제하고 TraceWatch 폴더의index.php 파일을 자주 사용하는 편집기로 연다.

    // true로 설정하면 index.php?pl=235처럼 파라메타까지 기록된다. false로 설정하면
    // index.php만 기록된다.
    $GLOBALS['adl_count_params']=true;
    
    // TraceWatch를 루트 폴더가 아닌 다른 폴더에 설정한 경우 ''에 해당 폴더의 경로를
    // 지정한다. 예를 들어 /tt 폴더에 twatch를 설치했하다면 다음처럼 변경해야 한다.
    //
    // $GLOBALS['HTTP_SERVER_VARS']['DOCUMENT_ROOT'].'/tt';
    $GLOBALS['adl_alt_docroot']=$GLOBALS['HTTP_SERVER_VARS']['DOCUMENT_ROOT'].'';
    
    // 따로 변경할 필요는 없다.
    @include_once $GLOBALS['adl_alt_docroot'].'/twatch_include/logger.php';
    

    위와는 다른 조건으로 TraceWatch를 설치했다면 TraceWatch의 코드 생성 페이지에서 코드를 생성해서 앞에서 설명한 세줄을 교체하면 된다.

  3. 플러그인 설치 및 설정
    일단 압축해제된 파일들을 폴더째 태터의 /plugins 폴더에 업로드한 후 태터의 '환경설정/플러그인 페이지'에서 'TraceWatch' 플러그인을 '미사용'에서 '사용중'으로 변경한다.

스킨 파일에 치환자를 삽입할 필요는 없다. 즉, 스킨은 손댈 필요가 없다. 이 방법으로 플러그인을 설정하면 대부분의 파일들이 통계에 포함된다. 그러나 스킨을 사용하지 않는 파일들은 통계에서 누락된다. 이러한 파일의 가장 대표적인 예는 RSS 피드 파일인 /index.xml와 /rss이다. 만약 이러한 파일까지 기록하고 싶다면 다음 절차를 따라 코드를 직접 삽입하면 된다.

/rss/index.xml까지 통계에 포함시키는 방법을 예로들어 설명하겠다. 이 방법을 이용하면 자세한 통계는 아니지만 어떤 사용자가 RSS를 구독하고 있는지 알 수 있다.

  1. 자주 사용하는 편집기로 다음 파일을 연다.
    /blog/rss/index.php
  2. 다음처럼 파일 마지막에 플러그인 설정에서 구한 3행을 붙여넣는다. 첫행에 삽입하지 않는 이유는 첫행에 삽입하는 경우 다른 문제가 발생할 수 있기때문이다. 아울러 이러한 코드는 특별한 언급이 없는한 파일 끝에 삽입하는 것이 좋다.

    변경전
    echo $result;?>
    
    변경후
    echo $result;
    
    $GLOBALS['adl_count_params']=true;
    $GLOBALS['adl_alt_docroot']=$GLOBALS['HTTP_SERVER_VARS']['DOCUMENT_ROOT'].'';
    @include_once $GLOBALS['adl_alt_docroot'].'/twatch_include/logger.php';
    ?>
    

변경하려는 폴더에 index.php 파일외에 item.php 파일도 있다면 이 파일 역시 위와 같은 방법으로 변경해야 한다.

추가정보

참고로 모 사이트에서 /blog/index.php/blog/item.php에 분석 코드를 삽입하라는 글을 읽은 적이 있다. /blog/index.php 파일은 https://offree.net/와같은 주소로 블로그에 접속하는 경우 호출되는 파일이며, /blog/item.php 파일은 https://offree.net/454와같은 주소로 블로그에 접속하는 경우 호출되는 파일이다. 따라서 이 두 파일 모두 skin.html 파일을 사용한다. 이러한 파일에는 굳이 분석 코드를 삽입할 필요는 없다.

분석 코드를 삽입해야할 지 아닐지를 결정하는 방법은 간단하다. 파일 이름이 index.php 또는 item.php 이며, 파일 내용중 skin.html라는 문자열을 찾을 수 없다면 그 파일에는 분석 코드를 삽입해도 된다.

남은 이야기

  1. 나는 태터를 업데이트한 후 다시 클래식으로 돌아갈 생각을 했다. 그 이유는 간단하다. 댓글 스팸이 너무 많기때문이다. 어제도 딱 반나절 동안 총 12개의 댓글 스팸이 붙었다. 결국 댓글 스팸을 다는 사용자의 정보를 확인하기위해 댓글을 달거나 삭제하는 과정도 통계에 포함시켰다. 댓글에대한 동작도 통계에 포함시키고 싶다면 다음 폴더에 포함된 item.php 파일에 통계 코드를 삽입하면 된다.

    /blog/comment/add
    /blog/comment/comment
    /blog/comment/delete
    
  2. 태터 버그에대한 얘기가 많다. 내가 확인해봐도 상당히 많은 것 같다. 특히 위지윅 편집기의 경우 그 정도가 심한 것다. 새글을 위지윅으로 작성하는 경우에는 문제가 없을 수 있지만 기존 글을 편집하는 경우에는 태그 속성이 사라지는 등 여러 가지 문제가 있었다. 따라서 난 아예 위지윅 편집기를 사용할 수 없도록 설정해서 사용하고 있다. 그러나 운이 좋은 것인지 몰라도 설치시 조금 고생한 것과 위지윅 버그를 제외하면 다른 문제는 없었다.

관련 글타래


  1. TraceWatch는 13종의 웹 통계 프로그램의 소개 및 간략한 분석에서 국내 최초로 소개한 웹 통계 도구이다. 이 글에서 알 수 있듯이 상당히 여러가지 웹 통계 프로그램을 써왔지만 TraceWatch의 '실시간 감시 기능'과 '방문자 경로 추적 기능'에 반해 이 프로그램을 사용했다. 아울러 설치가 어려운 것은 아니지만 설치를 돕기위해 강력한 웹 분석 도구, TraceWatch - 설치 및 사용법을 작성했고 한글 언어 파일까지 작성했다. 
  2. 당연한 현상이다. 표준 스킨에서 플러그인의 치환자인 [## _tracewatch_##]가 포함되어 있지 않으므로 tracewatch 플러그인이 호출되지 않는다.