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

   

   

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 설치 및 설정에 대해서 알아보도록 하겠습니다.



IIS7(Internet Information Service) 웹서버 시리즈 강좌 리스트
[IIS7 웹서버 강좌 1-1] Microsoft 웹 플랫폼 설치 관리자(Windows Platform Installer)
[IIS7 웹서버 강좌 1-2] PHP 어플리케이션을 위한 IIS 웹 서비스 설치 및 구성
[IIS7 웹서버 강좌 1-3] SQL Server Driver for PHP 설치
[IIS7 웹서버 강좌 1-4] 인터넷 정보 서비스 관리자의 웹 사이트 기능 소개
[IIS7 웹서버 강좌 1-5] 인터넷 웹 서비스를 위한 Internet Information Services (IIS) 7 의 소개
[IIS7 웹서버 강좌 2-1] URL Rewrite 2.0 소개 및 설치
[IIS7 웹서버 강좌 2-2] URL Rewrite 규칙(Rule) 생성
[IIS7 웹서버 강좌 2-3] Apache의 mod_rewrite 규칙 가져오기
[IIS7 웹서버 강좌 3-1] FTP 7.5 설치 및 FTP 사이트 생성
[IIS7 웹서버 강좌 3-2] 웹 사이트의 FTP 게시 추가
[IIS7 웹서버 강좌 3-3] FTP 가상 호스트 이름 설정
[IIS7 웹서버 강좌 3-4] FTP 사용자 격리 구성
[IIS7 웹서버 강좌 4-1] IP 주소 및 도메인 제한
[IIS7 웹서버 강좌 4-2] 요청 필터링(Request Filtering)
[IIS7 웹서버 강좌 4-3] URLScan
[IIS7 웹서버 강좌 4-4] WebKnight 웹 서버 방화벽
[IIS7 웹서버 강좌 5-1] IIS 7 구성 저장소와 관리도구 소개
[IIS7 웹서버 강좌 5-2] IIS 7 커맨드라인 관리도구 Appcmd 소개
[IIS7 웹서버 강좌 5-3] 원격 관리와 관리자 위임
[IIS7 웹서버 강좌 6-1] 웹 서버의 백업과 복원 - (1) Windows Server Backup
[IIS7 웹서버 강좌 6-2] 웹 서버의 백업과 복원 - (2) IIS 7 설정 백업
[IIS7 웹서버 강좌 6-3] 웹 서버의 백업과 복원 - (3) 웹 배포 도구 패키지
[IIS7 웹서버 강좌 7-1] 웹 플랫폼 설치 관리자 3.0
[IIS7 웹서버 강좌 7-2] IIS 7.5 Express 살펴보기
[IIS7 웹서버 강좌 7-3] PHP 설치, 설정 관리를 위한 PHP Manager for IIS



[동영상 강좌] IIS7(Internet Information Service) 웹서버 시리즈 동영상 강좌 리스트

01. IIS7 웹서버 동영상 강좌 [1-1] WPI를 사용하여 XE 설치

02. IIS7 웹서버 동영상 강좌 [1-2] IIS 7, PHP 설치 및 구성

03. IIS7 웹서버 동영상 강좌 [1-3] SQL Server Driver for PHP

04. IIS7 웹서버 동영상 강좌 [1-4] IIS 인터넷 정보 서비스 관리자

05. IIS7 웹서버 동영상 강좌 [2-2] URL Rewrite 규칙 생성

06. IIS7 웹서버 동영상 강좌 [2-3] Apache의 mod_rewrite 규칙 가져오기

07. IIS7 웹서버 동영상 강좌 [3-1] FTP 7.5 설치 및 FTP 사이트 생성

08. IIS7 웹서버 동영상 강좌 [3-2] 웹 사이트의 FTP 게시 추가

09. IIS7 웹서버 동영상 강좌 [3-3] FTP 가상 호스트 이름 설정

10. IIS7 웹서버 동영상 강좌 [3-4] FTP 사용자 격리 구성

11. IIS7 웹서버 동영상 강좌 [4-1] IP 주소 및 도메인 제한

12. IIS7 웹서버 동영상 강좌 [4-2] 요청 필터링

13. IIS7 웹서버 동영상 강좌 [4-3] [4-4] URLScan, WebKnight 웹서버 방화벽

14. IIS7 웹서버 동영상 강좌 [5-2] 커맨드라인 관리도구 Appcmd 소개

15. IIS7 웹서버 동영상 강좌 [5-3] 원격 관리와 관리자 위임

16. IIS7 웹서버 동영상 강좌 [6-1] Windows Server Backup

17. IIS7 웹서버 동영상 강좌 [6-2] IIS 7 설정 백업

18. IIS7 웹서버 동영상 강좌 [6-3] 웹 배포 도구 패키지

19. IIS7 웹서버 동영상 강좌 [7-2] IIS 7.5 Express

20. IIS7 웹서버 동영상 강좌 [7-3] PHP Manager for IIS 





profile

Lai Go's TINote Blog - http://laigo.kr