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

비밀번호

댓글 작성자
 




... 31  32  33  34  35  36  [37]  38  39  40  41  42  43  44  45  ...
NoWriterDateCnt.TitleFile(s)
13047정성태5/6/202215609오류 유형: 809. Speech Recognition could not start
13046정성태5/5/202216239.NET Framework: 2002. C# XingAPI - ACF 파일을 이용한 퀀트 종목 찾기(t1857)
13045정성태5/5/202217008.NET Framework: 2001. C# XingAPI - 주식 종목에 따른 PBR, PER, ROE 구하는 방법(t3341 예제)
13044정성태5/4/202215635오류 유형: 808. error : clang++ exited with code 127
13043정성태5/3/202214232오류 유형: 807. C# - 닷넷 응용 프로그램에서 Informix DB 사용 시 오류 메시지 정리
13042정성태5/3/202216119.NET Framework: 2000. C# - 닷넷 응용 프로그램에서 Informix DB 사용 방법파일 다운로드1
13041정성태4/28/202215848개발 환경 구성: 642. Informix 데이터베이스 docker 환경 구성
13040정성태4/27/202214993VC++: 156. 비주얼 스튜디오 - Linux C/C++ 프로젝트에서 openssl 링크하는 방법
13039정성태4/27/202219058.NET Framework: 1999. C# - Playwright를 이용한 간단한 브라우저 제어 실습
13038정성태4/26/202214954오류 유형: 806. twine 실행 시 ConfigParser.ParsingError: File contains parsing errors: /root/.pypirc
13037정성태4/25/202215887.NET Framework: 1998. Azure Functions를 사용한 간단한 실습
13036정성태4/24/202216828.NET Framework: 1997. C# - nano 시간을 가져오는 방법 [2]
13035정성태4/22/202218272Windows: 204. Windows 10부터 바뀐 QueryPerformanceFrequency, QueryPerformanceCounter
13034정성태4/21/202214916.NET Framework: 1996. C# XingAPI - 주식 종목에 따른 PBR, PER, ROE, ROA 구하는 방법(t3320, t8430 예제)파일 다운로드1
13033정성태4/18/202216581.NET Framework: 1195. C# - Thread.Yield와 Thread.Sleep(0)의 차이점(?)
13032정성태4/17/202216854오류 유형: 805. Github의 50MB 파일 크기 제한 - warning: GH001: Large files detected. You may want to try Git Large File Storage
13031정성태4/15/202216534.NET Framework: 1194. C# - IdealProcessor와 ProcessorAffinity의 차이점
13030정성태4/15/202214356오류 유형: 804. 정규 표현식 오류 - Quantifier {x,y} following nothing.
13029정성태4/14/202216593Windows: 203. iisreset 후에도 이전에 설정한 전역 환경 변수가 w3wp.exe에 적용되는 문제
13028정성태4/13/202216754.NET Framework: 1193. (appsettings.json처럼) web.config의 Debug/Release에 따른 설정 적용
13027정성태4/12/202216435.NET Framework: 1192. C# - 환경 변수의 변화를 알리는 WM_SETTINGCHANGE Win32 메시지 사용법파일 다운로드1
13026정성태4/11/202217336.NET Framework: 1191. C 언어로 작성된 FFmpeg Examples의 C# 포팅 전체 소스 코드 [3]
13025정성태4/11/202216903.NET Framework: 1190. C# - ffmpeg(FFmpeg.AutoGen)를 이용한 vaapi_encode.c, vaapi_transcode.c 예제 포팅
13024정성태4/7/202215368.NET Framework: 1189. C# - 런타임 환경에 따라 달라진 AppDomain.GetCurrentThreadId 메서드
13023정성태4/6/202215923.NET Framework: 1188. C# - ffmpeg(FFmpeg.AutoGen)를 이용한 transcoding.c 예제 포팅 [3]
13022정성태3/31/202215485Windows: 202. 윈도우 11 업그레이드 - "PC Health Check"를 통과했지만 여전히 업그레이드가 안 되는 경우 해결책
... 31  32  33  34  35  36  [37]  38  39  40  41  42  43  44  45  ...