2008/09/25

IIS 7 에서 FastCGI 를 이용한 PHP 구성

Windows Server 2008 IIS 7 에서는 FastCgi 모듈이 내장 되어 있으며, 설정 또한 applicationHost.config 에서 설정하도록 되어 있으며 사이트 단위로도 설정이 가능합니다.

<fastCgi>
   <application fullPath="C:\inetpub\php-5.2.6-nts-Win32\php-cgi.exe" />
</fastCgi>

<handlers accessPolicy="Read, Script">
   <add name="PHPFastCgi" path="*.php" verb="*" modules="FastCgiModule" scriptProcessor="C:\inetpub\php-5.2.6-nts-Win32\php-cgi.exe" resourceType="Unspecified" />
</handlers>

Vista 의 경우에는 Windows Server 2008 이 나오기전의 IIS 7 버젼이라서 FastCgi 모듈을 별도로 설치해 줘야 하는데, Service Pack 1를 설치하는 경우에는 내장되어 있습니다.


CGI 가속 기능을 지원하는 FastCgi 를 이용할려면 다음 처럼, CGI 구성요소가 설치가 되어야 합니다.





IIS 의 CGI 모듈 설치가 완료가 되면, 그 다음으로 PHP 를 다운 받아서 설치를 합니다.

PHP 의 버젼은 Installer 버젼 보다는 zip 패키지 설치를 권장하고 있으며,.... 또한 쓸때없는 체크를 하지 않도록 Non-thread-safe 버젼을 설치하는 것이 좋습니다.

그외, php.ini 의 기본적인 설정은 보통의 php 구성과 같으며,. 다만 기존의 FastCgi 를 이용하지 않고 ISAPI 모드나 CGI 모드에처럼 dll 파일이나 ini 파일을 복사하는등의 과정은 필요 없습니다.



PHP를 호스팅하기 위해서는 처리기 매핑 - 모듈 매핑 추가 에서 위와 같은 형식으로 추가를 해줍니다.  요청 제한 옵션중에는 동사부분에서 GET,POST,HAED,DEBUG 등 기본 동사만 허용하도록 해주는 것이 좋습니다.

그 다음으로, php 가 정상적으로 작동하는지 확인하기 위해서 웹사이트 폴더에 <?php phpinfo(); ?> 와 같은 내용이 들어간 .php 파일을 호출해서 다음과 같이 나오면 PHP가 FastCgi 를 이용하여 정상적으로 작동이 되는 것입니다.



FastCgi 옵션에 따라서 다르지만,. 작업 관리자에 보면 php-cgi.exe가 설정값에 따라서 몇개가 실행중이고 어느정도 작동후 종료후 새로운 php-cgi.exe가 생성되는 재생도 작동 됩니다.


그외,. 재생 설정은 다음과 같이 appcmd 를 이용하여 설정이 가능합니다.

C:\>%windir%\system32\inetsrv\appcmd set config -section:system.webServer/fastCgi /[fullPath='c:\{php_folder}\php-cgi.exe'].instanceMaxRequests:10000

C:\>%windir%\system32\inetsrv\appcmd set config -section:system.webServer/fastCgi /+[fullPath='c:\{php_folder}\php-cgi.exe'].environmentVariables.[name='PHP_FCGI_MAX_REQUESTS', value='10000']


물론 applicationHost.config 파일을 열어서 직접 추가/수정을 해줘도 상관은 없습니다. FastCgi 노드에서의 그외 속성값은 iis 6에서 설치된 fcgiext.ini 을 참고해 보시면 좋을것 같습니다.



또는 위와 같이, Administration Pack for IIS 7.0 을 설치하면 FastCGI Settings 를 통해서도 GUI 상에서 설정이 가능합니다.

<fastCgi>
    <application
             fullPath="C:\inetpub\php-5.2.6-nts-Win32\php-cgi.exe"
             maxInstances="4"
             instanceMaxRequests="10000">
 <environmentVariables>
     <environmentVariable name="PHP_FCGI_MAX_REQUESTS" value="10000" />
 </environmentVariables>
    </application>
</fastCgi>


속성이름이 대부분 명시적이어서 무슨 의미인지 이해하는데 어렵지는 않을것 입니다.

ps,.

FastCgi 에서 호출되는 CGI 는 기본값으로는 Network Service 계정에서 호출을 합니다.

실행 CGI 가 있는 폴더는 Windows 기본값에서는 Users 그룹에 권한이 되어 있으므로 호출에는 문제가 없으나, 보안 강화를 위해서 Administrators 외 제외를 하였다면,. 적절한 권한 설정이 필요합니다.


24-fastcgi-config-2.png


댓글 없음:

댓글 쓰기

가장 많이 본 글