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

비밀번호

댓글 작성자
 




... 76  77  78  79  80  [81]  82  83  84  85  86  87  88  89  90  ...
NoWriterDateCnt.TitleFile(s)
11911정성태5/23/201917503VS.NET IDE: 136. Visual Studio 2019 - 리눅스 C/C++ 프로젝트에 인텔리센스가 동작하지 않는 경우
11910정성태5/23/201927124Math: 50. C# - MathNet.Numerics의 Matrix(행렬) 연산 [1]파일 다운로드1
11909정성태5/22/201921221.NET Framework: 837. C# - PLplot 사용 예제 [1]파일 다운로드1
11908정성태5/22/201919955.NET Framework: 836. C# - Python range 함수 구현파일 다운로드1
11907정성태5/22/201916682오류 유형: 541. msbuild - MSB4024 The imported project file "...targets" could not be loaded
11906정성태5/21/201916942.NET Framework: 835. .NET Core/C# - 리눅스 syslog에 로그 남기는 방법
11905정성태5/21/201917437.NET Framework: 834. C# - 폴더 경로 문자열에서 "..", "." 표기를 고려한 최종 문자열을 얻는 방법 - 두 번째 이야기
11904정성태5/21/201925862.NET Framework: 833. C# - Open Hardware Monitor를 이용한 CPU 온도 정보 [1]파일 다운로드1
11903정성태5/21/201919678오류 유형: 540. .NET Core - System.PlatformNotSupportedException: The named version of this synchronization primitive is not supported on this platform.
11902정성태5/21/201917777오류 유형: 539. mstest 실행 시 "The directory name is invalid." 오류 발생
11901정성태5/21/201919722오류 유형: 538. msbuild 오류 - Could not find a part of the path '%LOCALAPPDATA%\Temp\2\.NETFramework,Version=v4.0.AssemblyAttributes.cs'
11900정성태5/18/201918700오류 유형: 537. "sfc /scannow" 실행 중 시스템이 부팅되는 현상
11899정성태5/17/201919527Linux: 9. Linux에서 윈도우의 OutputDebugString 대신 사용할 수 있는 syslog [1]
11898정성태5/16/201921328VC++: 130. C++ string의 c_str과 data 함수의 차이점 [3]
11897정성태5/16/201928291오류 유형: 536. Visual Studio - "Developer Pack"을 설치했는데도 "대상 프레임워크" 목록에 나오지 않는 경우 [2]
11896정성태5/15/201923292개발 환경 구성: 440. C#, C++ - double의 Infinity, NaN 표현 방식파일 다운로드1
11895정성태5/12/201921087.NET Framework: 832. ML.NET Model Builder - 회귀(Regression), 다중 분류(Multi-class classification) 예제파일 다운로드1
11894정성태5/10/201922837VS.NET IDE: 135. Visual Studio - ML.NET Model Builder 소개 [5]
11893정성태5/10/201919711오류 유형: 535. C# 6.0 이상의 문법을 컴파일 시 오류가 발생한다면?
11892정성태5/10/201919571웹: 38. HTTP Cookie의 expires 시간 형식(RFC7231)
11891정성태5/9/201922649.NET Framework: 831. (번역글) .NET Internals Cookbook Part 12 - Memory structure, attributes, handles
11890정성태5/8/201917789개발 환경 구성: 439. "Visual Studio Enterprise is required to execute the test." 메시지와 관련된 코드 기록
11889정성태5/8/201918414개발 환경 구성: 438. mstest, QTAgent의 로그 파일 설정 방법
11888정성태5/8/201935769.NET Framework: 830. C# - 비동기 호출을 취소하는 CancellationToken의 간단한 예제 코드 [1]파일 다운로드1
11887정성태5/8/201921443.NET Framework: 829. C# - yield 문을 사용할 수 있는 메서드의 조건
11886정성태5/7/201919235오류 유형: 534. mstest.exe 실행 시 "Visual Studio Enterprise is required to execute the test." 오류 [2]
... 76  77  78  79  80  [81]  82  83  84  85  86  87  88  89  90  ...