본문 바로가기
Server

4.개발 환경 구축하기(3)

by Doromi 2018. 1. 7.
728x90
반응형

저번에 이어서 기본 파일 추가를 계속 해보겠다.

 

저번 마지막에 만들어봤던 것과 똑같은 방법으로 다시 하나 더 만들어 보겠다.

Name 은 start, kind는 OTP application resource file 선택

 

 

 

 

 

 

다음으로 start.app 파일이 생성된다.

그안에 내용 중에 {mod, {start,~  이 부분에 start를 이전에 생성했던 start_app으로 바꿔준다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

그리고 src 디렉토리에 어플리케이션 리소스 파일을 만들었을 경우에는 파일 뒤에 .src를 붙여 주어야 한다.

따라서 start.app 파일에 마우스 오른쪽 버튼 클릭 -> Refactor -> Rename 선택

 

 

이제 실행 파일을 만들어보겠다.

프로젝트 최상위에서 New->File 선택

이름은 first.bat으로 하고 파일 생성

 

first.bat에는 werl -pa ./ebin -eval "application:first(start)"이라고 적어준다.

 

-pa 옵션은 beam 파일의 위치

그 다음 부분은 얼랭을 시작할 때 바로 first라는 어플리케이션을 실행하라는 의미

 

intellij에서 bat 파일에 대한 plugin을 탐지했다는 메시지에서 install plugin을 한다.

그런 다음 restart

 

다시 켜지면 first.bat에서 마우스 오른쪽 버튼을 눌러 Run 'first' 항목을 클릭

그러면 Erlang Shell이 실행되는 것을 확인

하지만 아직 컴파일을 하지 않았으므로 start application이 실행된 것은 아니다.

다시 Erlang 창을 닫고 파일을 더 생성해보겠다.

 

프로젝트 최상위에서 New->File 선택

이름은 start_sup으로 하고 kind는 OTP supervisor 선택

 

지금까지 생성된 파일들은 전부 템플릿에 의해 생성된 껍데기 파일들이다.

제대로 작동하려면 수정을 해줘야 에러 없이 컴파일을 할 수 있다.

 

start_sup.erl 파일의 69라인 부근 Achild를 주석처리하고 함수 리턴부분의 Achild도 삭제한다.

껍데기 코드에서 에러가 발생하는 부분을 지우는 것이다.

주석 처리는 라인의 맨 앞에 %% 추가

이 코드를 주석 처리 하는 이유는 supervisor에서 관리하는 generic server를 등록해주어야 하는데

당장은 생성한 generic server가 없기 때문이다.

 

맨 마지막에 Achild부분도 지워주어야 한다.

 

이제 start_app.erl을 수정해보겠다.

 

 

case 다음에 있던 'TopSupervisor' 부분을 지우고 start_sup으로 수정한다.

그리고 메시지 출력하도록 io:format함수를 이용해서 작성한다.

 

 

 

 

start는 함수 이름이고 _StartType과 _StartArgs라는 두 개의 인자값을 입력 받는 다는 것을 의미한다.

얼랭은 C언어에서 흔히 쓰는 {} 대신 ->를 이용해서 함수를 시작을 정의하고 .은 함수의 끝을 의미한다.

 

작성 후에는 상단 메뉴에 Run->Edit Configurations를 선택

 

왼쪽에 +버튼을 선택

나오는 항목 중에 Erlang Rebar 선택

 

Name과 Command에 둘다 compile이라고 적고 OK

 

 

 

 

 

 

 

 

이러고 상단의 Run->Run->Compile 선택

 

책에서는 이렇게 하면 컴파일이 완료되고 Project에는 ebin 폴더가 생성된다고 했다.

 

하지만 나는 이런 오류가 떠서 찾아보았다.

이전에 2-6.프로젝트 설정할때 Rebar을 설치한 폴더의 rebar.cmd파일을 선택하면 된다고 했는데

이때 rebar.cmd파일이 아니고 rebar파일을 선택해야 한다고 한다.

 

rebar.cmd를 rebar로 고쳐주고 OK

 

그리고 다시 run하면 정상적으로 실행된다.

컴파일 완료되고 Project에는 ebin 폴더가 생성된 것을 확인할 수 있다.

 

그리고 다시 first.bat에서 Run->Run->first를 누르면 start application이 실행된 것을 확인할 수 있다.

 

이렇게 하면 얼랭 코드를 컴파일하고 실행하는 과정까지 완료가 된다.

3개의 얼랭 파일(start.app.src/start_app.erl/start_sup.erl)을 생성했는데, 이것은 모든 얼랭 어플리케이션의 가장 기본적인 구조다.

 

가장 위에 start_app application이 있고, start_app에서 supervisor start_sup을 실행

supervisor에서 또 다른 supervisor이나 다른 서버들을 새성해서 관리하는 구조

 

기본적으로 supervisor은 얼랭 내부에 여러 개의 서버들을 만들 수 있는데 그런 서버들을 관리하는 기능을 한다고 보면 된다.

 

앞에서 start_sup.erl에서 주석 처리한 AChild의 내용이 Child server를 의미

 

 

 

출판사 로드북 홈페이지에 테스트앱인 MonTest.apk를 다운받아 설치하였다.

다음에 할 챕터의 항목들을 테스트할 용도이다.

 

728x90
반응형

'Server' 카테고리의 다른 글

6.기본 모바일 서버 만들기(2)  (0) 2018.01.10
5.기본 모바일 서버 만들기(1)  (0) 2018.01.07
3.개발 환경 구축해보기(2)  (0) 2018.01.06
2.개발 환경 구축해보기(1)  (0) 2018.01.05
1.얼랭서버 공부 시작하기  (0) 2018.01.04