• 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

 Cloud Foundryに申し込んで使えるようになったので、Spring Roo in Actionの11章を参考にRooのアプリケーションをデプロイしてみました。

 まずはroo shellからCloud Foundryを走査するためのAddonをインストールします。インストールの間自動的に認証されるよう、下記コマンドを実行します。

   1  roo> pgp automatic trust
   2  Automatic PGP key trusting enabled (this is potentially unsafe); disable by typing 'pgp automatic trust' again

そして下記コマンドでAddonをインストールします。

   1  roo> addon install bundle --bundleSymbolicName org.springframework.roo.addon.cloud.foundry;1.1.5.RELEASE
   2  Target resource(s):
   3  -------------------
   4     Spring Roo - Addon - Cloud Foundry (1.1.5.RELEASE)
   5  
   6  Required resource(s):
   7  ---------------------
   8     Spring Beans (3.0.5.RELEASE)
   9     jcl-over-slf4j (1.6.1)
  10     slf4j-nop (1.6.1)
  11     Spring AOP (3.0.5.RELEASE)
  12     Servlet Specification API (2.5.0)
  13     Spring Core (3.0.5.RELEASE)
  14     Jackson JSON processor (1.6.2)
  15     Data mapper for Jackson JSON processor (1.6.2)
  16     Spring Context (3.0.5.RELEASE)
  17     Spring Roo - Wrapping - aopalliance (1.0.0.0010)
  18     Spring Web (3.0.5.RELEASE)
  19     slf4j-api (1.6.1)
  20     Spring Roo - Wrapping - Cloud Foundry API (0.0.1.0010)
  21  
  22  Optional resource(s):
  23  ---------------------
  24     Spring Expression Language (3.0.5.RELEASE)
  25     Spring ASM (3.0.5.RELEASE)
  26  
  27  Deploying...done.
  28  
  29  Successfully installed add-on: Spring Roo - Addon - Cloud Foundry [version: 1.1.5.RELEASE]
  30  [Hint] Please consider rating this add-on with the following command:
  31  [Hint] addon feedback bundle --bundleSymbolicName org.springframework.roo.addon.cloud.foundry --rating ... --comment "..
  32  ."

Roo in Actionの例では "addon install bundle --bundleSymbolicName org.springframework.roo.addon.cloud.foundry" という感じにバージョン番号を指定していないのですが、これだと最新のバージョンがインストールされます。今回のケースではSpring Rooのバージョンが1.1.5なので、Addonのインストールでもバージョンを1.1.5に指定しないとこの時点の最新である1.2.0.RC1がインストールされてしまい、うまくいきません。

インストールが終了したら自動認証をOFFに戻します。

   1  roo> pgp automatic trust
   2  Automatic PGP key trusting disabled (this is the safest option)

Addonをインストールしたことでcloud foundryコマンドが使用できるようになっています。まずはCloud Foundryにログインします。

   1  roo> cloud foundry login --email xxxxxxxxxx@xxxxx.xxx --password xxxxxxxxxx
   2  Credentials saved.
   3  Logged in successfully with email address 'xxxxxxxxxx@xxxxx.xxx'

Cloud Foundryの環境についての情報を表示するには下記コマンドを実行します。

   1  roo> cloud foundry info
   2  
   3  
   4  VMware's Cloud Application Platform
   5  For support visit http://support.cloudfoundry.com
   6  
   7  
   8  Target:     http://api.cloudfoundry.com (0.999)
   9  
  10  
  11  User:     hiroaki.akanuma@gmail.com
  12  Usage:     Memory (128MB of 2048MB total)
  13       Services (0 of 16 total)
  14       Apps (1 of 20 total)

現在デプロイされているアプリケーションのリストは下記コマンドで確認できます。

   1  roo> cloud foundry list apps
   2  
   3  =================================== Applications ===================================
   4  
   5  Name             Status      Instances     Services     URLs
   6  ----             ------      ---------     --------     ----
   7  akanumahello     STARTED     1                          akanumahello.cloudfoundry.com

上記の出力では akanumahello というアプリケーションがすでにデプロイされていることが分かります。

また、現在使用可能なサービスのリストは下記コマンドで確認できます。

   1  roo> cloud foundry list services
   2  
   3  ======================= System Services ========================
   4  
   5  Service        Version     Description
   6  -------        -------     -----------
   7  mysql          5.1         MySQL database service
   8  postgresql     9.0         PostgreSQL database service (vFabric)
   9  mongodb        1.8         MongoDB NoSQL store
  10  redis          2.2         Redis key-value store service
  11  rabbitmq       2.4         RabbitMQ messaging service
  12  
  13  
  14  There are currently no provisioned services.

ではアプリケーションをデプロイしてみます。cloud foundry deploy コマンドでデプロイすることができます。

   1  roo> cloud foundry deploy --appName cftest --path CREATE
   2  ~~中略~~
   3  Operation could not be completed: 400 Bad Request

