2006/12/31

64-bit Windows IIS 6 에서 32-bit Applications 실행

Windows Server 2003 Service Pack 1 에서 부터는, 64-bit IIS 에서는 32-bit 응용프로그램을 운영할 수가 있습니다. Windows-32-on-Windows-64 (WOW64) 기술을 통해서 말이죠.^^

그런데, 64비트 에서 32비트 프로세스는 64비트 DLL을 로드할수 없으며 그 반대로도 할수 없습니다. 만일 64비트 IIS 에서 32비트 DLL을 호출할려면, 응용프로그램 풀을 분리해야 합니다.

말하자면, 별도의 Worker Process 를 통해서 응용프로그램을 호스팅해야 한다는 얘기인데요. 응용프로로그램에는 다음과 같은 것이 해당됩니다.

ISAPI 확장 모듈
ISAPI 필터
COM 을 이용하는 ASP 스크립트
ASP.NET


메타베이스 값을 수정하는 것인데요. 기본값은 오직 64비트만 가능하게 되어 있습니다. 당연히 성능상 64비트로만 구성된 웹사이트를 운영하는 것이 좋겠습니다.


cscript.exe adsutil.vbs set W3SVC/AppPools/Enable32BitAppOnWin64 true


(예를 들자면, PHP ISAPI 모듈은 64비트를 아직 지원하지 않습니다. 그래서 위와 같이 32비트를 가능하게 해야 64비트 윈도우에서 PHP 웹사이트 호스팅이 가능해 집니다.)

위와 같이 32비트가 가능하도록 메타베이스를 수정 적용후,. 만일, 하나의 응용프로그램풀에서 32비트와 64비트를 같이 운영을 하게 되면 다음과 같은 오류가 발생하면서 응용프로그램풀이 중지됩니다.

이벤트 형식: 오류
이벤트 원본: W3SVC-WP
이벤트 범주: 없음
이벤트 ID: 2274
날짜:  2006-12-13
시간:  오후 5:20:01
사용자:  N/A
컴퓨터: SERVERINFO
설명:
구성 문제 때문에 ISAPI 필터 'C:\WINDOWS\Microsoft.NET\Framework64\v2.0.50727\aspnet_filter.dll'을(를) 로드하지 못했습니다. 현재 구성은 x86 프로세서 아키텍처용 이미지만 로드하는 것을 지원합니다.


위 문제는, 응용프로그램풀에서 별도의 프로세스로 분리를 하더라도, 32비트와 64비트를 혼용할수가 없는데 ISAPI 확장캐시에 64비트용 확장을 제거하지 않았기 때문입니다.



asp 만으로 구성된 웹사이트라면, 64비트용 확장캐시 목록을 지우거나 32비트용으로 변경을 해줘야 합니다.

참고로, IIS Admin 서비스, SMTP 서비스, NNTP 서비스, FTP 서비스등은 WWW 서비스와는 달리 64비트 전용으로만 가능합니다.

30-64-bit-iis.png

댓글 없음:

댓글 쓰기

가장 많이 본 글