2007~2011/IIS2010. 10. 4. 10:59

첫 번째, 포스팅에서는 WPI (Microsoft Web Platform Installer)를 사용하여 아주 쉽게 웹 서비스 환경을 구성하는 방법에 대해서 살짝 소개해 드렸습니다. 

자, 약속드린 대로 이번 포스팅에서는 Internet Information Services (IIS) 7 웹 서비스 환경에서 PHP 기반 어플리케이션을 구동시키기 위해 설치 및 기본 구성을 하는 방법에 대해서 정리하였습니다.   

이전 버전의 IIS에서도 PHP 는 지원하였으나 CGI 프로토콜과 PHP ISAPI 확장 사용의 한계로 인해 성능 또는 안정성이 떨어지는 문제가 발생하기도 하였습니다. 이러한 문제를 해결하기 위해 IIS7 에서는 FastCGI 구성 요소가 제공 되었으며 FastCGI 프토토콜을 사용할 경우 한 번에 한 개의 요청만 처리하는 Worker Processes Pool 을 관리하여 프로세스를 재사용함으로써 성능을 향상시켰습니다. 그리고 Zend Technologies 에서도 Windows 환경에서 PHP 스크립팅 엔진과 Core 확장의 성능과 안정성을 개선하여 제공하고 있습니다. 과연 얼만큼 향상된 결과를 보여줄 수 있을지 경험해 보면 좋을 것 같습니다. 

우선 설치를 시작하기 전에 IIS 버전에 대한 구분이 필요합니다. Windows Server 2008 에서는 IIS 7.0 버전이 제공되며 Windows Server 2008 R2 에서는 IIS 7.5 버전이 제공됩니다. 이어지는 내용은 Windows Server 2008 R2 환경에서 IIS 7.5 과 PHP를 설치하는 방법에 대해서 정리하였습니다. 


Windows Server 2008 R2 에서 IIS 7.5 를 설치하기 위해서 아래 3가지 방법 중 하나를 선택하여 사용할 수 있습니다. 

1. 역할 관리자(Role Manager)
    


2. 패키지 관리자(Package Manager)



3. 
무인 설치(Unattended)
 


Windows Server 2008 의 서버 관리자에 포함되어 있는 '역할 관리자'를 사용할 경우 Windows GUI(Graphical User Interface) 환경을 통해 몇 번의 마우스 클릭으로 쉽게 설치할 수 있는 장점이 있습니다. 패키지 관리자는 Pkgmgr.exe 라는 바이너리를 사용하여 Command Prompt 에서 IIS 를 설치할 수 있으며, 무인 설치 방법은 Pkgmgr.exe 와 unattend.xml 라는 설정 파일을 사용하게 됩니다. GUI 환경을 사용하지 않는 Windows Server 2008 Server Core 환경에서는 패키지 관리자와 무인 설치를 사용하여 설치할 수 있습니다. 


다음은 위 세가지 방법 중에서 역할 관리자를 사용하여 설치하는 방법입니다. 


1. 역할 관리자 실행
 가. 시작 - 프로그램 - 관리도구 - 서버 관리자 (또는 시작 - 실행 - SERVERMANAGER.MSC) 


2. 역할 추가 마법사
 가. 역할 추가 - 웹 서버(IIS) - 다음
 


 나. 다음


 다. CGI (PHP 사용을 위해서 필요합니다) - 다음


 라. 설치

   
 마. 닫기


 바. 시스템 취약점 보안을 위해 Windows Update 적용 
  1) 시작 - 제어판 - 시스템 및 보안 - Windows Update 메뉴를 사용하여 중요 업데이트를 설치합니다. 

IIS 를 설치하는 데는 시스템 재시작이 필요하지 않지만 중요 업데이트 설치 후에는 필요에 따라 시스템 재시작이 필요할 수 있습니다. 보안을 위해서 이와 같은 방법으로 정기적으로 보안 업데이트를 적용하는 것을 권장합니다. 

이것으로 쉽게 IIS7 설치가 완료 되었습니다. IIS 7.0 에서는 이외에도
Administration Pack 1.0 을 추가 설치하였습니다만 IIS 7.5 에서는 이미 확장 기능(FastCGI 설정, 요청 필터링, 구성 편집기 등)이 추가되어 있음을 확인할 수 있습니다. 인터넷 정보 관리자를 실행(시작 - 관리도구 - IIS 관리자) 하여 제공되는 기능을 살펴볼 수 있습니다.
 

   

[PHP 설치 및 테스트] 
다음은 PHP 다운로드 받고 설치하는 과정입니다. PHP 를 다운로드는 http://www.php.net/downloads.php 사이트를 통해서 Windows Binaries 를 사용해야 합니다. 

