본문 바로가기

TechLog

x64 환경에서의 IIS 6.0 구성시 32비트/64비트 설정

뭘 좀 정리해서 써볼려고 하면 이미 정리해둔 곳이 있다 :

64비트 버전의 Windows에서 32비트 버전의 ASP.NET 1.1과 64비트 버전의 ASP.NET 2.0 간을 전환하는 방법
http://support.microsoft.com/kb/894435/ko

x64 프로세서*가 있는 시스템에 64비트 윈도우를 설치해서 IIS를 운영할 경우 유의해야 할 점이 몇 가지 있다. x64 버전 윈도우에서 32비트 어플리케이션도 WoW라는 실행 환경 위에서 실행시킬 수 있다는 것 쯤은 알고 있겠지만, 약간의 제약이 있다. IIS 6.0에서는 32비트 어플리케이션 풀과 64비트 어플리케이션 풀을 동시에 실행할 수 없다.

* 64비트 프로세서에는 크게 두 가지 종류가 있다. 하나는 데스크탑에서 일반적으로 사용되는 64비트 지원 펜티엄, 애슬론 프로세서 등과 AMD의 옵테론 서버 프로세서에 해당하는 x64 프로세서가 있고, 또 한가지는 인텔의 아이태니엄 프로세서에 해당하는 IA64 프로세서가 있다.

이게 무엇을 의미하느냐 하면, 예를 들어 64비트 IIS에서 ASP.NET 1.1 버전의 어플리케이션을 운영한다면, ASP.NET 2.0 어플리케이션은 무조건 32비트 모드로 실행되어야 한다는 뜻이다. (ASP.NET 1.1은 64비트 버전의 익스텐션이 제공되지 않는다) COM+ 컴포넌트 호환성 등의 이유로 IIS의 어플리케이션 풀에서 32비트 컴포넌트가 올라와야 할 때도 마찬가지고, 32비트의 ASP를 사용해야 할 경우(ASP도 64비트 버전 익스텐션이 없다)에도 64비트 모드의 IIS 어플리케이션 실행 환경을 포기해야 한다.

해서,

Running 32-bit Applications on 64-bit Windows (IIS 6.0)(URL에 유의하시라)와 같은 포스트를 별 생각 없이 따라하다가는 시스템의 다른 익스텐션(예를 들면 WebDAV라든가..)이 기냥 멎어버리는 사태가 발생한다. 32비트 어플리케이션을 허용하고 32비트 worker 프로세스가 기동하는 순간 64비트 익스텐션은 실행불가 상태가 되기 때문이다. (게다가 윈도우는 이런 상태를 전혀 알려주지도 않는다!) 이럴 경우에 익스텐션을 올바로 사용하고 싶다면 32비트 익스텐션에 대한 설정을 따로 적용해서 사용해야 한다. 이런 파일들은 windows\SysWOW64 폴더라든가, Program Files (x86) 이라든가... 여기저기 숨어 있으므로 잘 찾아내서 사용하도록 하자. 폴더 위치는 익스텐션마다 천차만별이므로 다 설명해줄 방법이 없다.

어쨌든 x64 환경의 IIS에서 32비트 어플리케이션과 관련된 설정을 요약하자면,

ASP.NET 1.1, 32비트 버전:
32비트 버전의 ASP.NET 1.1을 실행하려면 다음과 같이 하십시오.

1.시작, 실행을 차례로 누르고 cmd를 입력한 다음 확인을 누릅니다.
2.다음 명령을 입력하여 32비트 모드를 사용합니다.
cscript %SYSTEMDRIVE%\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1
3.다음 명령을 입력하여 ASP.NET 1.1 버전을 설치하고 IIS 루트에 스크립트 맵을 설치합니다.
%SYSTEMROOT%\Microsoft.NET\Framework\v1.1.4322\aspnet_regiis.exe -i
4.인터넷 정보 서비스 관리자의 웹 서비스 확장 목록에서 ASP.NET 버전 1.1.4322의 상태가 허용됨으로 설정되어 있는지 확인합니다.

ASP.NET 2.0, 32비트 버전:
32비트 버전의 ASP.NET 2.0을 실행하려면 다음과 같이 하십시오.

1.시작, 실행을 차례로 누르고 cmd를 입력한 다음 확인을 누릅니다.
2.다음 명령을 입력하여 32비트 모드를 사용합니다.
cscript %SYSTEMDRIVE%\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1
3.다음 명령을 입력하여 ASP.NET 2.0 버전(32비트)을 설치하고 IIS 루트에 스크립트 맵을 설치합니다.
%SYSTEMROOT%\Microsoft.NET\Framework\v2.0.40607\aspnet_regiis.exe -i
4.인터넷 정보 서비스 관리자의 웹 서비스 확장 목록에서 ASP.NET 버전 2.0.40607(32비트)의 상태가 허용됨으로 설정되어 있는지 확인합니다.

ASP.NET 2.0, 64비트 버전:
64비트 버전의 ASP.NET 2.0을 실행하려면 다음과 같이 하십시오.

1.시작, 실행을 차례로 누르고 cmd를 입력한 다음 확인을 누릅니다.
2.다음 명령을 입력하여 32비트 모드를 사용하지 않습니다.
cscript %SYSTEMDRIVE%\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 0
3.다음 명령을 입력하여 ASP.NET 2.0 버전을 설치하고 IIS 루트에 스크립트 맵을 설치합니다.
%SYSTEMROOT%\Microsoft.NET\Framework64\v2.0.40607\aspnet_regiis.exe -i
4.인터넷 정보 서비스 관리자의 웹 서비스 확장 목록에서 ASP.NET 버전 2.0.40607의 상태가 허용됨으로 설정되어 있는지 확인합니다.

참고 ASP.NET 2.0의 빌드 버전은 현재 릴리스된 빌드 버전에 따라 다를 수 있습니다. 위의 단계는 빌드 버전 2.0.40607에 해당합니다.