다섯째 날: Dancer2 웹 애플리케이션을 무료 PaaS에서 실행하기

저자

@unixware213 Sangyong Gwak - 컴맹입니다, 컴퓨터의 K도 몰라요. imyaman at netscape.net

시작하며

클라우드 서비스 중에 PaaS(Platform as a Service)는, 소프트웨어 개발자에게 "인프라나 프레임워크 등에 신경 쓰지 말고 코드만 올려라"라는 가치를 준다고 생각하고 있습니다. PaaS 솔루션 중에 여러가지가 있는데 이번엔 OpenShift를 이야기 해보겠습니다. 그리고 OpenShift를 기반으로 한 PaaS 중에 무료인 것도 소개하겠습니다. 그리고 그 PaaS위에 Dancer2로 만든 웹 사이트를 만들겠습니다. Dancer2는 Perl로 만들어진 가벼운 웹 애플리케이션 프레임워크입니다. 이 글을 차근차근 따라하면 무료로 웹 사이트 하나가 딱 나옵니다.

준비물

정확히 펄 모듈은 OpenShift PaaS 장비에 설치해야 합니다. 하지만 해당 PaaS장비에 설치하기 전에 동작을 확인하려면 실제 본인의 호스트 장비에 모듈을 설치해서 웹 응용이 동작함을 확인해야 합니다. 필요한 모듈은 다음과 같습니다.

직접 CPAN을 이용해서 설치한다면 다음 명령을 이용해서 모듈을 설치합니다.

$ sudo cpan \
    Dancer2 \
    Plack

사용자 계정으로 모듈을 설치하는 방법을 정확하게 알고 있거나 perlbrew를 이용해서 자신만의 Perl을 사용하고 있다면 다음 명령을 이용해서 모듈을 설치합니다.

$ cpan \
    Dancer2 \
    Plack

무료 PaaS 서비스를 이용하기 위해 Open PaaS 계정을 만듭니다. 공식 사이트에 방문하여 우측 상단의 "서비스 신청" 링크를 클릭합니다. 개인 개발자로 계정을 만들면, 메모리 1GB와 저장공간 10GB인 OpenShift 애플리케이션을 3개까지 만들 수 있습니다.

기사에서 사용할 rhc 명령은 루비로 만들어져 있습니다. Ruby 홈페이지의 안내를 참조하여 설치합니다. 이미 시스템에 있다면 시스템 루비를 사용해도 됩니다.

OpenShift 애플리케이션을 통제하기 위해 rhc 명령이 필요합니다. 루비 설치 후 다음 명령을 이용하여 설치합니다.

$ gem install rhc

마지막으로 OpenShift 애플리케이션에 내 Dancer2 코드를 업로드하기 위해 git이 필요합니다. Git 홈페이지의 안내를 참조하여 설치합니다.

절차

OpenShift 웹 사이트를 만드는 절차는 다음과 같습니다.

  1. OpenShift 애플리케이션을 생성
  2. OpenShift 애플리케이션에 Dancer2 환경 설정
  3. 내가 만든 웹 애플리케이션 코드를 OpenShift 애플리케이션에 적용
  4. 도메인 네임 설정

OpenShift 애플리케이션 생성

OpenShift 애플리케이션은 Open PaaS 웹 사이트에서도 만들 수 있습니다만, rhc 명령을 이용하겠습니다. 우리는 DIY(Do It Yourself) 카트리지를 선택합니다. DIY 카트리지로 OpenShift 애플리케이션을 만들고 그 안에 수작업으로 Dancer2 환경을 만듭니다.

$ rhc setup
OpenShift Client Tools (RHC) Setup Wizard
This wizard will help you upload your SSH keys, set your application namespace, and check that other programs like Git are properly installed.
If you have your own OpenShift server, you can specify it now. Just hit enter to use:

프롬프트가 나오면 broker.cloud.or.kr를 입력합니다. broker.cloudsc.kr을 넣으면 안 됩니다. 아이디와 비밀번호는 Open PaaS 웹 사이트 가입 시 사용한 정보를 이용합니다.

OpenShift 애플리케이션에 Dancer2 환경 설정

아래 명령으로 앱을 생성합니다.

$ rhc create-app -a APPNAME diy

아래 명령으로 OpenShift 애플리케이션에 ssh로 접속합니다.

$ rhc ssh -a APPNAME

