Microsoft MVP성태의 닷넷 이야기
웹: 6. IIS 7 마이그레이션 정리 - Sysnet [링크 복사], [링크+제목 복사],
조회: 27522
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 


제 홈페이지를 이번에 Windows 2003 IIS 6.0에서 Longhorn(빌드 5600) IIS 7.0으로 마이그레이션을 했습니다. 이런 식으로라도 해봐야 그나마 IIS 7.0에 대해서 조금씩 공부를 해볼 수 있을 테니. ^^

IIS 7.0에서는 기존 IIS 6.0에서의 호환성을 위해 "Classic mode"를 두고는 있지만, ^^ 공부를 위해서는 새롭게 나온 "Integrated mode"로 두고 해봐야 하는 거 아니겠습니까? ^^ 따라서 여기서는 "Classic mode"에 대해서는 전혀 고려를 하지 않고 순수하게 "Integrated mode"로만 다뤄볼 것입니다.

그다지 많은 시행착오를 하진 않았지만. 그래도 몇 가지는 알아둘 만한 이야기이니 부담 없이 읽어보십시오. ^^



1. IIS 설정값들이 web.config에 직렬화.

이미 IIS 7.0 관련 기사를 통해 알려드린 대로, 기존의 메타베이스에 저장되던 정보들이 web.config에 통합되었습니다. 따라서, IIS 관리자에서 설정한 값들이 web.config에 저장되고, 또한 web.config에 설정하게 되면 IIS 관리자에서 읽혀지게 됩니다. 근데... 이러한 점이 좋아진 듯하면서도 처음에는 이상한 현상들을 겪게 만들었습니다.

예를 들어, 저는 "기본 문서"의 순서를 바꾸기 위해 서비스 중인 "롱혼 서버"의 IIS 관리자에서 "default.aspx" 파일을 가장 상위로 올려두는 설정을 했습니다. 하지만, 얼마 안 있어서 이러한 설정은 다시 해제되어 있는 것을 발견하게 되었습니다.

원인은 간단했습니다. sysnet 웹 사이트 소스는 제 노트북 컴퓨터에 있었으며, 그것을 빌드해서 "롱혼 서버"로 올릴 때마다 web.config 파일이 덮어써지기 때문입니다. 따라서, 가능하다면 서버 측에서 IIS 관리자를 직접 구동하기보다는 로컬에서 IIS 관리자를 구동해서 값을 변경한 다음 web.config 파일을 업로드 하는 것이 바람직하겠습니다. (물론, 부득이 서버측에서 IIS 관리자를 통해서 web.config을 변경했다면 반드시 로컬에 있는 web.config 파일도 변경시켜 줘야 합니다.)

2. 사용자 정의 sectionGroup의 직렬화 버그

web.config 안에 여러분들이 정의한 sectionGroup이 있는 경우, IIS 관리자에서 web.config을 수정하게 되면, 기존 설정된 값들이 모두 초기화됩니다. 예를 들어, sysnet 웹 사이트의 경우 다음과 같은 별도의 sectionGroup을 정의하고 있는데,

<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<configSections>
<section name="WebLib.Extension" type="WebLib.Bcl.Configuration.AppSettingsReader, WebLib.Bcl"/>
<WebLib.Extension>
<RsaKeyList>
  <key name="SysnetWeb" default="true">
    <RSAKeyValue>
      <Modulus>...t6ci01dPDqzacWdKbgieYioMSK3Kytf4lTdv9P....</Modulus>
      <Exponent>;AQ..</Exponent>
		;
		;
    </RSAKeyValue>
  </key>
</RsaKeyList>
</WebLib.Extension>
;
;
</configuration>

IIS 관리자에서 web.config에 설정된 특정 값을 바꾸게 되면, 위의 Modulus, Exponent 등에 설정된 모든 값들이 삭제되어 버립니다. 만약, 여러분들의 소스가 소스 컨트롤 등의 툴을 사용하고 있지 않다면 IIS 7로 적용할 때에는 반드시 web.config에 대한 백업을 하셔야 합니다. (물론, 향후 롱혼 정식 버전의 릴리즈에서는 이런 문제가 해결되리라고 봅니다.)

