IIS7 환경에서 텍스트큐브 사용하기

우선 IIS7 + FastCGI + PHP + MySQL 설치 문서대로 관련 프로그램 설치를 완료한다.

PHP는 5.2 이상, MySQL은 5.0 이상을 권장한다.

 

※ 텍스트큐브 1.7.7 이상 버전부터 IIS7 환경에서의 설치를 공식 지원한다.

설치 과정

  1. 먼저 이곳에서 IIS용 URL Rewrite 모듈을 받아 설치한다. IIS 관리자가 열려있다면 재시작해야 보인다. 예전의 CTP 버전은 한글 처리에 문제가 있었으나 필자가 MS 관계자에게 직접 보고하였고 최종 릴리즈에서는 해당 문제가 수정되었음을 확인하였다.
  2. 텍스트큐브 소스코드를 내려받아 wwwroot 안의 원하는 곳에 압축을 푼다. 여기서는 tcpath 디렉토리에 설치했다고 가정하겠다.
  3. 해당 폴더의 속성 -> 보안 탭에서 IIS_IUSRS 그룹과 IUSR 사용자에게 쓰기 등 모든 권한을 허가해준다. (간혹 IIS_IUSRS에만 권한을 추가하면 안 되는 경우가 있는데 이때 IUSR에게도 권한을 추가하면 된다.)
    step-security-04.png
    이것은 리눅스에서 설치할 때 디렉토리 퍼미션을 777로 설정하는 것(조금 더 정확히는 웹서버가 읽기·쓰기를 모두 할 수 있는 것)과 같은 효과를 낸다.
  4. http://127.0.0.1/tcpath/setup.php로 들어가 설치를 진행한다.
    localhost를 쓰면 세션 쿠기 생성이 안 되어 로그인할 수 없으므로 127.0.0.1이라는 로컬호스트 전용 IP 주소를 사용한다.

    • 참고 : Google Chrome에서는 127.0.0.1에서도 쿠키 생성이 안 되기 때문에 %SystemRoot%\System32\drivers\etc\hosts 파일을 직접 수정하여 가상의 도메인을 만들어주고 이를 사용한다.
  5. .htaccess 파일을 생성하지만 이 상태로는 IIS에서 인식하지 못한다. 4단계에서 다음을 클릭하면 다소 시간이 흐른 후 IIS 서버임을 인식하여 두 가지 버전의 전용 rewrite rule 생성 여부를 선택할 수 있다. 여기서는 IIS7을 선택한다.
    step-install-05.png
  6. 나머지 과정을 진행하고 http://127.0.0.1/tcpath/index.php를 열면 일단 환영 포스트와 함께 첫 화면이 보여야 한다. (아직 다른 부분은 동작하지 않을 것이다)
  7. URL Rewrite 모듈 설정을 열고 .htaccess 파일에 쓰여진 rewrite rule 전체를 [Import Rules...] 버튼을 눌러 나온 대화상자에 그대로 붙여넣고 [OK]를 누른다.
    step-install-10.png
  8. 이제 IIS에서도 fancy URL이 정상적으로 작동하는 텍스트큐브를 사용할 수 있다.

 

