IIS7 환경에서 텍스트큐브 사용하기
우선 IIS7 + FastCGI + PHP + MySQL 설치 문서대로 관련 프로그램 설치를 완료한다.
PHP는 5.2 이상, MySQL은 5.0 이상을 권장한다.
※ 텍스트큐브 1.7.7 이상 버전부터 IIS7 환경에서의 설치를 공식 지원한다.
설치 과정
- 먼저 이곳에서 IIS용 URL Rewrite 모듈을 받아 설치한다. IIS 관리자가 열려있다면 재시작해야 보인다. 예전의 CTP 버전은 한글 처리에 문제가 있었으나 필자가 MS 관계자에게 직접 보고하였고 최종 릴리즈에서는 해당 문제가 수정되었음을 확인하였다.
- 텍스트큐브 소스코드를 내려받아 wwwroot 안의 원하는 곳에 압축을 푼다. 여기서는 tcpath 디렉토리에 설치했다고 가정하겠다.
- 해당 폴더의 속성 -> 보안 탭에서 IIS_IUSRS 그룹과 IUSR 사용자에게 쓰기 등 모든 권한을
허가해준다. (간혹 IIS_IUSRS에만 권한을 추가하면 안 되는 경우가 있는데 이때 IUSR에게도 권한을 추가하면 된다.)
이것은 리눅스에서 설치할 때 디렉토리 퍼미션을 777로 설정하는 것(조금 더 정확히는 웹서버가 읽기·쓰기를 모두 할 수 있는 것)과 같은 효과를 낸다. -
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 파일을 직접 수정하여 가상의 도메인을 만들어주고 이를 사용한다.
- .htaccess 파일을 생성하지만 이 상태로는 IIS에서 인식하지 못한다. 4단계에서 다음을 클릭하면 다소 시간이 흐른 후 IIS
서버임을 인식하여 두 가지 버전의 전용 rewrite rule 생성 여부를 선택할 수 있다. 여기서는 IIS7을 선택한다.
- 나머지 과정을 진행하고 http://127.0.0.1/tcpath/index.php를 열면 일단 환영 포스트와 함께 첫 화면이 보여야 한다. (아직 다른 부분은 동작하지 않을 것이다)
- URL Rewrite 모듈 설정을 열고 .htaccess 파일에 쓰여진 rewrite rule 전체를 [Import Rules...]
버튼을 눌러 나온 대화상자에 그대로 붙여넣고 [OK]를 누른다.
- 이제 IIS에서도 fancy URL이 정상적으로 작동하는 텍스트큐브를 사용할 수 있다.
다음은 IIS7이 아닌 IIS6 이하 버전을 위한 Ionics ISAPI Rewrite Filter를 이용할 때의 7단계 설정 방법이니 참고한다.
-
이제 URL Rewrite 모듈 설정을 할 차례이다.
- IIS관리자에서, 사이트 -> Default Web Site를 클릭하고 [ISAPI 필터]를 연다.
- [추가...]를 눌러 다운로드받은 필터 DLL(IsapiRewrite4.dll)을 추가한다. 이 DLL 파일은 자신이 원하는 곳 아무데나 집어넣으면 된다.
- IsapiRewrite4.dll과 동일한 폴더에 IsapiRewrite4.ini 파일을 생성하고 .htaccess로부터 RewriteEngine On과 Rewrite Base 구문을 제외한 나머지 Rewrite 규칙들을 복사한다.
- 각 RewriteRule에서 정규표현식의 맨 첫글자(^) 바로 뒤에 /tcpath/를 추가한다. (앞뒤 슬래시 포함)
- 각 RewriteRule에서 치환된 결과식 맨 첫글자 앞에 /tcpath/를 추가한다. (앞뒤 슬래시 포함)
- 각 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]
- 관리자 권한으로 연 명령 프롬프트에서 net stop w3svc / net start w3svc를 연달아 입력하여 World Wide Web Publishing Service를 재시작한다. IIS 관리자에서 사이트가 시작되어 있지 않으면 시작해준다.
- 웹브라우저로 접근해서 로그인 화면이 뜨고 버전 체크 정보를 생성하겠냐는 대화상자가 나오면 다 된 것이다.
이제 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 설정
- 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 |