LoginSignup
8
8

More than 5 years have passed since last update.

amazon EC2(amazon linux)でScala+Play framework の初期画面表示まで

Last updated at Posted at 2017-02-18

(おことわり)
この記事は、弊社のOrganization を利用して、社内サービス開発にScala+PlayFrameworkを導入するにあたっての作業内容や試行錯誤を記録した連続投稿になります。
基本的には内容が正しく、かつ読み手に有益な情報になるように配慮しておりますが、どちらかと言えば 社内での情報共有 を主目的としているため、

  • まとまりのない情報の羅列
  • 正確に検証されていない情報 などを記載することもあります。予めご了承ください。

これまでのあらすじ

前回までは事前調査が多かったですが、ようやく手を動かす段階までたどり着きました。

初期設定

  • AWSのマネジメントコンソールから、EC2のインスタンスを立ち上げる

    • 料金節約のため、t2/micro にしてみました。メモリが足らなくなりそうな不安がありますが、その時は作り直せばOKなので。
  • $ sudo yum update実行したり ユーザーを追加したり

    • この辺はほかにいくらでもチュートリアルがあるので割愛

Javaを8.0にバージョンアップ

amazon linux だと、初期状態ではOpenJDKの7が入っているようです。
PlayFramework2.5.xはJava8必須なので、バージョンを上げる必要があります。

$ java -version`
> java version "1.7.0_131"

なので、

##  古いバージョンを削除
$ sudo yum remove java-1.7.0-openjdk.x86_64`
##  新しいバージョンを入れる
$ sudo yum install java-1.8.0-openjdk-devel

でJava8を入れ直します。

[ec2-user@ip-10-0-0-165 ~]$ java -version
openjdk version "1.8.0_121"
OpenJDK Runtime Environment (build 1.8.0_121-b13)
OpenJDK 64-Bit Server VM (build 25.121-b13, mixed mode)

入りました。 :ok_hand:

Scalaをダウンロード

Scalaの公式ダウンロードページみると、いろいろありますね・・・。

・Download a starter project (for newbies)

「for newbies」に若干煽りを感じながらも、コメントとかがいろいろ入っていて便利らしいので、これを選択します。

you download and unzip the .zip file below, you'll see the sbt file -- this is a packaged version of sbt, the build tool that Play uses.

なにやらsbt コマンドで実行できるらしいとのこと。事前調査ではPlayFrameworkは Activateコマンドで実行するという話を聞いていたので、「これってPlay本体?それともサンプルパッケージ的な何か?」と若干わからない感が出たのですが、とりあえずやってみる、の意識で。

$ wget https://example.lightbend.com/v1/download/play-scala
$ unzip play-scala


としたら

checkdir error:  play-scala exists but is not directory

の嵐が。どうやら解凍後のディレクトリ名もplay-scalaで、元のzipファイルと衝突しているみたいです。

$ mv play-scala play-scala1
$ unzip play-scala1

とかで適当に解決しました。

sbtコマンド実行(魔の15分間)

公式の通りに、

$ ./sbt run

を実行。なにやらコンパイルっぽいものがごりごり動きます。

ごりごり動きます。

ごりごり・・・あれ、長くね???

そもそも$ ./sbt runで最終的にどうなるのかもわからない状況で、ひたすら待ち続けること15分
「Scalaのビルドは遅い」と聞いていたけど、まさかこれほどまでとは・・・。それともお金をけちってmicroったのが足りなかったのでしょうか。k

--- (Running the application, auto-reloading is enabled) ---

[info] p.c.s.NettyServer - Listening for HTTP on /0:0:0:0:0:0:0:0:9000

(Server started, use Ctrl+D to stop and go back to the console...)

やっと終わったぽいです。 $ ./sbt runでサーバーの起動までやってくれるんですね。
ポート9000はセキュリティ設定で空いていないので、EC2のコンソールから開けます。
(本当はサーバー側で80ポートの接続を9000番にフォワーディングする方が正統派ですが、めんどくさがりました :money_mouth: )

ポート開放を設定して、
http://(Global IP):9000/
にブラウザでアクセス・・・

スクリーンショット 2017-02-18 17.53.09.png

見えました!

そして、ページの説明を見てみると

Need to connect to a database?
Is this your first time?
--- If you're not already using it, check out Activator. If you start the Activator UI, by running:

などなど、結構いろいろとチュートリアルが書いてあります。先ほど懸念していた「Activator使わないの?」問題もきっちりフォローしてくれて、結構親切な印象です。(Activatorは、sbtをラップしてくれる実行ツール、という位置づけらしいです)

とりあえずはこの説明に従っていけば、最低限の設定は進められそうですね!
newbieにも優しいフレームワークです :innocent:

ちなみに、2回目以降の./sbt runでの起動に関しては、時間がかかるということはないみたいです。(心底ほっとした)

(ちょっとハマった)サーバープロセスを切る時

サーバープロセスを起動している時は

(Server started, use Ctrl+D to stop and go back to the console...)

と出ている通り、 Ctrl+Dを押せば切れるのですが、 これに従わずに、

  • Ctrl+c で強制終了
  • ctrl+z で止めて bg

とかをやろうとすると、プロセスが残ってしまうみたいです・・・。
この状態で再度 ./sbt runをすると、9000ポートが埋まっているとか、Cannot allocate memoryとめっちゃ怒られてしまいます。

そんな時は、psjavaプロセスを探して、kill -9 [プロセス番号]で大丈夫です。

復帰はできるのですが、バックグラウンドで実行したい時の方法はわからず・・・。(./sbt run&もダメでした)
この辺りはActivatorを導入するとできそうな気もするので、深追いしないでおきます。

無事HelloWorldができましたので、次回はActivatorの導入やDB接続など、実践的な設定をしていきたいと思います。

8
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8