3. SMTP 서비스 설치

찾기가 좀 어렵습니다. ^^ "시작" / "Administrative Tools" / "Server Manager"를 실행시킨 후, "Features Summary"의 "Add features" 버튼을 누릅니다. 그럼, "SMTP Server" 항목을 찾을 수 있습니다. ^^

4. 명시적으로 인코딩 설정.

IIS 7.0으로 서비스를 이전하고 나니, 가장 먼저 한글이 깨지는 변화가 있었습니다. 왜냐하면, 롱혼 서버가 영문 버전이라 기본 파일 인코딩 값이 "Windows 1252"로 되어 있기 때문입니다.

그래서, 이번 기회에 아예 "파일" 인코딩 값까지 모두 "utf-8"로 바꿔 버렸습니다. 이 값은 web.config으로도 바꿀 수 있지만, 아래 화면과 같이 IIS 7.0에서는 관리 화면에서 바꾸는 것이 지원됩니다.

iis_70_migration_1.png

당연하겠지만, 이로 인해서 기존에 "ksc_5601-1987(일명, Windows 949)" 인코딩으로 저장되어 있던 파일을 웹 브라우저로 보게 되면 한글이 모두 깨져 버립니다. 그 때문에 모든 파일을 찾아서 인코딩 값을 "utf-8"로 변환시켜 줬습니다.

참고로, VS.NET 2005 통합환경에서 파일 인코딩을 바꾸려면, 해당 파일을 열은 다음에 "파일" 메뉴의 "Advanced save options... (고급 저장 옵션)"을 선택해서 다음 화면과 같이 인코딩을 바꿔주시면 됩니다.

iis_70_migration_2.png

(물론, 저처럼 파일 인코딩 값을 utf-8로 하지 않고, "ksc_5601-1987"로 설정하시면 파일의 인코딩 방식을 변경하지 않아도 됩니다.)

5. SSL 인증서 설치

이 부분은 다음과 같이 2가지 별도의 토픽으로 설명해 놓았습니다.

 
IIS 7 - SSL 사이트 설정하는 방법 
 ; https://www.sysnet.pe.kr/2/0/428

서비스를 위한 인증서 설치
 ; https://www.sysnet.pe.kr/2/0/429


6. 원격 디버깅

비스타 및 롱혼은 원격 디버깅하는 방법이 다소 불편해 졌습니다. 기존 방법에 추가해서, msvsmon.exe를 관리자 권한으로 실행시켜 하는 것이 추가되었습니다. 좀 더 자세한 내용은 다음의 토픽을 참고하십시오.

 Vista & Longhorn: 9. VS.NET 2005 원격 디버깅 구성 
 ; https://www.sysnet.pe.kr/2/0/419


7. CRL(Certificate Revocation List)에 대한 확인 강화

구체적으로 이 부분은 문서로 나온 것이 없어서(역시나, 제가 못 찾았을 수도 있습니다.) 정확한 확인은 불가능했지만, CRL을 통한 인증서 확인 기능이 강화되어 나타나는 문제가 있었습니다. 이에 관해서는 다음의 토픽을 참고하십시오.

 CRL(Certificate Revocation List) 관리
 ; https://www.sysnet.pe.kr/2/0/414
 
 IIS 7에서 클라이언트 측 인증서 사용 시 주의점 
 ; https://www.sysnet.pe.kr/2/0/418




이 외에, IIS 7.0에 대한 공식 문서는 다음의 경로를 참조하십시오.

Internet Information Services (IIS) 7.0 (Beta) Technical Library
; http://technet2.microsoft.com/WindowsServer/en/library/939d621e-c023-48f8-9503-47f24a6be7211033.mspx?mfr=true




[이 토픽에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]







