독까의 이야기

웹을 통한 음악 및 동영상 시청을 위해서는 서버에 미디어 서비스가 설치가 되어 있어야 한다. 


기존 Windows 2003 에서는 윈도우 기능 추가를 통해서 쉽게 설치가 가능한데, 2008 이상 부터는 웹플랫폼을 이용한 설치 진행으로 변경 되었다. 


Windows 2003 



Windows 2008 이상 



이번에 테스트 진행한 서버의 환경은 Windows Server 2016 이다. 


IIS 에 "웹플랫폼 설치 관리자" 를 설치하는 것 부터 시작을 한다. 



서버에서 웹브라우저 실행 후, https://www.iis.net/downloads 접속 후, 설치 파일 다운로드 및 실행.




웹플랫폼 설치가 완료되면, 실행 후 검색창에 "미디어" 를 입력하여 설치 패키지를 검색한다. 



결과를 통해 출력 된 설치 패키지를 추가 하고, 하단의 설치를 클릭 한다. 



그런데, 설치가 진행되지 않는다. 



혹시나 싶어, 설치 파일을 직접 다운로드 후 설치를 진행 한다. 



역시나 설치가 안되는데, 설치 실패 원인 메시지를 출력해주기는 한다. 



분명히 Windows 2016 에 설치 된 IIS 의 버전은 7.0 을 훨씬 넘는 10.0 인데 왜 설치가 안 될까? 를 고민하지도 않고 구글 검색을 시작한다. 


레지스트리 변경을 통해 하위 버전 웹플랫폼 제공 패키지 설치가 가능했다는 글을 확인 했다. 


키 : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\InetStp

값 : MajorVersion 

해당 값의 수치를 10 에서 9 로 변경을 한다. 



변경 후, 웹플랫폼 또는 직접 다운로드 받은 설치 파일을 통해 미디어 서비스 설치를 다시 진행한다. 



레지스트리 변경값 원복 후, IIS 에서 미디어 서비스 관리자를 확인해 본다. 



미디어 서비스가 정상적으로 설치되었음이 확인 된다. 


일반적으로 서버에 동영상을 업로드하여 단순하게 재생만 하는 것이라면, 굳이 미디어 서비스 설치를 할 필요는 없다. 


일부 웹브라우저 또는 미디어 플레이어 에서 80 포트를 이용해서 동영상 재생이 가능하기 때문이다. 


그럼 왜 미디어 서비스를 설치를 해야 하는가? 


실시간 스트리밍 방송 서비스를 하고자 하는 사용자가 있기 때문이다. 


실시간 스트리밍 서비스를 위한 설정 작업에 대해서는 다음 게시글에 작성 하고자 한다. 



# IISMedia_amd64_ko-KR.msi 다운로드

IISMedia_amd64_ko-KR.msi



Windows OS 업그레이드 테스트를 진행 하였다. 


테스트 환경은 아래와 같다. 


기존 OS 버전 : Windows 2008 R2 

업그레이드 진행 될 상위 OS 버전 : Windows 2012 R2 / Windows 2016


방식 : 윈도우 구동 상태에서 상위 버전 OS 설치 CD 삽입 후 업그레이드 선택으로 진행 한다. 



# 1 

Windows 2008 R2 -> Windows 2012 R2


* 테스트 결과 : 

윈도우 설정 및 설치 된 프로그램 상태 동일 (프로그램 호환성 문제는 발생 할 수 있음)

정품 인증은 초기화 됨 : Windows 2012 R2 키를 새로 입력 해야 함 




* 업그레이드 완료 전 롤백 선택 가능 








# 2 

Windows 2008 R2 -> Windows 2016


* 테스트 결과 : 

윈도우 설정 및 설치 된 프로그램 전부 초기화

OS 를 신규로 설치한 것과 차이가 없음





# 3 

Windows 2012 R2 -> Windows 2016


* 테스트 결과 : 

윈도우 설정 및 설치 된 프로그램 상태 동일 (프로그램 호환성 문제는 발생 할 수 있음)

정품 인증은 초기화 됨 : Windows 2016 키를 새로 입력 해야 함 









# 결론 : OS 업그레이드시 바로 윗 단계 버전으로 진행시에는 기존 설정 유지 가능하나, 두 단계 이상의 버전으로 업그레이드시에는 OS 를 새로 설치하는 것과 동일하다. 프로그램 호환성은 보증 하지 않는다. 


서버가 한 대면 계정 생성을 수동으로 진행을 하겠는데, 여러 대의 서버에 동일 계정을 생성해야 할 경우 수동으로 하나씩 진행하는게 비효율적이다. 


계정 생성 및 그룹 설정, 암호 사용 기간 제한 해제 까지 가능한 구문 이다. 


내용을 알맞게 수정 후 cmd 에서 그냥 복사 붙이기 하면 된다. 


net user 신규계정명 패스워드 /add /comment:"신규계정에 대한 설명" 

net localgroup administrators 신규계정명 /add

wmic useraccount where name="신규계정명" set passwordexpires=false


자세한 설명은 cmd 에서 net help user 하면 나오는데 그냥 아래거 참고 하면 된다. 



이 명령에 대한 구문:


NET USER

