LoginSignup
3
3

More than 5 years have passed since last update.

PaaSにSkinny Frameworkアプリケーションをデプロイする(OpenShift編) on OSX Client

Posted at

注意書き

作業後に書き直しため、間違いがあるかもしれません。
後で確認して、修正します。

はじめに

複数のPaaSでSkinny Frameworkをデプロイする方法を試したので、まずは、OpenShiftの方法を記載します。
(CloudBeesでは、DBサービスがMySQLのみなので再検討中)

スタンドアローンでの実行なども出来ると思いますが、
今回は、warファイルをTomcatにデプロイする方法を取りました。

また、同一インスタンス上のPostgreSQLを利用しています。

OpenShiftについて

RedHat提供のPaaSサービスを使って、3インスタンスまで、無料で使えます。

特徴としては、OpenStack準拠で、標準のカートリッジを使えば自動でセキュリティーパッチのメンテナンスを行ってくれることでしょうか。

現時点(2014/5/10)において、日本在住の設定では有料登録ができないようです。

OpenShift登録手順

OpenShiftのサイトを開いたあと、

  • サインアップ
  • メールアドレスの確認
  • 規約同意

の順におこないます。

サイトトップ画面
スクリーンショット 2014-05-10 21.33.11.png

サインアップ画面
スクリーンショット 2014-05-10 21.34.47.png

メールアドレス確認メール送信完了画面
スクリーンショット 2014-05-10 21.38.26.png

メールアドレス確認メール
名称未設定.png

規約同意画面
スクリーンショット 2014-05-10 21.39.03.png

Tips

  • アカウントもパスワードもRedHat全体のアカウントと共通になります。
  • サインイン後にエラー画面に入る場合は、ブラウザーのクッキーを削除します。削除対象は、「redhat.com」を含むものになります。

RHCコマンドラインツールの導入手順

以下を参考に説明します。

OpenShiftのコマンドラインツールは、RubyのGEMとして用意されているのでRubyが必要です。

OSXの場合は、

$ sudo gem install rhc --no-rdoc --no-ri

でインストールできます。

次に、アカウントを紐付けます。セットアップ作業中に、自動でsshの公開鍵のアップロードなども行われます。

# アカウント設定します。
$ 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.

Login to openshift.redhat.com: <登録メールアドレス>
Password: ************

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 /Users/foobar/.openshift/express.conf ... done

Checking for git ... found git version 1.8.5.2 (Apple Git-48)

Checking common problems .. done

Your client tools are now configured.

足りない時

  • ドメインの設定
  • sshの公開鍵

sshの設定ができなかった場合は、Webコンソールの設定画面から公開鍵を追加します。

$ pbcopy < ~/.ssh/id_rsa.pub

で、クリップボードにコピーして追加しましょう。

コマンドラインからOpenShiftアプリを作成

GUIから設定する方法は、公式ドキュメントのはじめよう から確認して下さい。

OpenShiftアプリのおおまかな作成手順は、
1. フレームワークを選択
2. DBなどのカートリッジを追加
3. コードをGitでアップロード
になります。

コマンドラインからおこなうと、1,2,3がセットで行えます。

# tomcat7 + postgres9.2 のカートリッジを利用
# rhc app-create <アプリ名> <カートリッジ> [<追加カートリッジ>]
$ rhc app-create skinnyapp jbossews-2.0 postgresql-9.2

Application Options
-------------------
Domain:     foobar
Cartridges: jbossews-2.0, postgresql-9.2
Gear Size:  default
Scaling:    no

Creating application 'skinnyapp' ... done

  PostgreSQL 9.2 database added.  Please make note of these credentials:

   Root User: adminxxxxxx
   Root Password: xxxxxxxxxxxx
   Database Name: skinnyapp

Connection URL: postgresql://$OPENSHIFT_POSTGRESQL_DB_HOST:$OPENSHIFT_POSTGRESQL_DB_PORT

Waiting for your DNS name to be available ... done

Cloning into 'skinnyapp'...
The authenticity of host 'skinnyapp-foobar.rhcloud.com (255.255.255.255)' can't be established.
RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'skinnyapp-foobar.rhcloud.com,255.255.255.255' (RSA) to the list of known hosts.

Your application 'skinnyapp' is now available.

  URL:        http://skinnyapp-foobar.rhcloud.com/
  SSH to:     xxxxxxxxxxxx@skinnyapp-foobar.rhcloud.com
  Git remote: ssh://xxxxxxxxxxxx@skinnyapp-foobar.rhcloud.com/~/git/skinnyapp.git/
  Cloned to:  /Users/foobar/skinnyapp

Run 'rhc show-app skinnyapp' for more details about your app.

DBの情報

Root User: adminxxxxxx
Root Password: xxxxxxxxxxxx
Database Name: skinnyapp

サーバの情報

URL: http://skinnyapp-foobar.rhcloud.com/
SSH to: xxxxxxxxxxxx@skinnyapp-foobar.rhcloud.com
Git remote: ssh://xxxxxxxxxxxx@skinnyapp-foobar.rhcloud.com/~/git/skinnyapp.git/

Gitクローン先の情報

Cloned to: /Users/foobar/skinnyapp

サーバーにgitリポジトリがあり、
また、sshでログインも出来ます。

作成した、アプリを一度開いてみましょう。

# 
$ open http://skinnyapp-foobar.rhcloud.com/

名称未設定2.png
という画面が、表示されているはずです。

gitリポジトリを自前でクローンしたいときは、

# クローン
$ git clone ssh://xxxxxxxxxxxx@skinnyapp-foobar.rhcloud.com/~/git/skinnyapp.git skinnyapp 
$ cd skinnyapp

とします。

skinnyを用意

