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

비밀번호

댓글 작성자
 




1  2  3  4  5  6  7  8  9  10  11  12  13  14  [15]  ...
NoWriterDateCnt.TitleFile(s)
13273정성태2/28/20234344.NET Framework: 2099. C# - 관리 포인터로서의 ref 예약어 의미
13272정성태2/27/20234591오류 유형: 850. SSMS - mdf 파일을 Attach 시킬 때 Operating system error 5: "5(Access is denied.)" 에러
13271정성태2/25/20234580오류 유형: 849. Sql Server Configuration Manager가 시작 메뉴에 없는 경우
13270정성태2/24/20234081.NET Framework: 2098. dotnet build에 /p 옵션을 적용 시 유의점
13269정성태2/23/20234716스크립트: 46. 파이썬 - uvicorn의 콘솔 출력을 UDP로 전송
13268정성태2/22/20235219개발 환경 구성: 667. WSL 2 내부에서 열고 있는 UDP 서버를 호스트 측에서 접속하는 방법
13267정성태2/21/20235111.NET Framework: 2097. C# - 비동기 소켓 사용 시 메모리 해제가 finalizer 단계에서 발생하는 사례파일 다운로드1
13266정성태2/20/20234757오류 유형: 848. .NET Core/5+ - Process terminated. Couldn't find a valid ICU package installed on the system
13265정성태2/18/20234630.NET Framework: 2096. .NET Core/5+ - PublishSingleFile 유형에 대한 runtimeconfig.json 설정
13264정성태2/17/20236237스크립트: 45. 파이썬 - uvicorn 사용자 정의 Logger 작성
13263정성태2/16/20234392개발 환경 구성: 666. 최신 버전의 ilasm.exe/ildasm.exe 사용하는 방법
13262정성태2/15/20235473디버깅 기술: 191. dnSpy를 이용한 (소스 코드가 없는) 닷넷 응용 프로그램 디버깅 방법 [1]
13261정성태2/15/20234850Windows: 224. Visual Studio - 영문 폰트가 Fullwidth Latin Character로 바뀌는 문제
13260정성태2/14/20234591오류 유형: 847. ilasm.exe 컴파일 오류 - error : syntax error at token '-' in ... -inf
13259정성태2/14/20234749.NET Framework: 2095. C# - .NET5부터 도입된 CollectionsMarshal
13258정성태2/13/20234574오류 유형: 846. .NET Framework 4.8 Developer Pack 설치 실패 - 0x81f40001
13257정성태2/13/20234667.NET Framework: 2094. C# - Job에 Process 포함하는 방법 [1]파일 다운로드1
13256정성태2/10/20235414개발 환경 구성: 665. WSL 2의 네트워크 통신 방법 - 두 번째 이야기
13255정성태2/10/20234825오류 유형: 845. gihub - windows2022 이미지에서 .NET Framework 4.5.2 미만의 프로젝트에 대한 빌드 오류
13254정성태2/10/20234749Windows: 223. (WMI 쿼리를 위한) PowerShell 문자열 escape 처리
13253정성태2/9/20235547Windows: 222. C# - 다른 윈도우 프로그램이 실행되었음을 인식하는 방법파일 다운로드1
13252정성태2/9/20234339오류 유형: 844. ssh로 명령어 수행 시 멈춤 현상
13251정성태2/8/20234724스크립트: 44. 파이썬의 3가지 스레드 ID
13250정성태2/8/20236617오류 유형: 843. System.InvalidOperationException - Unable to configure HTTPS endpoint
13249정성태2/7/20235459오류 유형: 842. 리눅스 - You must wait longer to change your password
13248정성태2/7/20234377오류 유형: 841. 리눅스 - [사용자 계정] is not in the sudoers file. This incident will be reported.
1  2  3  4  5  6  7  8  9  10  11  12  13  14  [15]  ...