[노트].net core 윈도우에서 코딩후, 리눅스계열에서 실행하기!

2018. 1. 19. 21:19Programming/Etc...

필자가 디스코드봇을 게발하면서 여러가지 알아낸 정보를 공유겸 저장겸 하여 여기에 노트한다.


기본적으로는 디스코드봇 게발에 관한 글 이지만, 해당되는 과정들이 결국 .net core 으로 코딩, 라즈베리파이같은 리눅스 계열에서 실행시키는 것과 동일하기에 같이 쓰니 착오가 없기를.


디스코드 봇 관련지식이 필요업고, 단지 리눅스 계열에서 .net core를 구동하고 싶은 사람이라면, 3번부터 보면 될듯 하다.


1.디스코드 봇의 구동 방식.

디스코드봇 같은 경우는, 우리가 일반적으로 디스코드를 이용하는것과 같다.

우리는 디스코드로 친구들과 통화, 채팅을 할려면 디스코드 클라이언트를 실행시켜, 로그인한다.

디스코드봇도 똑같기에, 실행시킬 기계와 로그인할 계정이 필요하다.

필자는 위에서 언급한 기계역을 디스코드에서 직접 봇 실행 서버를 구축하여 소스코드만 업로드해주면 될줄 알았으나 아니였다.

즉, 코딩도 자기가, 호스팅도 자기가 해야한다.

(참고로 위에서 말한 로그인할 계정은 디스코드봇 페이지에서 직접 만든 디코봇의 유저 토큰이 대신한다.)


2.호스팅 방식

즉, 위에서 언급한 디스코드 봇의 구동방식은 약 2가지가 있다.

(솔직히 무언가에서 호스팅을 하는것은 변함이 없으나, 여기서 분기점(?)이 생긴다.)


2-1.서버를 빌려서 호스팅하기.

.net core는 리눅스나 윈도우등에서 구동될수 있도록 설계되어있다.

(뒤에 가면 언급하겠지만, 빌드할때 따로 옵션 지정해 줘야 한다.)

즉, 호스팅 서버를 빌려서 구동하면 그만이다!

그렇다면 어떻게 진행해야 할까?


일단 기본적인 호스팅서버들은 .net core가 설치되어 있지 않다.

설치되어 있더라도, 실행할 방법이 없다.

그리하여 사용자가 직접 설치해 줘야 하는데, 이때 SSH 접속이 필요하게 된다.

하지만 대부분의 무료 호스팅들은 보안상의 이유를 대며 SSH의 권한을 부여하지 않는다.

금전적인 이득이 되지 않는 디스코드봇을 누가 돈을 내며 호스팅하겠는가?

많은 사람들이 여기서 포기하게 된다.


허나 조금의 팁을 알려주자면,

아마존의 AWS 혹은 구글의 GCP를 이용하자!

아마존과 구글의 웹 클라우드 서비스에서는 무료 플렌을 지원한다.

심지어 1년 무료이면서, SSH까지 지원한다고 한다.


그럼 뭐가 문제인가?

일단 1년이라는 시간 제한이 있으며, 카드 등록을 해야하는 불편함이 있기에 필자는 해당 방법을 사용하지 않는다.

(필자는 카드가 없다...)


2-2.직접 서버를 호스팅하기.

필자는 위 2-1에서 웹 클라우드 서버를 사용하지 못하는 이유를 증명(?)했다.

그렇다면, 필자가 직접 호스팅을 해야 하는데...


컴퓨터를 항상 켜놓을 수도 없고, 휴대폰을 쓰기도 뭐하다.

필자는 집 구석탱이에 안쓰는 라즈베리파이가 있었기에 옳구나! 하고 덥석 집어들었다만...

없는 사람은 힘내길..

(라즈베리 파이 구매하는게 편할것 같다. 그닥 비싸지 않다.. 단 구매시 필요하면 무선랜도 구매할것.)



3.윈도우에서 코딩한 프로젝트를 리눅스 계열에서 실행하기! (.net core용)

필자는 라즈베리파이를 기준으로 진행하였지만, OS마다 설치법이 다르다.

구글에서 각자의 OS에 따른 .net core 설치법을 알아보고 설치해야 한다.


설치가 끝났다면, 커맨드창에 dotnet --info를 명령해 보자.

Microsoft .NET Core Shared Framework Host

  Version  : 2.0.4

...

위와 같이 콘솔이 나오게 된다면, 정상적으로 설치가 된것이다.


다시 윈도우로 돌아와 보자.

다들 .net core로 코딩을 했다면, 비주얼스튜디오와 .net core sdk가 설치되어 있을것이다.

윈도우가 아닌 다른 OS에서 .net core를 실행시킬려면, 일반 비주얼 스튜디오에서의 빌드가 아니라 따로 빌드해 줘야 한다.


3-1.프로젝트 빌드하기

앞서 언급했듯, 빌드시 따로 옵션을 달아줘야 한다.

1. 윈도우에서 CMD를 실행시키자.

2. CMD에서 cd 명령어를 이용하여, 자신의 프로젝트에서 .csproj 파일이 위치하는곳으로 넘어가자.

3. dotnet publish -r <빌드할 환경> 명령어를 실행시킨다.

(환경의 옵션은 여기서 확인해 볼수 있다.)

(라즈베리파이 같은 경우는 dotnet publish -r ubuntu.16.04-arm 처럼 실행시키면 된다. 라즈비안을 사용중이고, 라즈비안은 데비안 기준인것으로 알고있지만 데비안은 안되고 우분투는 된다... (왜지...?) )

4. <프로젝트 이름>\bin\Debug\netcoreapp2.0\ubuntu.16.04-arm/publish 파일을 리눅스 계열의 OS로 복사한다.

5.리눅스 계열의 OS에서, 복사한 경로로 이동한다.

6.터미널에서 dotnet <빌드한 프로젝트 이름>.dll 명령어를 입력하면, 프로그램이 시작된다!

7.끄으읏!


위와 같이 많은 작업을 거치면, 윈도우 에서 코딩한 .net core 프로젝트가 리눅스에서 실행되는 모습을 지켜볼수 있을것이다!

으.. 아무것도 모르는 상태에서 시작하여 많은 과정을 거친후 드디어 실행시킬 수 있는 것이다.


지금까지 윈도우에서 코딩한 .net core 프로젝트를 리눅스상에서 구동하는 방법을 설명했다.

한국어로 작성된 자료를 찾지 못해 간단하게 정리하여 이곳에 올리니 참고하길 바람.

반응형