RedHat社のPaaS環境である「OpenShift Online」でMojoliciousアプリを公開する方法を記載します。現在OpenShift OnlineはRHEL6.5ベースで作られており、標準のPerlカードリッジだとPerl5.10になってしまうので任意のバージョンで公開する方法を記載します。今回はPerl5.20で実装します。
##前提条件
- RHNアカウントを取得していること
- rhcツールをDL済みであること
##アプリケーションの作成
sampleという名前のアプリケーションをDIYカードリッジで作成します。
rhc app create sample diy-0.1
##OpenShiftにSSHログイン
OpenShiftにSSHログインします。
rhc ssh -a sample
##Perlのインストール
今回はPerl5.20をインストールします。
cd ~/app-root/data/
mkdir src
cd src
wget http://www.cpan.org/src/5.0/perl-5.20.0.tar.gz
tar xzf perl-5.20.0.tar.gz
cd perl-5.20.0
./Configure -des -Dprefix=~/app-root/data/perl
make
make install
##Cpanm & Carton & Mojoliciousのインストール
Cpanm、Carton、Mojoliciousをインストール。シェル変数HOMEに~/app-root/dataを渡しているのは、デフォルトのHOMEだと権限不足でエラーではじかれるため。
OpenShift Online のセキュリティの問題なのかMojoliciousのテストがIO::Socket::INETところで失敗してしまう。
PATH=~/app-root/data/perl/bin:$PATH
HOME=~/app-root/data
cd ~/perl/bin
curl -LO http://xrl.us/cpanm
chmod +x cpanm
cpanm Carton
cpanm -n Plack Mojolicious
exit
##アプリケーションのひな形作成
OpenShift Online上にgitのremoteリポジトリが作成されるのでローカルにcloneする。.openshift/action_hooksディレクトリにあるstart/stopスクリプトがアプリケーションの起動停止スクリプトになるため以下のように修正します。
rhc git-clone sample
mojo generate app Sample::Web
cd sample
mv ../sample_web/* .
vim .openshift/action_hooks/start
vim .openshift/action_hooks/stop
git add .
git commit -m 'first commit'
git push origin
#!/bin/bash
PATH=~/app-root/data/perl/bin:$PATH
nohup plackup --host $OPENSHIFT_DIY_IP --port $OPENSHIFT_DIY_PORT $OPENSHIFT_REPO_DIR/script/sample_web > /dev/null 2>&1 &
#!/bin/bash
kill `ps -ef | grep plackup | grep -v grep | awk '{ print $2 }'` > /dev/null 2>&1
exit 0
##まとめ
OpenShift OnlineでもPerl最新版でMojoliciousアプリが動かせることがわかりました。