1. Non-thread-safe zip 패키지 다운로드
웹 사이트에 접속해서 보면 아래 그림과 같이 Windows Binaries 에도 여러 가지 종류의 패키지가 있는 것을 확인할 수 있으며 IIS 7 에서 구동 시 확장 기능 사용과 성능 향상 효과를 위해 5.2.X Non-thread-safe zip package 를 다운로드 받습니다. 



2. 패키지 압축 해제
 가. 다운로드 받은 파일을 C:\Program Files\PHP 폴더에 압축을 해제합니다.

   

3. PHP.INI 설정
C:\Program Files\PHP 폴더에 있는 php.ini-recommended 파일을 php.ini 파일로 복사한 뒤 메모장을 통해 아래와 같이 설정을 변경합니다. 

fastcgi.impersonate = 1
cgi.fix_pathinfo = 1
Cgi.force_redirect = 0
extension_dir = "./ext"
extension=php_gd2.dll 


 가. fastcgi.impersonate = 1
FastCGI는 클라이언트 호출에 대한 가상 보안 토큰을 지원하며 IIS 환경에서는 1로 설정합니다. 

 나. cgi.fix_pathinfo = 1 
PATH_INFO/PATH_TRANSLATED 를 CGI 환경에서 지원하며 1로 설정할 경우 PHP CGI가 규격에 맞게 경로를 수정합니다. 

 다. Cgi.force_redirect = 0
일반적으로 웹 서버에서 PHP 를 사용할 때 보안을 제공하기 위해 필요하지만 IIS 환경에서는 사용하지 않는 것을 권장합니다. 

 라. extension_dir = "./ext"
확장 모듈(extensions) 파일들이 위치한 폴더 경로입니다. 

 마. extension=php_gd2.dll
GD Graphics library 사용을 위해 활성화합니다. 


4. 모듈 매핑 추가
 가. 인터넷 정보 서비스 관리자 - 연결 - 서버이름 - 기능보기 - 처리기 매핑


 나. 모듈 매핑 추가
  1) 요청 경로 : *.php
  2) 모듈 : FastCgiModule
  3) 실행 파일(옵션) : "C:\Program Files\PHP\php-cgi.exe"
  4) 이름 : PHP FastCGI


 
5) 요청 제한 클릭
   가) 요청이 다음에 매핑되는 경우에만 처리기 호출 : 파일 또는 폴더

   

5. FastCGI 응용 프로그램 풀, 환경 변수 설정
 가. FastCGI는 Native PHP 가 리사이클링 되기 전에 Php-cgi.exe 프로세스를 리사이클링(Recycling) 하게 됩니다. '인스턴스 MaxRequests' 속성 변경을 통해 리사이클링 되기 전에 요청 처리 개수를 설정할 수 있습니다. 
  1) 인터넷 정보 서비스 관리자 - 연결 - 서버이름 - FastCGI 설정

  2) php-cgi.exe 편집 - '인스턴스 MaxRequests' : 10000


 나. Native PHP 프로세스 리사이클링 속성 변경
  1) FastCGI 응용 프로그램 편집창에서 '환경 변수' 속성을 클릭합니다.
  2) 추가 - Name : PHP_FCGI_MAX_REQUESTS, Value : 10000

(기본값 : 인스턴스 MaxRequests = 200, PHP_FCGI_MAX_REQUESTS = 500)

   

6. 테스트 웹 사이트 생성
 가. 인터넷 정보 서비스 관리자 - 사이트 - 웹 사이트 추가...


 나. 웹 사이트 추가
 1) 사이트 이름 : PHP Site
 2) 실제 경로 : C:\WWW
 3) 포트 : 8080

   

7. PHPINFO.PHP 스크립트 생성
 가. 메모장 실행 후 C:\WWW 폴더에 PHPINFO.PHP 파일을 생성하고 아래 스크립트를 입력합니다.
 나. 스크립트 

 <?php
 phpinfo();
 ?>

   

8. 인터넷 익스플로러 접속 테스트
 가. 주소 : http://localhost:8080/phpinfo.php

   
여기까지 IIS 7.5 와 PHP 를 설치한 후 모듈을 연동하는 방법에 대해서 이와 같이 소개하였습니다. 다음 포스팅에서는 인터넷 정보 서비스(IIS) 관리자의 인터페이스에 대해서 살펴 보도록 하겠습니다. 


[참고자료]

Configuring FastCGI to Host PHP Applications (IIS 7)
http://technet.microsoft.com/ko-kr/library/dd239230(WS.10).aspx


작성자 : Lai Go / 작성일자 : 2010.10.04

Posted by Lai Go