[최초 등록일: ]
[최종 수정일: 6/28/2021]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... 46  47  [48]  49  50  51  52  53  54  55  56  57  58  59  60  ...
NoWriterDateCnt.TitleFile(s)
12740정성태7/29/202114657오류 유형: 747. SharePoint - InvalidOperationException 0x80131509
12739정성태7/28/202115023오류 유형: 746. Azure Active Directory - IDW10106: The 'ClientId' option must be provided.
12738정성태7/28/202115971오류 유형: 745. Azure Active Directory - Client credential flows must have a scope value with /.default suffixed to the resource identifier (application ID URI).
12737정성태7/28/202115073오류 유형: 744. Azure Active Directory - The resource principal named api://...[client_id]... was not found in the tenant
12736정성태7/28/202115365오류 유형: 743. Active Azure Directory에서 "API permissions"의 권한 설정이 "Not granted for ..."로 나오는 문제
12735정성태7/27/202115205.NET Framework: 1081. C# - Azure AD 인증을 지원하는 데스크톱 애플리케이션 예제(Windows Forms) [2]파일 다운로드1
12734정성태7/26/202132021스크립트: 20. 특정 단어로 시작하거나/끝나는 문자열을 포함/제외하는 정규 표현식 - Look-around
12733정성태7/23/202119941.NET Framework: 1081. Self-Contained/SingleFile 유형의 .NET Core/5+ 실행 파일을 임베딩한다면? [1]파일 다운로드2
12732정성태7/23/202113359오류 유형: 742. SharePoint - The super user account utilized by the cache is not configured.
12731정성태7/23/202115388개발 환경 구성: 584. Add Internal URLs 화면에서 "Save" 버튼이 비활성화 된 경우
12730정성태7/23/202116852개발 환경 구성: 583. Visual Studio Code - Go 코드에서 입력을 받는 경우
12729정성태7/22/202115301.NET Framework: 1080. xUnit 단위 테스트에 메서드/클래스 수준의 문맥 제공 - Fixture
12728정성태7/22/202115336.NET Framework: 1079. MSTestv2 단위 테스트에 메서드/클래스/어셈블리 수준의 문맥 제공
12727정성태7/21/202116512.NET Framework: 1078. C# 단위 테스트 - MSTestv2/NUnit의 Assert.Inconclusive 사용법(?) [1]
12726정성태7/21/202116282VS.NET IDE: 169. 비주얼 스튜디오 - 단위 테스트 선택 시 MSTestv2 외의 xUnit, NUnit 사용법 [1]
12725정성태7/21/202114767오류 유형: 741. Failed to find the "go" binary in either GOROOT() or PATH
12724정성태7/21/202117705개발 환경 구성: 582. 윈도우 환경에서 Visual Studio Code + Go (Zip) 개발 환경 [1]
12723정성태7/21/202114534오류 유형: 740. SharePoint - Alternate access mappings have not been configured 경고
12722정성태7/20/202114308오류 유형: 739. MSVCR110.dll이 없어 exe 실행이 안 되는 경우
12721정성태7/20/202115483오류 유형: 738. The trust relationship between this workstation and the primary domain failed. - 세 번째 이야기
12720정성태7/19/202114760Linux: 43. .NET Core/5+ 응용 프로그램의 Ubuntu (Debian) 패키지 준비
12719정성태7/19/202113930오류 유형: 737. SharePoint 설치 시 "0x800710D8 The object identifier does not represent a valid object." 오류 발생
12718정성태7/19/202113934개발 환경 구성: 581. Windows에서 WSL로 파일 복사 시 root 소유권으로 적용되는 문제파일 다운로드1
12717정성태7/18/202114127Windows: 195. robocopy에서 파일의 ADS(Alternate Data Stream) 정보 복사를 제외하는 방법
12716정성태7/17/202115263개발 환경 구성: 580. msbuild의 Exec Task에 robocopy를 사용하는 방법파일 다운로드1
12715정성태7/17/202122446오류 유형: 736. Windows - MySQL zip 파일 버전의 "mysqld --skip-grant-tables" 실행 시 비정상 종료 [1]
... 46  47  [48]  49  50  51  52  53  54  55  56  57  58  59  60  ...