読者です 読者をやめる 読者になる 読者になる

戦えプログラマン

いつだって戦いなのだ

無料でPlay2鯖を立てる(OpenShift + Scala + Play Framework)

「『OpenShift』に登録すると、
 タダでScala鯖が立って、
 git pushするだけでデプロイできちゃう!」

とかいう甘言に釣られて、思ったよりのたうち苦しんだので備忘録。
(※主にドキュメントを読まなかったせい)

こんな記事書いといて何だが、OpenShiftは割と公式ドキュメントが充実してるので、
英語がちゃんと読める人は公式読むことをオススメ。
用語とか「OpenShiftとは何ぞや」みたいな話は、
既にたくさん良い記事があるのでググってね!!

さー、IntelliJのインポート・ビルドが終わるのと、この記事書き終わるの、どっちが早いかな。

0. 前提環境

  • 開発環境 : Windows 7IntelliJ IDEA Community Edition (結局無料Win10スルーしちまった・・・)
  • OpenShift操作用コマンド(rhc)のインストール先 : Lubuntu (VMWare)

rhc用にrubyが必要で、ruby + win は相性悪いとよく聞くので、VM上に入れた。
「なんか軽いらしい」と適当に選んだディストリなので、rubyが動けば何でもよし。

1. OpenShift に登録する。

特に珍しいものもなく、ググれば記事出てくるし割愛。

2. Lubuntu に rhc をインストールする。

公式の通り
For Debian/Ubuntu | OpenShift Developers

(メモ)

vm@l-vm:~$ rhc setup
# (中略)
If you have your own OpenShift server, you can specify it now. Just hit enter to use the server for OpenShift Online:
openshift.redhat.com.
# 空Enterでよし
Enter the server hostname: |openshift.redhat.com| 

You can add more servers later using 'rhc server'.

# 登録済みのアカウントでログインする
Login to openshift.redhat.com: user@example.com
Password: ***

# 一定期間ログインしっぱなしにするみたいなやつ。yesなりお好きにしてEnter。
OpenShift can create and store a token on disk which allows to you to access the server without using your password. The key
is stored in your home directory and should be kept secret.  You can delete the key at any time by running 'rhc logout'.
Generate a token now? (yes|no) yes
Generating an authorization token for this client ... lasts about 1 month

Saving configuration to /home/vm/.openshift/express.conf ... done
# (略)

初めての接続だと、「sshキー登録する?」とも聞かれるので、これも「yes」でよい。
後からWebUIで簡単に追加・削除ができるので。 (https://openshift.redhat.com/app/console/settings
(「~/.ssh/」配下に鍵が存在すれば、デフォでそれが使われる。)

3. OpenShift に Play2 をデプロイ。

さあもうデプロイだよ!!

公式によると、雛形のカートリッジ使うのが手っ取り早いっぽい。
Free Play Framework Hosting | OpenShift QuickStart
ver.2.5.0とちょい古いのが残念だけど・・・まぁ2.5台だしいいか。

GitHub - tyrcho/openshift-cartridge-play2: Play2 In OpenShift as a cartridge

# WebUIでなく、コマンドで雛形を作る(結構待つ)
vm@l-vm:~$ rhc app create  playapp  http://cartreflect-claytondev.rhcloud.com/reflect?github=tyrcho/openshift-cartridge-play2&commit=play-2.5.0

# できあがったウェブサイトの確認 (※この時点でウェブサイトにブラウザアクセスすると500エラーで死んでるが気にしない)
vm@l-vm:~$ rhc apps
/var/lib/gems/2.3.0/gems/commander-4.2.1/lib/commander/user_interaction.rb:328: warning: constant ::TimeoutError is deprecated
playapp @ http://playapp-example.rhcloud.com/ (uuid: 000a000b0c000000b0000001)
-----------------------------------------------------------------------------------------
  Domain:     example
  Created:    11:07 PM
  Gears:      1 (defaults to small)
  Git URL:    ssh://000a000b0c000000b0000001@playapp-example.rhcloud.com/~/git/playapp.git/
  SSH:        000a000b0c000000b0000001@playapp-example.rhcloud.com
  Deployment: auto (on git push)

  github-play2-2.5.0 (Play Framework 2.5.0)
  -----------------------------------------
    From:    http://cartreflect-claytondev.rhcloud.com/reflect?github=tyrcho/openshift-cartridge-play2
    Website: https://github.com/tyrcho/openshift-cartridge-play2
    Gears:   1 small

You have access to 1 application.

# 鯖にsshログイン
vm@l-vm:~$ rhc ssh playapp

# 鯖の状態を確認してみる
[playapp-example.rhcloud.com 000a000b0c000000b0000001]\> gear status
Cart to get the status for?
1. play2-2.5.0
?  1
ATTR: quota_blocks=1048576
ATTR: quota_files=80000
CLIENT_RESULT: Application is either stopped or inaccessible

# ビルドして叩き起こす(かなり待つ)
[playapp-example.rhcloud.com 000a000b0c000000b0000001]\> gear build
[playapp-example.rhcloud.com 000a000b0c000000b0000001]\> gear start

# 鯖の状態を確認してみる
[playapp-example.rhcloud.com 000a000b0c000000b0000001]\> gear status
Cart to get the status for?
1. play2-2.5.0
?  1
ATTR: quota_blocks=1048576
ATTR: quota_files=80000
CLIENT_RESULT: Application is running

# ∩(・ω・)∩ばんじゃーい

WebUIで、鯖が起動してることを確認。
https://openshift.redhat.com/app/console/applications
f:id:arx0balest:20160802212644p:plain:w400

サイトのURLにアクセスすると・・・・・・・・・
f:id:arx0balest:20160802212039p:plain:w400
キタワー.:.。.:・゚(n'∀')η゚

4. 開発マシンにcloneする。

もう各所で目にしたが
ssh://000a000b0c000000b0000001@playapp-example.rhcloud.com/~/git/playapp.git/」
リポジトリ
sshなので接続には公開鍵の登録が必要。

公開鍵を登録する方法は、これまた公式を参考に。
Remote Connection (SSH) | OpenShift Developers

作った鍵を「settings」ページの「Add key」で登録。
Sign in to OpenShift Online | OpenShift Online by Red Hat

開発マシンで git clone(SourceTree経由でやったらエライ遅かったので、コマンドでのcloneをオススメする)

git clone ssh://000a000b0c000000b0000001@playapp-example.rhcloud.com/~/git/playapp.git/

host@Win-PC MINGW64 /d/Project/IdeaProjects/playapp (master)
$ git log --oneline
53f9610 Creating template

そんでローカルにできあがったリポジトリを、IntelliJにインポート(すごく待つ)

んで

これでようやく・・・ようやくスタートラインに・・・
立ててないんだよなぁ・・・

次はDBの作成・登録。(また後日)