アプリケーションのダウンロードとデプロイ
前回 は、米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はコントロールパネルで確認できる
アプリケーションを手元の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 のように変更が反映されていることが確認できるはずです。
図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://xxxxxxxx@gihyosample2-takaaki.rhcloud.co
m/~/git/gihyosample2.git/
Successfully created application: gihyosample2
作成に成功すればアプリケーション名のディレクトリが作成されると同時に、Webブラウザからアプリケーションにアクセスできるようになるはずです。また、コントロールパネルにものように作成したアプリケーションの情報が追加されます(図3 ) 。
図3 コマンドラインツールで作成したアプリケーションもコントロールパネルに反映される