本格派エンジニアの工具箱

第26回Rad Hatのクラウドプラットフォーム「OpenShift」JavaEEアプリケーションをデプロイする

アプリケーションのダウンロードとデプロイ

前回は、米Red Hat社が運営しているPaaS型クラウドサービス「OpenShift」に対して、Webサイト上のコントロールパネルを使ってWebアプリケーションを作成する方法を解説しました。OpenShiftのEXPRESSサービスでは、クラウド上のWebアプリケーションは分散バージョン管理システムのgitを使って管理されます。作成したアプリケーションのダウンロードやデプロイもgit経由で行うことができます。

クライアントPCがWindows環境の場合、gitを使うにはCygwinにgitをインストールするか、msysGitを利用することでgitコマンドが使えるようになります。またGUIクライアントとしてはTortoiseGitなどがあります。ただし、後述するコマンドラインツールでもLinuxコマンド環境が必要になるので、クライアントPCがWindowsである場合にはCygwinをインストールしておくのがいいでしょう。

OpenShiftでアプリケーションを作成すると、コントロールパネルには図1のようにgitリポジトリのURLが表示されます。

図1 gitリポジトリのURLはコントロールパネルで確認できる
図1 gitリポジトリのURLはコントロールパネルで確認できる

アプリケーションを手元のPCにダウンロードするには下記のようにgitコマンドでこのリポジトリをcloneします。

# git clone ssh://[email protected]/~/git/gihyosample.git

リポジトリには次のようなファイル/ディレクトリが格納されています。

  • .git - Git関連ファイル群
  • .gitignore - Gitの管理対象から除外するファイルのリスト
  • .openshift - OpenShift用ファイル群
  • README - アプリケーションのデプロイ方法などの説明
  • deployments - デプロイ用ファイル格納ディレクトリ
  • src - ソースファイル格納ディレクトリ
  • pom.xml - Mavenビルド用設定ファイル

このうち、アプリケーションのソースコードやリソースファイルなどが格納されているのはsrcディレクトリです。したがって、srcの中にあるファイルを書き換えることでアプリケーションをカスタマイズできます。試しにsrc/main/webapp/index.htmlを次のように変更してみましょう。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>My First App</title>
  </head>

  <body>
    <h1>Hello world.</h1>
  </body>
</html>

修正をgitリポジトリにcommitした上で、pushを行えばクラウド上のファイルに変更を反映させることができます。

# git commit -a -m "コメント"
# git push

WebブラウザからアプリケーションのURLにアクセスしてみると、図2のように変更が反映されていることが確認できるはずです。

図2 変更後のアプリケーションのトップページ
図2 変更後のアプリケーションのトップページ

Javaアプリケーションのビルドとデプロイ

HTMLファイルや画像ファイル、PHPなどのスクリプトファイルのように、コンパイルを必要としないファイルであれば上記の方法で修正することができます。一方でJavaのようにコンパイルしてパッケージを作成するアプリケーションの場合には、ソースを変更しただけでは変更が反映されません。クライアント側でビルドを行い、パッケージファイル(warファイルやearファイルなど)を作成した上で、それをリポジトリに追加する必要があります。

pom.xmlファイルが用意されていることからわかるように、OpenShiftではJavaアプリケーションであればApache Mavenによるビルドを行うことができます。ビルドはMaven WAR Pluginを利用して次のように行います。

# mvn compile war:war

ビルドが成功するとtargetディレクトリが作られて、中にアプリケーション名のwarファイル(例:gihyosample-0.1.war)が生成されます。これをdeploymentsディレクトリにコピーして、次のようにリポジトリへのadd、commit、pushを行えば、クラウド上のアプリケーションがwarファイルの内容に変更されます。

# cp target/gihyosample-1.0.war deployments/
# git add deployments/gihyosample-1.0.war
# git commit -a -m "modified"
# git push

なお、war形式でデプロイしたアプリケーションのURLはデフォルトでは「http://アプリ名-ネームスペース.rhcloud.com/」ですが、ビルド時のpom.xmlファイルを修正することで「http://アプリ名-ネームスペース.rhcloud.com/任意のアプリ名/」のように変更することもできます。pom.xmlのの部分がデフォルトでは「ROOT」になっていますが、これを任意のアプリケーション名に変更します。本稿の例の場合、次のように変更してビルド/デプロイすることによって「http://gihyosample-takaaki.rhcloud.com/gihyosample」というURLでアクセスできるようになります。

<warName>gihyosample</warName>

その他、上記の方法をを使わなくても、独自にビルドしたパッケージファイルをデプロイすることもできます。OpenShiftのJavaプラットフォームはJava EE 6に準拠したJBoss Applocation Serverなので、Java EE 6上で動作するアプリケーションであればそのまま展開することができるはずです。

コマンドラインツールによるアプリケーションの作成

最後にOpenShit用のコマンドラインツールについて紹介しておきます。前回の例ではWebサイト上のコントロールパネルを使ってアプリケーションの作成を行いましたが、OpenShiftではRubyベースのコマンドラインツールが提供されており、これを使ってクライアントPCのコマンドラインでアプリケーションの作成などを行うことができます。

コマンドラインツールはRuby用のパッケージ管理システムであるRubyGemsからインストールすることができます(Cygwinでもインストール可能です⁠⁠。まずRubyGemsをインストールしましょう。インストールは、次のように公式サイトよりパッケージを取得して、rubyコマンドで行います。

# wget http://rubyforge.org/frs/download.php/75711/rubygems-1.8.15.tgz
# tar xzvf rubygems-1.8.15.tgz
# cd rubygems-1.8.15/
# ruby setup.rb

RubyGemsがインストールできたら、gemコマンドを使って次のようにOpenShiftのコマンドラインツールをインストールしましょう。パッケージ名は「rhc」で、コマンドはすべて「rhc-」から始まるものになっています。

# gem install rhc

新規でアプリケーションを作成するコマンドは「rhc-create-app」です。次のように、-aオプションでアプリケーション名を、-tオプションでアプリケーションのタイプを、-lでOpenShiftのユーザ名を指定して実行します。

# rhc-create-app -a gihyosample2 -t jbossas-7.0 -l ユーザ名
Password:    <-- OpenShiftログイン用のパスワードを入力
Creating application: gihyosample2
Now your new domain name is being propagated worldwide (this might take a minute
)...
Enter passphrase for key '/home/takasyou/.ssh/openshift_id_rsa':    <-- 公開鍵用のパスフレーズを入力
Confirming application 'gihyosample2' is available:  Success!

gihyosample2 published:  http://gihyosample2-takaaki.rhcloud.com/
git url:  ssh://[email protected]
m/~/git/gihyosample2.git/
Successfully created application: gihyosample2

作成に成功すればアプリケーション名のディレクトリが作成されると同時に、Webブラウザからアプリケーションにアクセスできるようになるはずです。また、コントロールパネルにものように作成したアプリケーションの情報が追加されます図3⁠。

図3 コマンドラインツールで作成したアプリケーションもコントロールパネルに反映される
図3 コマンドラインツールで作成したアプリケーションもコントロールパネルに反映される

おすすめ記事

記事・ニュース一覧