上記のように 400 Bad Request となってしまった場合は、--appName で指定したアプリケーション名がすでに使われているということなので、アプリケーション名を変更して再度デプロイします。

   1  roo> cloud foundry deploy --appName cftestaka --path CREATE
   2  ~~中略~~
   3  The application 'cftestaka' was successfully pushed

上記のように successfully pushed と出力されればデプロイ成功です。アプリケーションの一覧を確認してみます。

   1  roo> cloud foundry list apps
   2  
   3  =================================== Applications ===================================
   4  
   5  Name             Status      Instances     Services     URLs
   6  ----             ------      ---------     --------     ----
   7  akanumahello     STARTED     1                          akanumahello.cloudfoundry.com
   8  cftestaka        STOPPED     1                          cftestaka.cloudfoundry.com

cftestakaというアプリケーションが一覧に追加されています。StatusがSTOPPEDになっていてまだ起動はしていないので、下記コマンドでアプリケーションを起動します。

   1  roo> cloud foundry start app --appName cftestaka
   2  The application 'cftestaka' was successfully started
   3  roo> cloud foundry list apps
   4  
   5  =================================== Applications ===================================
   6  
   7  Name             Status      Instances     Services     URLs
   8  ----             ------      ---------     --------     ----
   9  akanumahello     STARTED     1                          akanumahello.cloudfoundry.com
  10  cftestaka        STARTED     1                          cftestaka.cloudfoundry.com

Status が STARTED に変わり、アプリケーションが起動されました。http://cftestaka.cloudfoundry.com/ にアクセスしてトップページが表示されれば起動に成功しています。

稼働中のアプリケーションの統計情報については下記コマンドで確認できます。

   1  roo> cloud foundry view app stats --appName cftestaka
   2  
   3  ============================== App. Stats ==============================
   4  
   5  Instance     CPU (Cores)     Memory (limit)     Disk (limit)      Uptime
   6  --------     -----------     --------------     ------------      ------
   7  0            8.0 (4)         239.09M (256M)     28.0M (2048M)     0d:

さて、アプリケーションは起動しましたが、まだDBが使えるようになっていないので、Entityを操作するための画面に遷移しようとするとエラーになってしまいます。

まずはDBをサービスとして作成します。

   1  roo> cloud foundry create service --serviceName cftesakadb --serviceType postgresql
   2  The service 'cftesakadb' was successfully created

サービスの一覧を確認すると、= Provisioned Services = の部分にサービスが追加になっています。

   1  roo> cloud foundry list services
   2  
   3  ======================= System Services ========================
   4  
   5  Service        Version     Description
   6  -------        -------     -----------
   7  mysql          5.1         MySQL database service
   8  postgresql     9.0         PostgreSQL database service (vFabric)
   9  mongodb        1.8         MongoDB NoSQL store
  10  redis          2.2         Redis key-value store service
  11  rabbitmq       2.4         RabbitMQ messaging service
  12  
  13  
  14  
  15  = Provisioned Services =
  16  
  17  Name           Service
  18  ----           -------
  19  cftesakadb     postgresql

次に、作成したサービスをアプリケーションに紐付けます。

   1  roo> cloud foundry bind service --serviceName cftesakadb --appName cftestaka
   2  The service 'cftesakadb' was successfully bound to the application 'cftestaka'
   3  roo>

そしてアプリケーションを再起動します。

   1  roo> cloud foundry restart app --appName cftestaka
   2  The application 'cftestaka' was successfully restarted

これでアプリケーションがDBを使えるようになり、EntityのCRUD画面も動作するようになります。

アプリケーションのログを確認するには下記コマンドを実行します。

   1  roo> cloud foundry view logs --appName cftestaka --instance 0

長いので出力は省略しますが、stderr.logとstdout.logが閲覧できます。

それと現在のメモリの割当量は下記コマンドで確認できます。

   1  roo> cloud foundry view app memory --appName cftestaka
   2  
   3  = Application Memory =
   4  
   5  Name          Memory
   6  ----          ------
   7  cftestaka     256MB

現在は256MBのメモリが割り当てられています。この割当量を変更するには下記のようにコマンドを実行します。

   1  roo> cloud foundry update app memory --appName cftestaka --memSize 512MB
   2  
   3  = Application Memory =
   4  
   5  Name          Memory
   6  ----          ------
   7  cftestaka     512MB

メモリ量が512MBに変更されました。

RooとCloud Foundryの組み合わせなら簡単なCRUDアプリの公開はとてもスピーディーに行うことができそうです。まだCloud Foundryはベータ版なので、正式版になったときに料金体系などがどうなるかは気になりますが、Roo + Cloud Foundryで何か公開できるようなサービスでも作れないかなぁと思っています。

posted by Png akanuma on Mon 12 Dec 2011 at 00:01

Comments:

or Preview
Social Bookmarks
  • Delicious
  • B_entry2038
  • Clip_16_12_w
Services from s21g
twpro(ツイプロ)
Twitterプロフィールを快適検索
地価2009
土地の値段を調べてみよう
MyRestaurant
自分だけのレストラン手帳
Formula
ブログに数式を埋め込める数式コミュニティ