今回は公式チュートリアルを元に、ざっくり、下記の手順で準備します。

  • ダウンロード
  • モデル作成
  • DBマイグレート
  • サーバ起動
  • ページ確認

Skinny Frameworkのサイトから、まずは、スケルトンをダウンロードしてきます。

「skinny-blank-app-with-deps.zip (80MB)」
など書いてある物になります。

ZIPファイルを展開して、ターミナルを開き、フォルダ内に移動して
まずは、development環境でコマンドを実行します。

# Membersを用意
$ ./skinny g scaffold members member name:String activated:Boolean luckyNumber:Option[Long] birthday:Option[LocalDate]
# DBマイグレート(SQLite)
$ ./skinny db:migrate
# サーバ起動
$ ./skinny run

サーバが起動したら別のターミナルを開き、コマンドラインからブラウザを表示します。
```bash:

トップ画面をブラウザで表示

$ open http://127.0.0.1:8080/

memberの一覧画面をブラウザで表示

$ open http://127.0.0.1:8080/members
```

OpenShiftデプロイ用の設定

ここからは、OpenShift環境に合わせた設定変更をおこないます。

PostgreSQL用のJDBCドライバーを追加します。
```scala:Build.scala
"com.h2database" % "h2" % "1.4.177", // your own JDBC driver
"org.postgresql" % "postgresql" % "9.2-1004-jdbc4", // your own JDBC driver



OpenShift用のデータベース設定に変更します。
```bash:application.conf
development {
  db {
    default {
      driver="org.h2.Driver"
      url="jdbc:h2:file:./db/development;MODE=PostgreSQL;AUTO_SERVER=TRUE"
      user="sa"
      password="sa"
      poolInitialSize=2
      poolMaxSize=10
    }
  }
}

test {
  db {
    default {
      driver="org.h2.Driver"
      url="jdbc:h2:file:./db/test;MODE=PostgreSQL;AUTO_SERVER=TRUE"
      user="sa"
      password="sa"
      poolInitialSize=2
      poolMaxSize=10
    }
  }
}

staging {
  db {
    default {
      driver="org.postgresql.Driver"
      url="jdbc:postgresql://"${?OPENSHIFT_POSTGRESQL_DB_HOST}":"${?OPENSHIFT_POSTGRESQL_DB_PORT}"/"${?PGDATABASE}
      user=${?OPENSHIFT_POSTGRESQL_DB_USERNAME}
      password=${?OPENSHIFT_POSTGRESQL_DB_PASSWORD}
      poolInitialSize=5
      poolMaxSize=20
    }
  }
}

production {
  db {
    default {
      driver="org.postgresql.Driver"
      url="jdbc:postgresql://"${?OPENSHIFT_POSTGRESQL_DB_HOST}":"${?OPENSHIFT_POSTGRESQL_DB_PORT}"/"${?PGDATABASE}
      user=${?OPENSHIFT_POSTGRESQL_DB_USERNAME}
      password=${?OPENSHIFT_POSTGRESQL_DB_PASSWORD}
      poolInitialSize=5
      poolMaxSize=20
    }
  }
}


warファイルを作成して、OpenShiftのGitフォルダにコピーします。

#war作成
$ ./skinny package production

#ファイルコピー(Tomcat上にwarファイル名で展開されるので、ファイル名を変更)
$ cp ./build/target/scala-2.10/skinny-blank-app_2.10-0.1.0-SNAPSHOT.war /User/foobar/skinnyapp/deployments/skinnyapp.war

OpenShift環境にDBマイグレート

OpenShiftのインスタンス上のPostgreSQLにDBマイグレーションするには、ポートフォワーディングをつかいます。

# ポートフォワード作成
$ rhc port-forward shinnyapp
Checking available ports ... done
Forwarding ports ...

To connect to a service running on OpenShift, use the Local address

Service    Local               OpenShift
---------- -------------- ---- ----------------
java       127.0.0.1:8080  =>  127.4.227.1:8080
postgresql 127.0.0.1:5432  =>  127.4.227.2:5432

Press CTRL-C to terminate port forwarding

次に、DB設定用の環境変数を揃えます。
```bash:

環境変数を取得する

[shinnyapp-foobar.rhcloud.com]> export|egrep "OPENSHIFT_POSTGRESQL_DB_PORT|PGDATABASE|OPENSHIFT_POSTGRESQL_DB_PASSWORD"

declare -x OPENSHIFT_POSTGRESQL_DB_PASSWORD="xxxxxxxx"
declare -x OPENSHIFT_POSTGRESQL_DB_PORT="5432"
declare -x PGDATABASE="skinnyapp"


ローカルにも環境変数を反映して、DBマイグレートを実行します。

```bash:
#ローカル環境に環境変数をエクスポート
declare -x OPENSHIFT_POSTGRESQL_DB_PASSWORD="mjIwfERH7B3s"
declare -x OPENSHIFT_POSTGRESQL_DB_PORT="5432"
declare -x PGDATABASE="jbossews"

#ポートフォワーディングのため、ここだけ違う
declare -x OPENSHIFT_POSTGRESQL_DB_HOST="127.0.0.1"

#OpenShiftにDBマイグレート
./skinny db:migrate production

OpenShift環境にwarファイルをアップロード

最後に、先ほどコピーしたwarファイルをGit経由でアップロードします。

$ git add .
$ git commit -m "Inital commit."
$ git push

...再起動に関するログ...

別のターミナルで、ログを開いてみましょう。

# ログを表示
$ rhc log skinnyapp

しばらくして、ブラウザを開いて、動作を確認しましょう。

$ open http://shinnyapp-foobar.rhcloud.com/shinnyapp/members

おわりに

ソースに修正があれば、再びwarファイルを作成して、デプロイしてみましょう。

以上で終わりです。

3
3
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
3
3