이틀 전, .NET 코어 시작 분석을 다시 인쇄했는데, 출시 당시 기본 5000 포트에 얽혀 있어서 꼼꼼히 공부했습니다.
1. IIS 통합
IIS를 호스트로 사용한다면 이런 문제들은 없으며, 강력한 IIS가 도메인 이름, 포트 등을 설정하는 데 도움을 줄 수 있습니다. IIS에서 asp.net 코어 웹 애플리케이션을 어떻게 배포하는지에 대해서는 그게 중요한 게 아닙니다. 대략적으로 설명하자면:
Net Core SDK와 서버 호스팅을 다운로드해야 하며, 다운로드 주소는 https://www.microsoft.com/net/download
설치 후에는 .NET Core SDK가 명령줄 dotnet info에서 성공적으로 설치되었는지 확인하세요
서버 호스트가 IIS 모듈에 성공적으로 설치되었는지와 핸들러 매핑이 있는지 아래와 같이 나와 있습니다
그 다음 사이트를 설정하고 출판 사이트에 파일을 지정하세요
마지막으로, 프로그램 풀을 구성하고 비관리(unmanaged)를 선택하여 서버 호스트 전달 요청이 존재하도록 해야 합니다.
2. 리눅스 환경
설치 자체도 많고, 공식 웹사이트의 안내에 따르면, .NET Core 실행 환경을 설치하면 실행이 가능합니다.
참고하실 수 있도록 추천하는 블로그 글이 있습니다: ASP.NET Core 애플리케이션 배포 (CentOS7)
본론으로 돌아가서, URL 및 포트 파라미터를 어떻게 설정하는지입니다
1. 프로그램의 주요 메서드에서 명시한다
이 방법은 설정 파일을 추가해 읽더라도 융통성이 없고 그리 우아하지 않습니다. 이 시점에서 마이크로소프트가 그런 사용을 권장하지 않을 것 같아 계속 찾아봤습니다.
2. 환경 변수를 전달합니다.
인터넷에서 'ASP.NET Core RC2에서 Kestrel URL 설정 방법'이라는 기사를 봤습니다.
구성 파일을 통해 설정되긴 하지만, 구성 정보를 다른 문서에 읽어낼 필요는 없으며, 바인딩하거나 코드를 붙여넣어 직접 사용할 수 있습니다:
hosting.json
Program.cs
이렇게 하면 귀도 들을 수 있습니다
현재 듣고 있는 중: http://localhost:60000
지금 듣고 있는 중: http://localhost:60001
정말 놀랍지 않나요! 실제 전투는 정말 싫어요, 소스 코드를 빼버리자면! .NET Core의 가장 좋은 점은 소스 코드가 있다는 것입니다!
출처를 통해 주로 Microsoft.AspNetCore.Hosting 네임스페이스 아래 WebHostBuilder 클래스임을 알 수 있습니다.
주요 방법은 빌드입니다
여기서 주요 초점은 WebHost 객체를 구축한 후 더 깊이 탐색하는 것입니다
Initialize 메서드를 통해 소스 코드를 살펴보면 EnsureServer 메서드가 생성한 URL 주소를 알 수 있습니다
여기서 설정에서 _config[WebHostDefaults.ServerUrlsKey]와 _config[DeprecatedServerUrlsKey]를 읽는 것을 볼 수 있습니다.
WebHostDefaults.ServerUrlsKey의 값은 고정값입니다
DeprecatedServerUrlsKey의 값은 WebHost 객체의 시작 부분에 정의되어 있습니다
오! 진실이 드러난다. 그래서 설정 파일에서 "server.urls"를 설정할 수 있습니다.
요약:
요약하자면, asp.net 코어는 환경 변수에서 설정을 시작할 때 읽으며, 실제 목적은 프로젝트 속성에 다음 구성을 추가하는 것입니다:
콘솔 모드로 시작했더니 포트가 바뀌었음을 알게 되었습니다.
이것이 개발 환경인데, 생산 라인에 어떻게 배포해야 할까요? 리눅스 배포를 예로 들면, 데몬 슈퍼바이저를 사용해 프로그램을 시작하고, 슈퍼바이저의 시작 설정에 환경 변수를 추가하는 것도 매우 간단합니다:
멋지게 성공하세요! 코드 한 줄도 바꿀 필요가 없네요, 하하~ |