출처 : http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=teach&wr_id=2473&page=2

 

PHP 어플리케이션을 위한 IIS 웹 서비스 설치 및 구성



첫 번째, 포스팅에서는 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)

071210_0053_11PHP1.png


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

071210_0053_11PHP2.png  


3. 무인 설치(Unattended) 

071210_0053_11PHP3.png    


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


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




IIS 7.5 설치



1. 역할 관리자 실행


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



2. 역할 추가 마법사


가. 역할 추가 - 웹 서버(IIS) - 다음


071210_0053_11PHP4.png  



나. 다음


071210_0053_11PHP5.png  



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


071210_0053_11PHP6.png  



라. 설치


071210_0053_11PHP7.png  



마. 닫기


071210_0053_11PHP8.png  



바. 시스템 취약점 보안을 위해 Windows Update 적용


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


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


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


071210_0053_11PHP9.png  



[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 를 다운로드 받습니다.


071210_0053_11PHP10.png  



2. 패키지 압축 해제


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


071210_0053_11PHP11.png  



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. 모듈 매핑 추가


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


071210_0053_11PHP12.png  



나. 모듈 매핑 추가


1) 요청 경로 : *.php


2) 모듈 : FastCgiModule


3) 실행 파일(옵션) : "C:\Program Files\PHP\php-cgi.exe"


4) 이름 : PHP FastCGI


071210_0053_11PHP13.png  



5) 요청 제한 클릭


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


071210_0053_11PHP14.png  




5. FastCGI 응용 프로그램 풀, 환경 변수 설정


가. FastCGI는 Native PHP 가 리사이클링 되기 전에 Php-cgi.exe 프로세스를 리사이클링(Recycling) 하게 됩니다. '인스턴스 MaxRequests' 속성 변경을 통해 리사이클링 되기 전에 요청 처리 개수를 설정할 수 있습니다.


1) 인터넷 정보 서비스 관리자 - 연결 - 서버이름 - FastCGI 설정


071210_0053_11PHP15.png  



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


071210_0053_11PHP16.png  



나. Native PHP 프로세스 리사이클링 속성 변경


1) FastCGI 응용 프로그램 편집창에서 '환경 변수' 속성을 클릭합니다.


2) 추가 - Name : PHP_FCGI_MAX_REQUESTS, Value : 10000


071210_0053_11PHP17.png  


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




6. 테스트 웹 사이트 생성


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


071210_0053_11PHP18.png  



나. 웹 사이트 추가


1) 사이트 이름 : PHP Site


2) 실제 경로 : C:\WWW


3) 포트 : 8080


071210_0053_11PHP19.png  




7. PHPINFO.PHP 스크립트 생성


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


나. 스크립트


<?php


phpinfo();


?>




8. 인터넷 익스플로러 접속 테스트


가. 주소 : http://localhost:8080/phpinfo.php


071210_0053_11PHP20.png  


여기까지 IIS 7.5 와 PHP 를 설치한 후 모듈을 연동하는 방법에 대해서 이와 같이 소개하였습니다. 다음 포스에서는 SQL Server Driver for PHP 설치 및 설정에 대해서 알아보도록 하겠습니다.

번호 제목 글쓴이 날짜 조회 수
340 [하이퍼바이저]VMware vSphere Hypervisor 5.1 무료라이센스 키 발급 받기 [2162] file 고객센터-최재원 2012.11.22 279784
339 안드로이드(android) wmware zimbra 기본강좌 [678] file 이건 2011.08.12 105858
338 [하이퍼바이져호스팅] VMware ESXi4.1 - CentOS 5 설치 매뉴얼 [633] file 최재원 2011.07.04 34876
337 [하이퍼바이져호스팅] VMware ESXi4.1 클라이언트 설치 매뉴얼 [261] 최재원 2011.07.06 30640
» [IIS 7 초급 1-2] PHP 어플리케이션을 위한 IIS 웹 서비스 설치 및 구성 [197] file MYIP박광춘 2012.01.18 30128
335 [하이퍼바이져호스팅] VMware ESXi4.1 - Windows 2003 Server 설치 매뉴얼 [144] file 최재원 2011.07.01 26365
334 php중급강좌 > 원본이미지를 정비율로 리사이즈 처리하기 [7] MYIP박광춘 2012.01.31 26137
333 사이트를 방문하는 클라이언트의 IP주소 가져오기 [187] 카츄샤 2012.01.30 25592
332 [하이퍼바이저호스팅] XenServer 5.6 클라이언트 설치 매뉴얼 [199] file 최재원 2011.07.08 24689
331 MyIP장비 메뉴얼 file 고객센터-최재원 2013.04.30 23594
330 mode line을 바꾸려면... Myip 심걸 2011.07.21 23057
329 find 명령어로 여러파일 한꺼번에 수정하기 [61] Myip 심걸 2011.07.28 23052
328 php로excel파일 생성하기 [33] 카츄샤 2012.02.02 22357
327 SSL 인증서 설치가이드 IIS 5.0/6.0 [1] 최재원 2012.04.03 22151
326 php중급강좌 > 이미지 리사이즈 처리를 위한 함수 만들기 [29] MYIP박광춘 2012.01.31 22044
325 [하이퍼바이저 호스팅] XenServer - CentOS 64bit버전 텍스트모드(TEXT mode) 설치 동영상강좌 [62] file 이건 2011.07.29 21756
324 php중급강좌 > 이미지 복사하기 [2] MYIP박광춘 2012.01.31 21364
323 php중급강좌 > 이미지 처리에 필요한 기본함수 만들기 [2] MYIP박광춘 2012.01.31 20956
322 웹소스코딩가이드 - 기초 [50] 이건 2012.01.26 20834
321 PHP리디렉션 방법 [2] 카츄샤 2012.02.01 20608