본문 바로가기
카테고리 없음

[Blazor] IIS 배포 하기 .Net Core 3 버전 기준

by 학수씨 2020. 12. 12.

현재 Microsoft Blazor 로 프론트 앤드 Web 을 개발진행하고 있다..

블래이저가 기존 ASP.net 과는 좀 많이 다르다... 

 

근데 아직까지 한국 개발자들이 많이 사용하지 않는듯하다.. 완전 편하고 완전 좋은데...

개발자들이 많이 사용하지 않다보니 국내 자료도 별로 없고.. 해외자료는 거의 뭐 삽질 수준..이니..

 

일단 나는 Dcoker 나 Linux 서버 에서 운영하는것을 좋아하지 않는다..

이유는 Docker의 경우 너무너무 편하긴 하지만 성능상의 문제가 좀 있다.. 

 

물론 WebServer 자체가 동접자수 그리 많지 않는 업무용 사이트 라면... 구지 서버의 부하가 크게 걸리진 않아 Docker를 사용해도 아주 편하게 운영할수 있겠지만..  여튼 난 별로 비추....

 

Linux 서버에 Blazor 를 배포할수도 있다.. 가능하다~!!

 

하지만... 어려운 유지보수와... 문제 발생시 해결 방법 및 시간 등등의 이유로... Linux 서버같은경우 Database 또는 File Server 일 경우에만 사용하고 WebServer 에서는 거의 사용하지 않는다..

 

일단 Blazor 로 배포하는 방법은 여러가지가 있다.

이렇게 프로젝트 에서 게시를 누르고

프로파일 새로만들기 버튼을 누르면

 

요런 화면이 나오는데 일단 Azure (Microsoft Cloud) 에 어플리케이션 게시하는 방법...

 

Docket 컨테이너로 게시하는방법..

 

그냥 폴더에 게시하는방법.

 

IIS에 웹배포..

 

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

 

일단 나같은경우의 환경은 개발PC 에서 개발이 이루어지고... Windows Server (구지 서버 OS 아니여도됨) IIS 에 직접적으로 배포할 경우이다.

 

개발PC -> 서버배포

 

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

 

여기서 가장 편하고... 좋은 방법은 서버 PC에더 VisualStudio 2019 를 설치해주는 방법이 있다.

서버에 VisualStudio 를 설치하는 이유는 그냥 필요한 Runtime 이나 이것저것 다 깔끔하게 설치가 자동으로 되니.. 따로 설치해줄게 없다.

 

근데 서버에 Visual Studio 를 설치하지 않고 진행한다면.

 

dotnet.microsoft.com/download/dotnet-core/3.1

 

Download .NET Core 3.1 (Linux, macOS, and Windows)

.NET Core 3.1 downloads for Linux, macOS, and Windows. .NET Core is a cross-platform version of .NET, for building apps that run on Linux, macOS, and Windows.

dotnet.microsoft.com

요기에 접속한후

 

요러케 설치를 해주자

 

1. SDK

2. ASP.NET CORE Runtime

3. .NET Core Runtime

 

이제 설치를 해주고. SSL 인증서를 사용을 할지.. 아니면 걍 http 기반으로 서비스를 할지 설정해줘야한다.

 

요고 확인해줘야하낟. 프로젝트 속성에서 디버그 탭에 들어가

SSL 사용 (체크 하면 https 로 사용)

을 확인해주고... 게시를 해보자.

 

일단 나같은 경우에는 개발PC 에 게시를 해주고 게시된 파일들을 서버로 옴기는 방식으로 한다.

ASP.Net 과는 좀 다른부분이.. 서버를 재시작 하지 않아도 파일만 덮어 씌워도.. Blazor IIS 서버에서 반영이 된다는것이다.

 

 

그냥 기본 폴더위치로 잡아줬다..

 

그럼 이렇게 publish 라는 폴더가 생성되어 게시가 된것을 확인할수 있다.

 

이 폴더를 서버로 옴기면 된다.

 

뭐 압출을 해서 옴기든 FTP 로 옴기든 원격데스크탑으로 옴기든.. USB로 옴기든 맘대로.

 

여긴 서버 쪽이다.. 일단 D:\publish\ 폴더에.. 개발PC에서 게시된 폴더를 그대로~ 복사하였다.

이제 IIS 설정을 해줘야한다.

 

웹 사이트를 추가해줘도 되고 DefaultApp 으로 최상단 에 배포해줘도 되고 뭐 상관없다.

 

나는 그냥 DefaultApp 최상단으로 사용할 예정이라.. 그냥 사이트 바인딩을 저렇게 해줬다.

 

그리고나서 "응용 프로그램 풀" 을 확인해줘야한다. 여기서 내가 가장많이 삽집을 했는데 해외 자료에 보면

 

요 CLR 버전을 관리코드 없음으로 해외유져들이 설정하라고 한다..

근데 그냥 냅두자.. 기본값으로... Core 2.x 버전대의 경우에나 저런 설정이 필요한거지

 

Core 3.x 버전대는 상관없다.. 그냥. 냅두자.

 

이러케 하고 IIS 를 재시작 한뒤에 서버에서 접속을 하던.. 외부에서 서버 IP를 치고 접속을 하던

하면 Blazor 가 정상적으로 실행이 된다.

이렇게 실행이 잘되면~~ 아무 문제없이 배포가 된것이다.

 

MSDN 이나 해외 유저 글들을 보면 배포하는 방법이 아주아주 복잡하고 설정할것도 엄청 많고 복잡한데

실제로는 생각보다 간단하다. 그냥 파일만 옴겨주면 끝.

 

다음부터 업데이트 할땐 IIS 건들여줄 필요도 없다 그냥 publish 폴더만 덮어 씌우면 끝..

정말 간단하다.

 


 

HTTP Error 500.0 - ANCM In-Process Handler Load Failure

일단 서버에 설정이 잘못되어있다면... 브라우저로 접속했을때 아래와 같은 에러메세지가 뜰수도 있다.

이건 위에서 설치한 SDK, Runtime 이 꼬여서 나는 에러일 가능성이 아주 크다..

제어판에 가서 프로그램 삭제 들가서.. 필요없는거 다 삭제해주고 다시 재설치를 해준뒤 다시 배포해주자

 

HTTP Error 403.14 - Forbidden

요 에러가 날수도 있는데 이건 그냥 게시된 폴더에 IIS에서 접근할 권한이 없어서 나느 아주 기본적인 오류이다.

 

윈도우에서 IIS_IUSERS 에 대한 권한 부여해주자..

 


 

HTTP Error 502.5 - ANCM Out-Of-Process Startup Failure

이 오류가 났을경우에는 아까 프로젝트 -> 디버그 탭에서 호스팀 모델이 Out-Of-Process 로 설정되어 있어서 그럴수 있다. 이걸 In-of-Process 로 설정해줘야한다.. 

 

왜냐면 Blazor 의 경우 Blazor WebAssembly 기반과 Blazor Server 기반 2가지가 존재한다.

이건 프로젝트 생성할때 선택하는것인데.. 이거에 대해서 깊게 들어가면.. 너무 양이 많으므로

간단하게만 설명해보자면

 

WebAssembly의 경우 각각 프로세를 Client PC에서 구동하여 서버 부하를 적게 하는식.

Server의 경우 프로세스를 Server에서 구동하여 서버에 부하가 좀 걸리는 식..

 

인데 웹으로 배포되고 웹에서 사용하므로 무엇보다 보안이.. 우선이다 그래서 나는 Blazor Server를 사용한다.

Blazor Server 로 개발되어있으면 In-Of-Porcess 를 사용하는게 좋다.

 

댓글