2017. 6. 6. 15:00

 

닷넷 코어는 IIS가 없는 환경에서도 동작하도록 구성되어 있습니다.

그러나!

만약 윈도우 환경에서 닷넷 코어를 돌려야 한다면 결국 IIS에서 돌려야 관리하기 편한 것이 사실입니다 ㅎㅎㅎ

 

iis에 asp.net core를 올려 봅시다.

 

1. 샘플 프로젝트 만들기

asp.net mvc core 프로젝트를 생성합니다.

 

 

 

'wwwroot'폴더에 'index.html' 파일을 만들고 내용물은 대충 넣읍시다.

 

프로젝트에서 오른쪽 클릭을 하고 개시를 합니다.

기본 설정으로 개시하면 'bin'폴더에 개시를 하게 됩니다.

 

이 파일들을 iis에 복사합니다.

 

2. IIS 세팅하기

IIS에서 닷넷 코어를 돌리기 위해서는 먼저 세팅을 해야 합니다.

 

2-1. ASP.NET Core Module

 

IIS에 세팅하려면 'Asp Net Core Module'이라는 것을 설치해야 합니다.

서버용은 'Windows Server Hosting (x64 & x86)'을 설치해야 합니다.

'Hosting Bundle' 버전을 설치해줍니다.

 

깃허브(최신버전) - aspnet/AspNetCoreModule

공식 사이트 - Download .NET Core , Download .NET Core

 


 


 

2-2. IIS 설정

평상시대로 IIS에 웹사이트를 추가합니다.

경로는 아까 출력한 파일들을 복사한 폴더로 지정합니다.

 

 

 

'응용 프로그램 풀'로가서 생성된 웹사이트의 풀을 수정합니다.

여기서 '.NET CLR  버전'을 선택할 때 '관리 코드 없음'으로 설정합니다.

 

 

 

만약 '2-1.'에서 설치한 프로그램이 설치되지 않았다면 여기서 '관리 코드 없음'이 표시되지 않습니다.

가끔 IIS 자체를 리스타트 해야 적용되는 경우도 있으므로 마음 편하게 서버 자체를 재부팅 합니다.

 

2-3. 확인

이제 아까 만든 'index.html'을 호출하겠습니다,

 

asp.net 의 'wwwroot'폴더는 'root'폴더입니다.

그래서 '주소/index.html'하면 동작을 확인할 수 있습니다.

 

 

 

이제 root 주소를 입력하여 mvc 샘플이 표시되는지 확인해 봅시다.

 

 

 

잘되네요.

 

3. 오류 상황

흔히 볼 수 있는 오류를 확인해 봅시다.

 

3-1. 500.19

'Windows Server Hosting'이 설치되지 않았을때 발생하는 에러입니다.

 

이 포스팅의 '2-1. ASP.NET Core Module' 항목을 참조하여 다시 설치 하면 됩니다.

 

 

이거 조심해야 할 것이 호환되는 상위 버전으로 설치한 경우(개발을 1.0으로 했는데 1.0.8버전을 설치하는 경우)에도 발생할 수 있습니다.

가능하면 자신이 설치한 버전과 일치하는 버전을 설치하는 것이 좋습니다.

 

 

 

3-2. 502.5 - Process Failure

iis가 권한이 낮을 때 발생하는 오류입니다.

(참고 : stackoverflow - ASP.NET Core 1.0 on IIS error 502.5 )

 

 

응용프로그램 풀 > 사용할 응용프로그램 오른쪽 클릭 >고급 설정 > ID

를 선택하여 들어갑니다.

 

 

 

응용 프로그램 풀 ID를 'LocalSystem'이상 권한으로 설정합니다.

IIS를 재시작하거나 재부팅 한 다음 테스트를 해봅시다.

 

영문 버전은 다음과 같습니다

Advanced Settings > IDentity > Built-in account

를 설정하시면 됩니다.

 

 

 

3-.3 web.config 파일을 불러 올 수 없는 오류

오류 메시지는 다음과 같습니다.

"이 작업을 수행하는 동안 오류가 발생했습니다."

 

 

 

이건 IIS에서 자동으로 생성해준 web.config파일에 문제가 있는 경우가 많습니다.

web.config을 찾아서 지우고 웹사이트를 다시 시작 해줍니다.

 

 

3-4. 403.14

 

여기까지 잘 따라왔다면 보통은 web.config가 잘못되서 발생합니다.

 

먼저 웹사이트 루트폴더에 'index.html'파일을 생성하고 정상적으로 접속되는지 확인해 봅니다.

닷넷코어 웹사이트가 정상적으로 세팅되었다면 루트폴더가 아니고 'wwwroot'폴더에 있는 파일을 읽어야 합니다.

그런데 웹사이트 루트폴더에 있는 파일이 읽어진다는건 web.config가 이 웹사이트에 맞게 구성되지 않았다는 의미입니다.

 

프로젝트에서 생성해준 웹컨피그를 올리고 웹사이트를 다시 시작 해줍니다.

 

 

마무리

리눅스에서 닷넷 코어를 돌리는 방법도 알아보겠습니다.

 

참고 :  MSDN - Set up a hosting environment for ASP.NET Core on Windows with IIS, and deploy to it