Microsoft MVP성태의 닷넷 이야기
웹: 6. IIS 7 마이그레이션 정리 - Sysnet [링크 복사], [링크+제목 복사],
조회: 27715
글쓴 사람
정성태 (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

비밀번호

댓글 작성자
 




... 136  137  [138]  139  140  141  142  143  144  145  146  147  148  149  150  ...
NoWriterDateCnt.TitleFile(s)
1605정성태1/23/201421184개발 환경 구성: 212. Visual Studio Online과 "Monaco" 서비스 연동
1604정성태1/23/201421504오류 유형: 216. 윈도우 서버 백업 - Hyper-V 가상 머신이 백업되지 않는 경우 (2)
1603정성태1/23/201433601개발 환경 구성: 211. Hyper-V - Generation 2 유형의 VM 생성 시 ISO 부팅이 안된다면? [1]
1602정성태1/22/201423801디버깅 기술: 62. windbg - 사용자 모드 원격 디버깅
1601정성태1/22/201427420오류 유형: 215. windbg - Symbol file could not be found. Defaulted to export symbols
1600정성태1/19/201424069.NET Framework: 410. C# - 재귀호출을 스택 자료구조와 반복문을 이용해 대체하는 방법을 Paralle.For와 함께? [1]파일 다운로드1
1599정성태1/18/201432188.NET Framework: 409. C# - 재귀호출을 스택 자료구조와 반복문을 이용해 대체하는 방법 [1]파일 다운로드1
1598정성태1/17/201425509디버깅 기술: 61. NT 서비스 시작 단계에서 닷넷 메서드에 BP를 걸어 디버깅하는 방법
1597정성태1/17/201424107Phone: 9. Xamarin Android에 구글 AdMob 사용하는 방법 [1]
1596정성태1/17/201423044오류 유형: 214. Local SYSTEM 계정으로 실행된 IE에서 다운로드가 안 되는 문제
1595정성태1/16/201420039오류 유형: 213. attrib - Not resetting system file
1594정성태1/15/201422187오류 유형: 212. 마이크로소프트 라이브 계정 로그인 실패하는 경우
1593정성태1/14/201420812오류 유형: 211. ASP.NET 응용 프로그램을 IIS Express에서 디버깅할 때 "Requested registry access is not allowed" 오류 발생
1592정성태1/14/201421108오류 유형: 210. 2대의 AD가 있는 경우 도메인에 컴퓨터 추가를 실패한다면? [1]
1591정성태1/14/201423277오류 유형: 209. DebugDiag: Unable to find mscordacwks_x86_x86_[...version...].dll
1590정성태1/14/201423938오류 유형: 208. VSS Writer - NTDS 오류
1589정성태1/14/201432880Windows: 85. 컴퓨터를 껐는데도 어느 순간 자동으로 켜진다면? [2]
1588정성태1/14/201429662Windows: 84. 윈도우 7/8 - 메뉴 항목이 잔상으로 남는 문제
1587정성태1/14/201425577디버깅 기술: 60. NT 서비스가 시작하자마자 디버거를 연결시키는 방법 (2)
1586정성태1/14/201427293디버깅 기술: 59. NT 서비스가 시작하자마자 디버거를 연결시키는 방법 (1) [1]
1585정성태1/14/201430191VS.NET IDE: 84. Visual Studio를 이용한 파일 비교(diff)
1584정성태1/13/201432492Windows: 83. 윈도우 8 - UI가 있는 프로그램을 Local SYSTEM 권한의 세션 0 데스크톱에서 실행하는 방법
1583정성태1/13/201430488Windows: 82. 윈도우 8 - "Interactive Services Detection" 서비스 시작하는 방법 [1]
1582정성태1/12/201428958개발 환경 구성: 210. 원격 데스크톱(RDP) 접속 프로그램 - Royal TS [1]
1581정성태1/12/201430301.NET Framework: 408. 자바와 닷넷의 제네릭 차이점 - 중간 언어 및 공변/반공변 처리 [8]
1580정성태1/12/201440326.NET Framework: 407. 닷넷 사용자 정의 예외 클래스의 최소 구현 코드 [1]
... 136  137  [138]  139  140  141  142  143  144  145  146  147  148  149  150  ...