2011. 4. 5. 11:57

APMSETUP,XAMPP등으로 XE작업환경을 만들때.

사이트를 만들다 보면 서버 - 작업컴퓨터로 연결하여 작업할때 보면 여간 불편한것이 만들고 ftp로 업로드를 해주거나 서버상태에서 vim이나 에디터를 이용해 직접 만져주어야 하는 경우가 있다. 

이 경우 서버와 작업 클라이언트간에 동일시 되지 않는 파일의 변경때문에 나중에 에로사항에 접할때가 많다.

그래서 ftp나 vim등을 이용하지 않고 클라이언트 작업 컴퓨터에 APM을 설치하여 클라이언트에서 모든 작업을 하고 완성되어 서버에 한꺼번에 올리면 작업속도나 여러가지 면에서 상당히 편한점이 있다.

하지만 보통 서버에서는 표준적으로 아파치나 sql php등의 환경을 제공하기 때문에 별 어려움이 없으나 자신의 컴퓨터에서는 하나하나 설치하는것이 상당히 재미없고 무의미한 작업이다.

이에 APM을 통합적으로 한번에 설치해주는 프로그램이 국내에서는 APMSETUP이고 외국의 경우 XAMPP(lampp)등이 많이 애용된다. xampp의 경우 리눅스용 패키지도 제공하고 있으니 유용할 듯 싶다.

단 윈도우에서 xampp나 apmsetup등을 설치한 후 나타나는 에러사항이 바로 XE의 rewrite모드.. 

이것은 아파치의 환경을 재설정해주어야 된다.

아파치의 http.conf 파일을 열면

1.

LoadModule rewrite_module modules/mod_rewrite.so

보기와 같이 활성화 되어 있어야 한다. 앞에 #처리 되어 있다면 지워줄것.. 

2.
<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>

이 항목을 

<Directory />
    Options FollowSymLinks
    AllowOverride All
    #Order deny,allow
    #Deny from all
</Directory>

이와 같이 변경하여 주고 아파치 리스타트...!

 
 <xampp의 콘트롤박스에서 간단히 stop/start버튼으로 아파치를 재기동시켜준다.>

여기까지 완료되면 간혹 XE를 사용하다보면 330 오류 Error_contents_decording_failed에러에 직면할경우가 있다.  이 경우에는  xe디렉토리의 class디렉토리 아래 display디렉토리에서 DisplayHandler.class.php를 찾아 수정해주어야 한다.

classes/display/DisplayHandler.class.php의 function printContent(&$oModule)함수부분을 수정해준다.
 


// header 출력
            if($this->gz_enabled) header("Content-Encoding: gzip");
if(Context::getResponseMethod() == 'JSON') $this->_printJSONHeader();
else if(Context::getResponseMethod() != 'HTML') $this->_printXMLHeader();
else $this->_printHTMLHeader(); 

이 부분을

// header 출력
$this->gz_enabled = false;
            if($this->gz_enabled) header("Content-Encoding: gzip");
if(Context::getResponseMethod() == 'JSON') $this->_printJSONHeader();
else if(Context::getResponseMethod() != 'HTML') $this->_printXMLHeader();
else $this->_printHTMLHeader(); 

  
이런식으로 바꾸어준다.

이제 작업클라이언트에서도 말끔히 웹서버를 만들어 작업을 원할히 할수 있다.

서버의 업로드시에는 XE가 인스톨된 /에 files디렉토리를 작업컴퓨터에서 서버로 업로드에 덮어쓰기 한후에 db.config.php와 mysql의 xe_sites만 서버의 도메인이나 ip로 수정하고 files의 소유권을 daemon.daemon으로 바꾼다.

mysqldump명령으로 작업클라이언트에서 sql를 백업받은후 mysql명령으로 서버에서 restore하면 클라이언트에서 작업한것은 서버에서도 동일하게 이상없이 돌아간다.