本格派エンジニアの工具箱
第25回 Red HatによるPaaS型クラウドサービス「OpenShift」
OpenShiftについて
「OpenShift」は,米Red Hat社が運営しているPaaS型のクラウドサービスです。Java,PHP,Ruby,Python,Perlに対応しており,それぞれの開発フレームワークを利用したアプリケーションを展開することができます。現在はまだプレビュー段階ですが,SLA無しなどといった条件のもとで利用することができるのが特徴です。
OpenShiftには,無償で利用できる「Express」と,有償の「Flex」の2種類のサービスがあります。ExpressではWebコンソールやコマンドラインツールを用いたWebアプリケーションの作成や公開,カスタマイズ,gitを用いたデプロイやリポジトリ管理などを行え,アプリケーションは共有のサーバインスタンスに展開されます。
一方Flexでは,自前のサーバインスタンスやクラウドオブジェクトを作成・展開することが可能で,その上にアプリケーションをデプロイできます。サーバインスタンスなどはAmazon EC2上に展開されます。
ExpressとFlexのそれぞれにおいて提供される機能,サポートされる言語やフレームワーク,データベースは下表のようになっています。Javaに関してはJava EE 6のフル機能がサポートされており,このバックグラウンドにはRed Hat社が提供しているJBoss Application Serverが使われているとのこと。すなわち,JBoss AS上で動作するJavaアプリケーション(当然,Java EE 6仕様に準拠したものを含む)であれば,そのままOpenShift上で実行できるということになります。
表1 ExpressとFlexの機能比較
| 機能 | Express | Flex |
|---|---|---|
| コマンドラインインターフェース | ○ | × |
| GUIインターフェース | × | ○ |
| クラウドオブジェクトの作成 | × | ○ |
| クラウドオブジェクトの管理 | × | ○ |
| クラスタの作成 | × | ○ |
| クラスタの管理 | × | ○ |
| サーバの作成 | × | ○ |
| サーバの管理 | × | ○ |
| アプリケーションの作成 | ○ | ○ |
| アプリケーションの管理 | ○ | ○ |
| アプリケーションのインポート | × | ○ |
| アプリケーションのカスタマイズ | ○ | ○ |
| アプリケーションのデプロイ | ○ | ○ |
| クラウドのパフォーマンスの閲覧 | × | ○ |
表2 サポートされる言語やフレームワークなど
| 言語など | Express | Flex |
|---|---|---|
| Ruby | Rails, Sinatra | Rails, Sinatra |
| Python | Pylons, Turbogears, Django | Pylons, Turbogears, Django |
| Perl | PerlDancer | - |
| PHP | Zend, Cake, Symfony, CodeIgniter | Zend, Cake, Symfony, CodeIgniter |
| Java | JavaEE6, CDI/Weld, Spring, Seam | JavaEE6, CDI/Weld, Spring, Seam |
| データベース | MySQL, SQLite | MySQL, MongoDB, Membase |
| メッセージング | (サポート予定) | MRG |
本稿では,Expressの方を使ってWebアプリケーションを展開する方法を紹介します。
アプリケーションを作成する
前述のように,Expressはアカウント登録をすれば無償で利用することができます。サインインすると図1のように「Open control panel」のリンクが表示されます。
コントロールパネルは,クラウド上のアプリケーションを管理するためのWebコンソールです。この画面でアプリケーションの作成や削除などを行うことができます。OpenShiftではそれ以外にコマンドラインベースの管理ツールも提供されており,PCのコマンドラインからアプリケーションを管理することもできますが,まずはコントロールパネルの使用方法を紹介しましょう。
アプリケーションを作成するためにはユーザごとにユニークなドメイン名を登録する必要があります。「NAMESPACE」の項目で任意のドメイン名を入力して[Save]をクリックします(図2)。他のユーザが同じドメイン名を使っていなければ図3のようにドメイン名が登録できます。
このドメイン名はアプリケーションの公開URLに含まれることになります。たとえばドメイン名が「takaaki」であれば,アプリケーションの公開URLは「http://アプリケーション名-takaaki.rhcloud.com」のようになります。
続いて,SSH用の公開鍵を登録する。OpenShiftでは,アプリケーションのデプロイはgitリポジトリを通じて行います。このgitリポジトリにはsshを介してアクセスする必要があるため,利用するためにはあらかじめクライアントPCの公開鍵をコントロールパネルに登録しておかなければなりません。公開鍵の作成は,OpenSSHなどのSSHクライアントツールを利用して行います。Windows環境の場合は,CygwinやOpenSSH for Windowsを使うことで,sshや後述するssh-keygenなどのコマンドを利用できるようになります。
公開鍵および秘密鍵の生成はssh-keygenコマンドを利用して行います。Cygwinを使って~/.sshディレクトリ以下に鍵ファイルを生成したい場合には次のようになります(「openshift_id_rsa」の部分は任意のファイル名でよい)。
# cd ~/.ssh/ # ssh-keygen -f openshift_id_rsa Generating public/private rsa key pair. Enter passphrase (empty for no passphrase): ←任意のパスフレーズを入力 Enter same passphrase again: ←パスフレーズを再度入力 Your identification has been saved in openshift_id_rsa. Your public key has been saved in openshift_id_rsa.pub. (以下省略)
これで~/.ssh以下に「openshift_id_rsa」と「openshift_id_rsa.pub」の2つのファイルが生成されます。前者が秘密鍵で後者が公開鍵です。このうち,公開鍵である「openshift_id_rsa.pub」の中身を,図4のコントロールパネルに登録します。
ドメイン名と公開鍵を登録できたら,いよいよアプリケーションを作成してみましょう。図5のように「Apps」の項目で任意のアプリケーション名を記入し,アプリケーションのタイプを選んで[Add]をクリックします。タイプは使用するプログラミング言語基盤別に「perl」「jbossas(Java)」「wsgi(Python)」「rack(ruby)」「php」のいずれかが選択できます。本稿の例ではjbossasを選んで作成しました。
アプリケーションが作成されると,図6のようにその公開URLと,gitリポジトリのURLが表示されます。
作成されたアプリケーションは,最初はあらかじめ用意された雛形の状態です。公開URLにアクセスすると図7のようなページが表示されるはずです。
次回はこのアプリケーションのカスタマイズの仕方や,コマンドラインツールの利用方法などについて解説します。
本格派エンジニアの工具箱
- 第26回 Rad Hatのクラウドプラットフォーム「OpenShift」にJavaEEアプリケーションをデプロイする
- 第25回 Red HatによるPaaS型クラウドサービス「OpenShift」
- 第24回 クロージャや拡張メソッドでJava開発をサポートする「Eclipse Xtend」
- 第23回 Eclipseプロジェクト発の新プログラミング言語「Eclipse Xtend」
- 第22回 Apache Shiroを利用してWebアプリケーションに認証機構を組み込む
- 第21回 Apache Shiroを利用して,スタンドアロンプログラムでセッションを有効にする
- 第20回 Javaアプリケーション向けの認証フレームワーク「Apache Shiro」
- 第19回 Javaプログラムから外部プロセスを起動するための「Apache Commons Exec」
- 第18回 Silverlight業務アプリケーションの配布で押さえておきたいポイント
- 第17回 「Software Quality Environment」による静的解析でソースコードの品質を向上させる

