IIS7 구성 설정 호환성

2007. 1. 21. 23:28 IT 및 개발/Windows Server
서론

IIS 7.0 에서도 여전히 레거시 구성 설정 스크립트와 응용 프로그램들을 사용할 수 있습니다. 이것이 가능한 이유는 메타베이스 시스템과 그에 대한 프로그래밍 인터페이스인 Admin Base Objects (ABO), 그리고 그 상위에 존재하는 ADSI 제공자와 WMI 제공자를 사용할 수 있게 해주는 선택적 설치 구성 요소가 존재하기 때문입니다. 시스템은 ABO 에 대한 호출을 가로채어 이를 새로운 구성 설정 시스템으로 맵핑합니다. 데이터는 applicationHost.config 파일에 저장되지만, ABO 호출자는 레거시 구성 설정 구조 뷰의 형태로 데이터를 출력합니다.

전제조건

  1. 반드시 IIS 가 머신에 설치되어 있어야만 합니다. 예를 들어서, 인터넷 익스플로러의 주소창에 http://localhost/ 라고 입력했을 때, "환영합니다." 페이지가 나타나야만 합니다. 만약 IIS 가 설치되어 있지 않다면 설치 방법에 관한 문서를 참고하여 IIS 를 설치합니다.
  2. 먼저 여러분들이 머신에 대한 관리자 권한을 갖고 있는지를 확인하십시오. 만약 여러분들이 내장된 Administrator 계정 이외의 계정으로 로그온했다면, 비록 해당 계정이 머신의 로컬 Administrators 그룹에 추가되어 있는 계정이라고 하더라도 기본적으로 관리자 권한을 갖고 있지 않은 것으로 간주됩니다. (이 기능은 LUA 라고 불리우는 Longhorn 에서 제공되는 새로운 보안 관련 기능으로서, 본문에서 다루고자 하는 범위를 벗어나는 주제입니다.) 내장된 Administrator 계정으로 로그온하거나, 또는 필요하다면 “runas” 명령줄 도구를 사용하여 명시적으로 응용 프로그램을 내장된 Administrator 계정의 권한으로 실행시키십시오. 예를 들어, notepad.exe 를 실행시키기 위해서 “runas /user:administrator notepad.exe” 와 같은 명령어를 실행시킬 수 있습니다. 이 명령어를 실행하면 Administrator 계정의 비밀번호 입력을 위한 대화 상자가 나타날 것입니다. 아니면 “runas /user:administrator cmd.exe” 명령어를 실행하여, 미리 관리자 권한을 가진 명령 프롬프트를 실행하는 것도 또 다른 방법입니다. 이 명령 프롬프트에서 실행되는 응용 프로그램들 역시 모두 관리자 권한으로 실행되며, 명렴 프롬프트에서 “runas” 구문을 사용할 필요가 없어집니다.
  3. 반드시 마스터 구성 설정 파일을 백업하도록 하십시오. 단지 applicationHost.config 파일을 다른 이름으로 복사해 놓기만 하더라도, 나중에 원상태로 복구가 가능합니다. 이 applicationHost.config 파일은 %windir%\system32\inetsrv\config 디렉터리에서 찾을 수 있습니다. 이 작업을 처리하기 위해서는 방금 위에서 설명한 관리자 권한이 필요하다는 점에 주의하십시오.
  4. 본격적인 작업을 시작하기 전에 시스템이 "깨끗한 상태" 가 되도록 하십시오. 이를 위해서, 지금까지 이루어진 applicationHost.config 파일에 대한 모든 변경 사항들을 원래대로 돌려 놓으십시오. (만약, 여러분들이 VPC 이미지를 사용중이라면, 가장 손쉬운 방법은 변경된 상태를 저장하지 않고 이미지를 재시작하는 것입니다.)
  5. 문제점이 발생하면 빨리 대응이 가능하도록 가급적 인터넷 익스플로러의 "HTTP 오류 메시지 표시" 기능을 (도구 > 인터넷 옵션 > 고급) 꺼놓는 것을 권장합니다.
  6. 주의 : .html 파일로부터 텍스트를 복사하는 경우, 숨겨진 문자들까지도 함께 복사가 됩니다. 따라서 여러분들이 복사한 텍스트를 비주얼 스튜디오 같은 편집기, 또는 명령 프롬프트에 붙여 넣으면 겉으로 보기에는 정상적으로 복사가 된 것처럼 보이지만, 숨겨진 문자들을 포함하고 있기 때문에 적절하게 동작을 하지 않게 됩니다. 그래서, 결과적으로는 문제점을 발견해 내기가 매우 어려워집니다. 이 문제를 해결하기 위한 가장 좋은 방법은 복사한 텍스트를 먼저 노트패드에 붙여 넣은 뒤에 노트패드에 복사된 텍스트를 다시 한 번 복사하는 것입니다. 이렇게 하면 숨겨진 문자들이 제거됩니다. 만약 텍스트가 짧다면, 복사해서 붙여 넣는 것이 아니라 여러분들이 직접 타이핑하여 입력하는 것이 더 간단할 수도 있습니다.

Windows Vista Starter 에디션과 Home 에디션은 웹 응용 프로그램을 실행하거나 웹 배포를 할 필요가 없는 가정과 개인 사용자들을 대상으로 하고 있습니다. IIS 7 웹 서버와 FTP 서버의 기능들은 이 에디션들에서는 사용할 수 없습니다. 그렇지만, 만약 자세하게 살펴본다면 여러분들은 이 에디션들에 설치할 수 있는 IIS 7 의 특정 구성 요소들을 발견할 수 있을 것입니다. 그러나, 이런 컴포넌트들을 설치한다고 하더라도, 정적 콘텐츠나 클래식 ASP, 또는 ASP.NET 등을 지원하는 웹 서버 기능이 제공되지는 않는다는 점에 주의하시기 바랍니다.

이 에디션들에서 사용 가능한 IIS 7 의 구성 요소들은 마이크로소프트의 Windows Communication Foundation (WCF) 기반 구조를 지원하기 위한 목적으로 제공되는 것입니다. 이러한 기반 구조를 제공하는 IIS 7 의 구성 요소들을 통칭하여 Windows 프로세스 활성화 서비스 (WAS) 라고 합니다. 그러나, WCF 기반의 응용 프로그램을 설치할 때 사용자가 명시적으로 WAS 를 설치할 필요는 없으며, 필요한 경우 WCF 에 의해서 자동으로 설치됩니다.

Vista Starter 에디션과 Home 에디션의 IIS 7 동시 요청 처리 제한값은 3 개 입니다.

이 에디션에서 사용할 수 있는 IIS 7 기능들의 목록은 본문 하단의 기능 정리표를 참고하시기 바랍니다.


ABO를 사용한 가상 전역 설정 기록

이번 단계에서는 AdminBaseObjects (ABO) 인터페이스를 사용하여 전역 설정값을 변경하고, 변경된 값을 applicationHost.config 파일에 기록하는 방법에 대해 살펴봅니다. 이러한 작업을 위해 MBExplorer.exe 도구를 사용할 것입니다.

먼저 IIS 7.0 의 메타베이스 호환성 구성 요소가 머신에 설치되어 있는지부터 확인하시기 바랍니다. 이 구성 요소는 기본적으로 설치되지 않습니다. Longhorn Server 에서는 서버 관리자 도구를 (시작->관리 도구->서버 관리자) 이용하여 "IIS 6.0 메타베이스 호환성" 구성 요소가 설치되어 있는지 확인할 수 있습니다. 아니면, 명령 프롬프트상에서 "net start iisadmin" 명령을 실행하여 IISADMIN 이라는 이름의 NT 서비스가 구동중인지 확인하십시오. 이 명령을 실행했을 때 IISADMIN 이 이미 실행되었다는 메시지가 나타나야만 합니다.

그 다음에 MBExplorer 도구를 웹으로부터 다운로드합니다. MSN 서치 등의 검색 엔진을 이용해서 이 도구를 찾다보면, 결국 여러분들은 Microsoft.com 의 다운로드 센터로 이동하게 되는데, 이 다운로드 센터에서 IIS 6.0 리소스 킷을 다운로드하고 설치해야 합니다. MBExplorer 도구는 바로 이 리소스 킷에 포함되어 있습니다. 정상적으로 설치를 마치고 나면 일반적으로 %ProgramFiles%\IIS Resources\Metabase Explorer\ 폴더에서 MBExplorer 도구의 실행 파일인 MBExplorer.exe 파일을 찾을 수 있습니다.

먼저 MBExplorer.exe 도구를 실행합니다. 이 도구는 AdminBaseObjects (ABO) 인터페이스의 최상단에서 동작하며, 그렇기 때문에 ABO 를 통해 얻어진 구성 설정 계층 정보를 보여줍니다.

좌측 패인에서, LM > W3SVC 노드를 찾습니다. 이 노드는 ABO 뷰 상에서 전역 수준의 구성 설정 계층을 나타내는 노드입니다.

이제 우측 패인에서 AuthFlags 속성을 선택합니다. 목록에서 Name 컬럼 헤더를 마우스로 클릭하여 속성들을 정렬하면 손쉽게 이 속성을 찾을 수 있습니다. 이 속성의 기본값은 5 입니다.