다음은 IIS7이 아닌 IIS6 이하 버전을 위한 Ionics ISAPI Rewrite Filter를 이용할 때의 7단계 설정 방법이니 참고한다.

  1. 이제 URL Rewrite 모듈 설정을 할 차례이다.

    1. IIS관리자에서, 사이트 -> Default Web Site를 클릭하고 [ISAPI 필터]를 연다.
    2. [추가...]를 눌러 다운로드받은 필터 DLL(IsapiRewrite4.dll)을 추가한다. 이 DLL 파일은 자신이 원하는 곳 아무데나 집어넣으면 된다.
    3. IsapiRewrite4.dll과 동일한 폴더에 IsapiRewrite4.ini 파일을 생성하고 .htaccess로부터 RewriteEngine OnRewrite Base 구문을 제외한 나머지 Rewrite 규칙들을 복사한다.
    4. 각 RewriteRule에서 정규표현식의 맨 첫글자(^) 바로 뒤에 /tcpath/를 추가한다. (앞뒤 슬래시 포함)
    5. 각 RewriteRule에서 치환된 결과식 맨 첫글자 앞에 /tcpath/를 추가한다. (앞뒤 슬래시 포함)
    6. 각 RewriteRule 중 플래그(대괄호로 알파벳 적힌 것)에 U를 추가한다. 예를 들어 [L,QSA]라고 되어 있으면 [L,QSA,U]라고 바꾼다. U 플래그는 이 ISAPI 필터에서만 지원하는 옵션으로 $_SERVER['HTTP_X_REWRITE_URL']에 rewrite 되기 전의 원본 URL을 보존해주는 역할을 한다.
      예제 : (첫번째 줄이 두번째 줄과 같이 바뀜)
      RewriteRule ^(.*)$ rewrite.php [L,QSA]
      RewriteRule ^/tcpath/(.*)$ /tcpath/
      rewrite.php [L,QSA,U]
  2. 관리자 권한으로 연 명령 프롬프트에서 net stop w3svc / net start w3svc를 연달아 입력하여 World Wide Web Publishing Service를 재시작한다. IIS 관리자에서 사이트가 시작되어 있지 않으면 시작해준다.
  3. 웹브라우저로 접근해서 로그인 화면이 뜨고 버전 체크 정보를 생성하겠냐는 대화상자가 나오면 다 된 것이다.
    이제 IIS에서도 텍스트큐브를 사용할 수 있다!!

 

참고 : 만약 돈이 충분하다면 HeliconTech 사에서 제작하는 rewrite 모듈을 이용해보는 것도 좋다. .htaccess를 통해 아파치와 완전히 똑같은 문법으로 rewrite가 작동하도록 지원하고 있기 때문에 별다른 설정 없이 리눅스에서 하듯 설치할 수 있을 것이다. (하지만 직접 테스트해보지 않았으므로 장담은 못함-_-)

현재 알려진 문제점

  • 글에 파일 첨부를 하였을 경우, 첨부 파일이 저장되는 디렉토리 자체는 모두 권한이 제대로 되어 있으나, 첨부 파일 자체가 IIS_IUSRS 그룹에 아무 권한이 없는 상태로 만들어진다. 따라서 첨부 파일 업로드는 성공적으로 되지만 첨부 파일을 보거나 삭제할 수 없는 문제가 발생한다.

    • 원인 : php 기본 설치 상태에서 php.ini의 upload_tmp_dir 설정이 C:\Windows\Temp로 잡혀 있는데, move_uploaded_file()을 수행하면 이 디렉토리의 권한을 그대로 옮겨오기 때문이다.
    • 해결 방법 : php.ini에서 upload_tmp_dir을 IIS_IUSRS가 모든 권한을 가지는 임의의 다른 디렉토리로 바꾼다. (예: C:\inetpub\temp\PHP Uploads라는 디렉토리를 하나 만들고 권한 주기)

Textcube 1.7.5 기준의 Rewrite Rule 설정

  1.  
  2. RewriteEngine On
    RewriteBase /tcpath/

    RewriteRule ^tcpath/(thumbnail)/([0-9]+/.+)$
    tcpath/cache/$1/$2 [L]
    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule ^
    tcpath/(cache)+/+(.+[^/]).(cache|xml|txt|log)$ - [NC,F,L]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^
    tcpath/(.+[^/])$ tcpath/$1/ [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^
    tcpath/(.*)$ tcpath/rewrite.php [L,QSA]

'Infrastructure' 카테고리의 다른 글

Batch File 작성법  (0) 2009.04.28
vi 사용법  (0) 2009.04.16
IIS7 + FastCGI + PHP + MySQL 설치 문서  (0) 2009.04.13
윈도우 2008서버에 XE 설치 절차  (4) 2009.04.13
PHP 사용을 위한 Windows Server 2008 구성 절차  (0) 2009.04.13

+ Recent posts