새로운 버전의 Perl을 설치합니다. 필요하다면 perlbrewplenv이든 자신에게 적절한 방법을 사용합니다.

$ echo $HOME
/var/lib/openshift/57f7b04189418bd3240007bd/
$ export HOME=/var/lib/openshift/57f7b04189418bd3240007bd   # HOME 변수의 값에서 맨 뒤에 /를 삭제합니다
$ cd ~/app-root/data/
$ mkdir download
$ cd download
$ wget -c -nd http://www.cpan.org/src/5.0/perl-5.24.0.tar.xz
$ xzcat -dc perl-5.24.0.tar.xz | tar xf -
$ cd perl-5.24.0
$ ./Configure -des -Dprefix=~/app-root/data/perl-new
$ make   # 컴파일 하는데 시간이 좀 걸립니다
$ make install
$ cd ~/app-root/data/perl-new/bin
$ ./perl -v   # Perl 5.24.0 설치를 확인합니다

PlackDancer2 모듈을 설치합니다.

$ HOME=~/app-root/data ~/app-root/data/perl-new/bin/perl cpan
notest install Dancer2 Plack   # prompt는 cpan 1 이라고 나올겁니다. notest부터 입력하면 됩니다
quit

내가 만든 웹 애플리케이션 코드를 OpenShift 애플리케이션에 적용

OpenShift 애플리케이션의 git 저장소 주소와 웹 사이트 URL을 확인 후 저장소의 내용을 내려 받습니다. 예제의 경우 dancer2라는 디렉토리가 생성됐습니다.

$ rhc apps
dancer2 @ http://dancer2-imyaman.cloud.or.kr/
... 생략 ...
Git URL:    ssh://5d@dancer2-imyaman.cloud.or.kr/~/git/dancer2.git/

$ git clone ssh://5d@dancer2-imyaman.cloud.or.kr/~/git/dancer2.git

준비한 예제를 다운로드 받습니다. 먼저 받아온 저장소에 필요한 파일 몇 개를 복사합니다.

$ git clone https://github.com/imyaman/OpenShift-DIY-Perl-Dancer2.git
$ rm -rf dancer2/diy/*
$ cp -R OpenShift-DIY-Perl-Dancer2/diy/* dancer2/diy/
$ cp OpenShift-DIY-Perl-Dancer2/.openshift/action_hooks/start dancer2/.openshift/action_hooks/
$ cp OpenShift-DIY-Perl-Dancer2/.openshift/action_hooks/stop dancer2/.openshift/action_hooks/
$ cd dancer2
$ git commit -a -m 'Thank you, Sangyong Gwak'
$ git push

짠~ 이제 웹 브라우저로 웹 사이트에 방문해보세요. ;-)

PaaS에 올린 Dancer2 웹 응용 그림 1. PaaS에 올린 Dancer2 웹 응용 (원본)

웹 서비스를 종료할 때와 시작할 때는 다음의 명령을 이용합니다.

$ rhc app-stop dancer2  # 웹 서비스 종료
$ rhc app-start dancer2 # 웹 서비스 시작

도메인 네임 설정

개인적으로 보유한 도메인 네임이 없다면 기본으로 부여되는 주소인 http://dancer2-imyaman.cloud.or.kr/를 이용해도 됩니다. 별도의 도메인 네임을 보유하고 있다면, 도메인 네임 설정에 다음 내용을 추가합니다.

CNAME  openshift-perl-dancer2  APPNAME-imyaman.cloud.or.kr

그리고 OpenShift에 도메인 네임을 설정합니다.

$ rhc alias add APPNAME yourdomainname.youre.space

나머지

OpenShift-DIY-Perl-Dancer2 디렉토리는 더 이상 필요 없으니 삭제합니다. 앞으로는 OpenShift 애플리케이션 저장소의 diy 디렉토리에서 원하는 것을 만들어 넣으면 됩니다. app.pl 파일을 먼저 살펴보세요.

diy/
app.pl
config.yml
public/
    mobile.html
views/
    index.tt

정리하며

OpenShift 말고 CloudFoundryHerokuDancer2 빌드팩도 있으니 한 번 참고해보세요.

DIY 카트리지 말고 Plack 카트리지가 있는데, 잘 동작하지 않습니다. 아무래도 수정이 좀 필요할 것 같네요. Plack 수정이 끝나면 새 글로 소개하겠습니다. :-)

EOT

blog comments powered by Disqus