@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 웹 사이트를 만드는 절차는 다음과 같습니다.
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 웹 사이트 가입 시 사용한 정보를 이용합니다.
아래 명령으로 앱을 생성합니다.
$ rhc create-app -a APPNAME diy
아래 명령으로 OpenShift 애플리케이션에 ssh
로 접속합니다.
$ rhc ssh -a APPNAME
새로운 버전의 Perl을 설치합니다. 필요하다면 perlbrew든 plenv이든 자신에게 적절한 방법을 사용합니다.
$ 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 설치를 확인합니다
Plack과 Dancer2 모듈을 설치합니다.
$ HOME=~/app-root/data ~/app-root/data/perl-new/bin/perl cpan notest install Dancer2 Plack # prompt는 cpan 1 이라고 나올겁니다. notest부터 입력하면 됩니다 quit
OpenShift 애플리케이션의 git 저장소 주소와 웹 사이트 URL을 확인 후 저장소의 내용을 내려 받습니다.
예제의 경우 dancer2
라는 디렉토리가 생성됐습니다.
$ rhc apps dancer2 @ http://dancer2-imyaman.cloud.or.kr/ ... 생략 ... Git URL: ssh://[email protected]/~/git/dancer2.git/ $ git clone ssh://[email protected]/~/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
짠~ 이제 웹 브라우저로 웹 사이트에 방문해보세요. ;-)
그림 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 말고 CloudFoundry나 Heroku용 Dancer2 빌드팩도 있으니 한 번 참고해보세요.
DIY 카트리지 말고 Plack 카트리지가 있는데, 잘 동작하지 않습니다. 아무래도 수정이 좀 필요할 것 같네요. Plack 수정이 끝나면 새 글로 소개하겠습니다. :-)
EOT
X-mas tree
& Llama
ASCII Art by ASCII Art Farts.
Computer ASCII Art by Chris.com.
Cup ASCII Art by ascii.co.uk.
Candle ASCII Art by heartnsoul.com.
Font ASCII Art by ASCII Art Farts.
Text ASCII Art by patorjk.com.
Artwork by
Inkyung Park
& Keedi Kim.
Designed by
Hojung Youn
& Keedi Kim.
Articles by
Seoul Perl Mongers.
Edited by
Keedi Kim.
Hosting sponsored by
SILEX.
Sponsored by
SILEX.
.-''' __ __ / \/ \/ \ =-_- | \. -____- / \ // /|| '' //| //|| == = == ==