여기에서는 간단히 .Net core(이하 .Net) 웹 서비스를 Ubuntu 서버에 배포해서 실행하는 것까지 진행해보겠다.
1. .Net core Web application 프로젝트 생성
가장 먼저 해야 할 일은 .Net core web application 프로젝트를 Visual Studio에서 생성하는 것이다.
여기에서 MVC 탬플릿을 이용하여 생성하였다.
탬플릿을 이용하면, 기본적인 구조를 만들어 주기 때문에 별다른 코드 추가 없이 바로 사용 할 수 있다.
하여 Publish 메뉴를 이용해서 바로 배포를 진행해보자.
배포 메뉴를 선택하고 배포 프로필을 만들 때 기본적으로 현재 지원하는 플랫폼에서 모두 실행가능한 Portable으로 되어 있는데, 보다 파일을 간소화 하고자 한다면, 타켓 플랫폼을 지정하여 최적화를 할 수 있다.
이렇게 파일 배포를 완료하였다면 배포하고자 하는 서버에 .Net 라이브러리를 설치하도록 하자.
2. .Net core runtime install on Ubuntu
.Net 라이브러리 설치는 복잡하지 않다.
apt-get 을 이용하여 간편하게 설치 할 수 있다. 다만 설치하고자 하는 레파스토리지 추가가 진행하자.
$wget https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
$sudo dpkg -i packages-microsoft-prod.deb
이후 레파스토리지 업데이트를 위해 apt-get update를 진행하고 .net runtime 라이브러리를 설치하면 된다.
$sudo apt-get update
$sudo apt-get install -y apt-transport-https
$sudo apt-get update
$sudo apt-get install -y dotnet-sdk-3.1
이제 라이브러리 설치가 끝났다 배포할 파일을 유분투 서버로 옮기도록 하자.
3. File transport to ubuntu
파일 전송은 SFTP 접근이 가능하다면 쉽게 진행할 수 있다.
Visual Studio에서 제공하는 FTP 배포 방법을 사용해도 되고, 아래 Bitvise SSH와 같은 무료 SSH 클라이언트 프로그램을 통해 쉽게 배포를 진행할 수 있다.
배포할 폴더가 정해졌다면, Visual Studio에서 만들었던 배포 프로파일의 저장 경로의 파일 전체를 유분투 서버로 옮기도록 하자.
4. Change to default web port
정상적으로 파일이 유분투 서버에 올라갔다면, dotnet 명령을 통해 웹 어플리케이션을 실행하도록 하자. 실행은 프로젝트 dll 파일을 통해 가능하다.
다만 현재 기본적으로 실행하는 경우 웹 접근 포트는 기본값은 5000이며 localhost이기 때문에 외부 접근이 되지 않는다.
이를 변경하기 위해서는 Program.cs의 webbuilder를 수정해야 한다.
Program.cs 파일을 열어 CreateHostBuilder 평션에 UseUrls를 수정하면 포트 및 외부에서 접근이 가능하도록 수정할 수 있다.
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseUrls("http://*:80");
webBuilder.UseStartup<Startup>();
});
다만 Linux에서 1024 포트 이하를 사용하기 위해서는 root 권한이 필요하기 때문에, sudo를 이용해서 dotnet를 실행해줘야 한다. 만약 sudo, root 권한을 사용하기 싫다면, port forward도 하나의 방법으로 사용이 가능하다.
마지막으로 dotnet 실행시 주의할 점은 어플리케이션의 working 디렉토리가 실행 위치로 되기 때문에 배포한 어플리케이션이 아닌 다른 위치에서 실행하게 되면, 파일 위치를 정상적으로 인식하지 못하고 404 에러가 발생하게 된다.
따라서 어플리케이션을 실행할 때 배포 경로로 이동해서 실행하기 바란다.
'.Net' 카테고리의 다른 글
.NET core 3.1 - ActionLink glyphicon 사용하기 (0) | 2020.11.09 |
---|---|
.NET core 3.1 - File Download (0) | 2020.11.09 |
.Net core - File Uplad Error 413.1 - Request Entity Too Large (0) | 2020.11.05 |
The underlying connection was closed – REST API call over HTTPS (0) | 2020.11.04 |
.Net for Apache Spark 1.0 공개 (0) | 2020.11.01 |