本格派エンジニアの工具箱
第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が表示されます。
アプリケーションを手元のPCにダウンロードするには下記のようにgitコマンドでこのリポジトリをcloneします。
# git clone ssh://xxxxxxxx@gihyosample-takaaki.rhcloud.com/~/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のように変更が反映されていることが確認できるはずです。
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の
<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://xxxxxxxx@gihyosample2-takaaki.rhcloud.co m/~/git/gihyosample2.git/ Successfully created application: gihyosample2
作成に成功すればアプリケーション名のディレクトリが作成されると同時に,Webブラウザからアプリケーションにアクセスできるようになるはずです。また,コントロールパネルにものように作成したアプリケーションの情報が追加されます(図3)。
本格派エンジニアの工具箱
- 第31回 Grailsライクにデスクトップアプリケーションを構築する「Griffon」
- 第30回 Scalaをネイティブサポートした「Play Framework 2.0」
- 第29回 JavaオブジェクトとJSONオブジェクトの変換に便利な「Google Gson」
- 第28回 「Jackson Java JSON-processor」でJSONデータの読み書きを行う
- 第27回 JSONデータを扱うためのJavaライブラリ「Jackson Java JSON-processor」
- 第26回 Rad Hatのクラウドプラットフォーム「OpenShift」にJavaEEアプリケーションをデプロイする
- 第25回 Red HatによるPaaS型クラウドサービス「OpenShift」
- 第24回 クロージャや拡張メソッドでJava開発をサポートする「Eclipse Xtend」
- 第23回 Eclipseプロジェクト発の新プログラミング言語「Eclipse Xtend」
- 第22回 Apache Shiroを利用してWebアプリケーションに認証機構を組み込む