[username [password | *] [options]] [/DOMAIN]

         username {password | *} /ADD [options] [/DOMAIN]

         username [/DELETE] [/DOMAIN]

         username [/TIMES:{times | ALL}]

         username [/ACTIVE: {YES | NO}]


NET USER는 컴퓨터에 사용자 계정을 만들고 기존 사용자 계정을 수정합니다.

스위치 없이 이 명령을 사용하면 컴퓨터의 모든 사용자 계정이 나열됩니다.

사용자 계정 정보는 사용자 계정 데이터베이스에 저장되어 있습니다.


username     추가하거나 삭제, 수정 또는 조회할 사용자 계정의 이름입니다.

             사용자 계정의 이름은 최대 20자까지 

             지정할 수 있습니다.

password     사용자 계정에 대한 암호를 지정하거나 변경합니다.

             암호 길이는 NET ACCOUNTS 명령의 /MINPWLEN 옵션에 설정된 

             최소 길이를 충족해야 합니다. 암호에는 최대 14자까지 

             지정할 수 있습니다.

*            암호에 대한 프롬프트를 생성합니다. 암호 프롬프트에 

             암호를 입력하면 화면에 암호가 표시되지 않습니다.

/DOMAIN      현재 도메인의 도메인 컨트롤러에서 작업을

             수행합니다.

/ADD         사용자 계정을 사용자 계정 데이터베이스에 추가합니다.

/DELETE      사용자 계정 데이터베이스에서 사용자 계정을 제거합니다.


옵션          다음과 같습니다.


   옵션                        설명

      --------------------------------------------------------------------

   /ACTIVE:{YES | NO}         계정을 활성화하거나 비활성화합니다.

                              계정이 활성화되어 있지 않으면 사용자가 서버에

                              액세스할 수 없습니다. 기본값은 YES입니다.

   /COMMENT:"text"            사용자 계정에 대한 설명을

                              입력합니다. 텍스트는 따옴표로

                              묶습니다.

   /COUNTRYCODE:nnn           운영 체제 국가 코드를 사용하여

                              사용자의 도움말 및 오류 메시지에 대해 지정된

                              언어 파일을 구현합니다. 0 값은

                              기본 국가 코드를 나타냅니다.

   /EXPIRES:{date | NEVER}    날짜가 설정되어 있는 경우 계정이 만료됩니다.

                              NEVER는 계정에 시간 제한을 설정하지

                              않습니다. 만료 날짜는 mm/dd/yy(yy)와 같은

                              형식으로 지정합니다. 월에는 숫자, 영어 단어

                              또는 세 자리 약자를 사용할 수 있습니다.

                              연도에는 두 자리 또는 네 자리 숫자를 사용할 수 있습니다.  

                              날짜는 공백 없이 슬래시(/)를 사용하여

                              구분합니다.

   /FULLNAME:"name"           사용자 이름이 아닌 사용자의 전체

                              이름입니다. 이름은 따옴표로

                              묶습니다.

   /HOMEDIR:경로 이름         사용자 홈 디렉터리의 경로를 설정합니다. 

                              이 옵션은 해당 경로가 있어야 사용할 수 있습니다.

   /PASSWORDCHG:{YES | NO}    사용자가 자신의 암호를 변경할 수 있는지 여부를

                              지정합니다. 기본값은 YES입니다.

   /PASSWORDREQ:{YES | NO}    사용자 계정에 암호를 지정해야 하는지 여부를

                              지정합니다. 기본값은 YES입니다.

   /LOGONPASSWORDCHG:{YES|NO} 다음에 로그온할 때 사용자가 암호를

                              변경해야 하는지 여부를 지정합니다. 기본값은 NO입니다.

   /PROFILEPATH[:path]        사용자의 로그온 프로필 경로를 설정합니다.

   /SCRIPTPATH:pathname       사용자의 로그온 스크립트

                              위치입니다.

   /TIMES:{times | ALL}       로그온 시간입니다. TIMES는 

                              요일[-day][,day[-day]],시간[-time][,time[-time]]과 같은 형식으로 나타내며 

                              1시간 단위로 증가하도록 제한됩니다.

                              요일에는 전체 단어나 약어를 사용할 수 있습니다.

                              시간에는 12시간 또는 24시간 표기법을 

                              사용할 수 있습니다.12시간 표기법에서는 am, pm, a.m. 또는

                              p.m.을 사용합니다. ALL은 사용자가 언제든지 로그온할 수 있음을 나타내며 

                              값을 입력하지 않으면 사용자가 로그온할 수 없음을 나타냅니다.

                              요일과 시간은 쉼표로 구분하여 입력하고

                              요일과 시간 항목이 여러 개인 경우에는 

                              세미콜론으로 구분합니다.

   /USERCOMMENT:"텍스트"      관리자가 계정에 대한 사용자 설명을 추가하거나 

                              변경할 수 있습니다. 

   /WORKSTATIONS:{computername[,...] | *}

                              사용자가 네트워크에 로그온할 수 있는 컴퓨터를

                              최대 8개까지 나열합니다. /WORKSTATIONS에 목록을

                              지정하지 않거나 별표(*)를 지정하면 사용자는 어느

                              컴퓨터에서나 네트워크에 로그온할 수 있습니다.


NET HELP 명령 | MORE는 한 번에 한 화면씩 도움말을 표시합니다.