<메타베이스 탐색기>

이 값을 1 에서 7 사이의 정수를 입력하여 변경합니다.

노트패드 같은 텍스트 편집기를 사용하여 다음의 경로에 위치해 있는 ApplicationHost.config 파일을 엽니다.

%windir%\system32\inetsrv\config\ApplicationHost.config

그리고, 이 파일에서 <authentication> 섹션 그룹을 찾습니다. 이 섹션 그룹 하위에 존재하는 인증 섹션들은 여러분들이 설정한 값에 따라서 각각 활성화되거나 비활성화 되어 있을 것입니다. 예를 들어서, 만약 여러분들이 AuthFlags의 값을 2 로 설정했다면, BasicAuthentication 섹션의 enabled 속성값만 true 로 설정되어 있고, 다른 모든 인증 섹션들의 enabled 속성값은 false 로 설정되어 있을 것입니다. 왜냐하면 IIS 6.0 스키마상에서 값 "2" 가 "AUTH_BASIC" 와 매핑되어 있기 때문입니다.

다시 MBExplorer 를 사용하여 이 속성의 값을 바꿔보고 ApplicationHost.config 파일의 내용을 다시 확인해 보십시오. 메타베이스의 AuthFlags 속성값이 변경됨에 따라, 간접적으로 ApplicationHost.config 파일의 인증 스키마들이 활성화되거나 비활성화 되는 것을 확인할 수 있습니다.


ABO를 사용한 가상 디렉터리 설정 기록

이번 단계에서는 ABO 를 사용하여 가상 디렉터리의 속성값을 변경하고, 변경된 값을 applicationHost.config 를 통해서 확인하는 방법에 대해 살펴볼 것입니다. 여러분들이 변경하게 될 내용은 전역 설정에 해당하는 영역이 아니므로, ABO 호환성 계층은 applicationHost.config 파일 내부에 변경된 가상 디렉터리에 대응하는 경로가 포함된 새로운 location 태그를 생성하게 됩니다. 어떠한 web.config 파일도 메타베이스 호환성 구성 요소에 의해 변경되지 않는다는 점을 주의하십시오.

먼저 MBExplorer.exe 도구를 실행합니다.

좌측 패인에서, LM > W3SVC > 1 > ROOT 노드를 찾습니다. 이 노드는 기본 웹 사이트의 루트 응용 프로그램을 나타내는 노드입니다.

이제 AuthFlags 속성값을 설정합니다. 우측 패인에 AuthFlags 속성이 이미 존재한다면 이 과정을 생략할 수 있습니다. 좌측 패인에서 ROOT 노드를 선택하고 Edit 메뉴에서 New > DWORD Record 메뉴를 실행한 다음, Record Name or Identifier 입력란에 6000 을 입력합니다.


<메타베이스 탐색기>

이 작업은 기본값으로 0 이 설정된 AuthFlags 속성을 ROOT 노드에 생성합니다. 오른쪽 패인에서 이 속성을 더블 클릭하고 1 에서 7 사이의 정수를 입력하여 값을 변경합니다.

노트패드 같은 텍스트 편집기를 사용하여 다음의 경로에 위치해 있는 ApplicationHost.config 파일을 엽니다.

%windir%\system32\inetsrv\config\ApplicationHost.config

파일의 마지막 부분을 살펴보면, 여러분들이 설정한 값에 따라 활성화되거나 비활성화 된 authentication 섹션들을 포함한 새로운 <location path="Default Web Site"> 태그를 발견할 수 있을 것입니다.

요약

본문에서 여러분들은 구성 설정 시스템의 호환성 기능을 활성화하고 사용하는 방법에 대해서 살펴보았습니다. 여러분들은 레거시 도구를 사용하여 전역 수준이나 가상 디렉터리 수준의 설정들을 변경할 수 있으며, 이런 방법으로 변경된 내용은 applicationHost.config 파일에 기록됩니다. 여러분들은 맵핑과 기록을 위해서 adsutil.vbs 와 같은 다른 도구들을 사용하고 싶을 수도 있습니다. 또는 기존의 ABO/ADSI/WMI 스크립트들이나 응용 프로그램을 새로운 환경에서도 계속해서 사용할 수 있다는 사실을 확인하고 싶을 수도 있습니다. 또한, 본문에서 살펴본 방법과는 정반대의 방법으로도 동일한 실험을 해 볼 수 있는데, 먼저 applicationHost.config 파일의 값을 변경한 다음에 그 반영된 결과를 MBExplorer 를 비롯한 ABO 를 사용하는 도구들 및 스크립트를 통해서 확인한 수 있습니다.

출처 : 한국 마이크로소프트 MSDN (2006년)