Skip to content

Instantly share code, notes, and snippets.

@atsuteru
Last active December 18, 2015 05:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save atsuteru/5733668 to your computer and use it in GitHub Desktop.
Save atsuteru/5733668 to your computer and use it in GitHub Desktop.

Play Framework 2.1 を CloudBees であれこれしてみた記録。 Application ContainerとしてTomcat7(Server3.0)に乗せられる構成にしてみる。

前提条件

  • CloudBeesのアカウントを持っていること。
  • CloudBeesのアカウントページで国を選択すると日本語の画面に変わるのでやっておく。
  • CloudBeesでClickStackからTomcat7を選択し、Tomcat7-Application,Git-Repository,Database,Jenkins-Jobを自動作成しておくこと
  • Play2.1.0をダウンロードし、空白を含まないパスに展開して、Pathを通してあること
  • Oracle JDK1.7を展開し、JAVA_HOME環境変数の定義がされていること

Play Framework 2.1 アプリケーションを作成しよう

さくっと作成。Javaもよし、Scalaもよし。

CloudBees上ではplayコマンドが使えない・・・sbtを使う準備をしよう

ローカルマシン上で、Play2.1.0直下に次の内容を記したファイルを作成し、sbtコマンドを利用可能にする

sbt.bat(Windows以外はsbt.sh。内容の違いは読みかえること)

@echo off
java -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256m -Xmx512M -Xss2M -jar "%~dp0framework\sbt\sbt-launch.jar" %*

CloudBeesにはwar形式で配備する・・・play2でwarを作る準備をしよう

このサイトを参考に、play warコマンドが通るようにする。
https://github.com/dlecan/play2-war-plugin/wiki/Configuration

さらにTomcat7コンテナではPlay2のログが悪さをする?その対処をやっておく。
そんな話・・・play2war/play2-war-plugin#80
なおし方・・・https://github.com/dlecan/play2-war-plugin/wiki/ConfigurationLoggingJBoss7

修正例:project/Build.scala

import play.Project._
import com.github.play2war.plugin._

object ApplicationBuild extends Build {

  val appName         = "smphone"
  val appVersion      = "1.0-SNAPSHOT"

  val appDependencies = Seq(
    // Add your project dependencies here,
    javaCore,
    javaJdbc,
    javaEbean,
    "com.github.play2war.ext" %% "redirect-playlogger" % "1.0.1"
  )

  val main = play.Project(appName, appVersion, appDependencies)
    .settings(Play2WarPlugin.play2WarSettings: _*)
    .settings(
      // Add your own project settings here
      Play2WarKeys.servletVersion := "3.0"
  )
}

修正例:project/plugins.sbt ※空白行にも意味があるので気をつけること!

// Comment to get more information during initialization
logLevel := Level.Warn

// The Typesafe repository
resolvers += "Typesafe repository" at "http://repo.typesafe.com/typesafe/releases/"

// Use the Play sbt plugin for Play projects
addSbtPlugin("play" % "sbt-plugin" % "2.1.0")

// Use the war sbt plugin for Play projects
addSbtPlugin("com.github.play2war" % "play2-war-plugin" % "0.9")

すると play war コマンドはもちろん、sbt war コマンドも成功するはずなので確認しておくこと。

CloudBeesのGitリポジトリにpushしよう・・・CloudForge

ローカルマシン上で、ssh-keygen コマンドなどで、公開鍵と秘密鍵のセットを作っておく。
次に、ローカルマシンからgit.cloudbees.comに接続するときに、作成した秘密鍵を使うように設定する。

  • %userprofile%.ssh\config(Windows以外は~/.ssh/config) に以下を追記。

      Host git.cloudbees.com
        Hostname git.cloudbees.com
        port 22
        IdentityFile "(ホームディレクトリ)\.ssh\(秘密鍵の名前)"
        TCPKeepAlive yes
        IdentitiesOnly yes
    

そしてCloudBees上で、アカウントの設定画面のSecurity Keyのページから、公開鍵を登録。
さぁこれでローカルマシンで作ったPlay Framework 2.1.0のソースコードがGitリポジトリにpush出来るはず。

Tomcat7-Applicationにデプロイしよう・・・Jenkins

CloudBeesで、Jenkinsのページを開くと、ジョブが自動作成されているはず。 しかも動いた形跡があるはず。 それはGitリポジトリにpushすると自動的にジョブが起動し、Tomcat7-Applicationにデプロイされる仕組みまで自動作成してくれているから。 なのでここでは内容の確認とジョブの修正を行う。

まず、Jenkinsに Jenkins sbt plugin をインストールし、システムの設定ページを修正する。
プラグインのインストール後、システムの管理を開き、sbt の段落で sbt launch jars を追加する。

Name:sbt-0.12.2
Path:/opt/sbt/sbt-launch-0.12.2.jar

次に、ジョブの設定を変更する。

  • CloudBees DEV@cloud Authorizatio - JDK の設定:Oracle JDK 1.7 を選択する

  • ビルド・トリガ:Build when a change is pushed to CloudBees Forgeにチェックがついているはず。
    Gitリポジトリにpushすると自動的にジョブが起動する設定がこれ。

  • ビルド:シェル実行になっていると思うが、これを jenkins sbt plugin を利用したものに変える。
    ビルド手順のボタンから build using sbt を選択。以下のように入力する。
    ※もともとあったビルド手順は削除する。

      sbt launcher:sbt-0.12.2
      JVM Flags:-Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=384M
      sbt Flags:-Dsbt.log.noformat=true
      Actions:clean compile war
    
  • ビルド後の処理:配備するwarの指定を変更する。

      Deploy Applications - Host service - Applications - Application - First Match - Application file:target/*.war
    

これでOK。CloudBeesのGitリポジトリにpushすれば、自動的にTomcat7へPlay2アプリケーションが配備されるはず。

Tomcat7-Applicationを管理しよう・・・Apps

CloudBeesのAppsのページから、作成したアプリケーションのconfigureページを開く。ここからアプリケーションの状態の確認やログの取得が行える。

以上。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment