IBM Smart Business Development and Test on the IBM Cloud (略して IBM Cloud または IBM Development and Test Cloud) は、アプリケーションを作成および検証するために利用できるパブリック IaaS (Infrastructure as a Service) です。このクラウド・プラットフォームでは、IBM のソフトウェアが含まれた構成済みの多種多様な Linux および Windows サーバー・イメージを利用できるようになっています。これらの仮想マシンをプロビジョニング、構成、および管理するには、Web、モバイル、コマンドライン、またはカスタム・アプリケーションを使用することができます。仮想化マシンには SSH、HTTP、あるいは FreeNX でアクセスして、目的のアプリケーションをインストールして実行し、テストを行うことができます。
プロジェクトのリリース予定日、そしてそのプロジェクトのサービス提供開始時の全体の品質を危険にさらす最大の要因には、物理サーバーからなる従来の開発およびテスト用インフラストラクチャーをセットアップする時間とコストが挙げられます。この 2 つのリスク要因は、IBM Development and Test Cloud によって大幅に軽減されます。IBM Cloud では、こうしたリクスとコストを削減するために、あらかじめ構成済みの仮想サーバーを随時、簡単かつ迅速にインスタンス化できるようにすることで、コンピューターを購入してオペレーティング・システムとミドルウェアをインストールするプロセス (このプロセスはエラーの原因となりやすいものです) を省けるようにします。
このような利点に限らず、この記事ではクラウド・コンピューティングが PHP 開発者の興味をそそる理由を説明した後、IBM Cloud に PHP テスト環境を構成するために必要な手順をステップごとに示します。その手順では、データベース・サーバーとアプリケーション・サーバーの 2 つの層からなる一般的なテスト環境をシミュレートする、以下の 2 つのインスタンスをプロビジョニングする方法を紹介します。
- DB2 データ・サーバーを実行する Linux オペレーティング・システム
- DB2 クライアントがインストールされていて、Zend Server (あらかじめパッケージ化された、Web アプリケーション用の GUI ベースの PHP ディストリビューション) を実行する Linux オペレーティング・システム
この記事で取り上げる例によって、2 台の物理マシンを購入して構成、インストールする代わりに、IBM Cloud を使用してトポロジーをセットアップすることで、いかに時間を節約できるかを明らかにします。
IBM Development and Test Cloud を利用すれば、他のクラウドを利用した開発およびテスト環境や、物理的な開発およびテスト環境を利用した場合に比べ、より短時間かつバグの少ない状態でより大きな市場に、アプリケーションを確実にリリースできるようになります。
このシステムの中核にあるのは、IBM ソフトウェアを組み込んであらかじめ構成されたエンタープライズ Linux イメージまたはエンタープライズ Windows イメージのカタログです。これらのイメージから作成したインスタンスには、永続ディスクをマウントして IP アドレスを割り当てることができます。すると、SSH 公開鍵認証を使用してアクセスできるようになります。
さらに、カスタマイズしたインスタンスのスナップショットをプライベート・イメージ・カタログに保存することもできます。これにより、一度行った構成の再利用、再テスト、再現が可能になります。
すべてのリソースは、簡単にプロビジョニングして、PHP アプリケーションのニーズに合ったトポロジーに組み込むことができます。
IBM Development and Test Cloud は、企業のプログラマーやフリーランス・プログラマー、さらには学生、ライター、システム管理者、アーキテクトに至るまで、あらゆる類の PHP 開発者が抱えるさまざまな問題に対処することができます。
以下に、このクラウドが PHP アプリケーションの品質目標の達成に役立つ具体的なシナリオをいくつか紹介します。
- デプロイメント環境の検証
- IBM Cloud
は、開発の各ステップをプロセスの初期段階でドキュメント化できるようにします。さらに、最終的な本番ホスト環境が使用可能になる前に、テスト構成をセットアップしてリリース・サイクルの早い段階でユーザー・アクセプタンス・テストを実施するためにも使用することができます
(ユーザー・アクセプタンス・テスト (UAT: User Acceptance Test) は、相互に合意された要件をシステムが満たすことを確認するプロセスです)。本番クラウドでは、プロビジョニングしなければならない対象がはっきりとわかるため、エラーが発生するリスクや不適切な構成となるリスクが小さくなります。例えば、PHP のバージョン間、またはパッケージ化されたディストリビューション間でアプリケーションのパフォーマンスの優劣を評価しなければならない場合や、ステージングから本番までの公開プロセスや 2 つの MySQL データベース・サーバー間で複製した構成を検証しなければならない場合には、IBM Cloud が役立ちます。
- 新技術導入の迅速化と実験の促進
- IBM Cloud は、個々の開発者が新しいプラットフォームを導入して比較対照する際にも役立ちます。IBM Cloud
を使用すれば、開発者は安定した構成に影響を与えることなく、主要なコードとは別のところで概念を具体化することができます。例えば、ある PHP フレームワークから、新しい
Lithium プロジェクトなどの別の PHP フレームワークに移行する場合を評価しているとしたら、MongoDB を使用した PHP 5.3 の仮想インスタンスをクラウド上に別途作成するほうが、既存の物理的な開発サーバーに同じ構成をセットアップするよりも簡単で、混乱の少ない方法となります。
- パフォーマンス問題の解決と問題の事前回避
- パフォーマンスの問題を抱えている場合、システムを調整して解決理論を迅速にテストしたいとしても、開発またはステージング領域に大きな変更を加えたくはないはずです。そのような場合には、代わりに
IBM Cloud を使用してテストを実行することができます。IBM Cloud
では、インストール・ステップを記録してバックアウト計画を検証することができます。物理システムではなく、クラウド・インスフラストラクチャーを使用すれば、例えば複数の考えられる構成を評価およびテストすることも可能です。さらに、プライベート・イメージのカタログを保存することで、簡単に再テストしたり、問題を特定の構成に切り分けたりすることもできます。
- オープンソース・プロジェクトの改善
- オープンソースの PHP
フレームワークを保守しているとしたら、できるだけ多くのプラットフォームで機能する安定した製品を提供することが目標となるはずです。特定の構成について、ユーザーからバグ・レポートを受け取った場合、IBM
Cloud を使用すれば、バグの原因を突き止めるために、そのユーザーの環境を簡単に再現することができます。例えば、ユーザーが SUSE Linux Enterprise Server のあるバージョンでの問題をレポートしたとします。けれども、開発者が使用できるのは Ubuntu または Fedora だけです。そのような場合には、バグ・レポートを検証するために、開発者のフレームワークを実行する SLES のインスタンスを迅速にプロビジョニングすることができます。その上、このようなテストを実行するたびにエンタープライズ Linux 構成イメージをプライベート・カタログに保持すれば、サポートされるプラットフォームのリストを拡張することもできます。
- スキルの構築と知識の拡大
- IBM Cloud 環境を使用することで、テクニカル・ドキュメントのライター、学生、インストラクター、著者、あるいは業界アナリストにもメリットがもたらされます。それは、新しいソフトウェアをドキュメント化したり、限られた期間だけ必要なソフトウェアを試したりすることができるためです。例えば、プロジェクトの最終段階に取り組んでいる場合や厳しい期限が設定されている場合に、システムを購入したり、一からシステム全体をセットアップしたりするなどの長期にわたる関与を避けたいとします。そのような場合には、IBM Cloud がうってつけです。
IBM Development and Test Cloud がさまざまな PHP ユーザーに幅広い価値をもたらすことがわかったところで、早速 IBM Cloud で PHP 開発およびテスト環境を構成する作業に取り掛かります。
データ・サーバーとしては、カタログから Red Hat Enterprise Linux サーバーを選択します。このサーバーにはすでに DB2 がインストールされています。Web サーバー・インスタンスについては、後で PHP をインストールするときに作成してデータ・サーバーに接続します。したがって、このインスタンスをプロビジョニングしさえすれば、特別な構成は必要ありません。
- Development and Test アプリケーションにログインして、「Control panel (コントロール・パネル)」タブを選択し、「Add
instance (インスタンスの追加)」をクリックします。
図 1: 「Control panel (コントロール・パネル)」の「Add instance (インスタンスの追加)」ボタン
- カタログから「DB2 Enterprise Developer Edition 9.7.1 64bit」を選択します。
図 2: DB2 イメージの選択
- インスタンスに名前を付け、必要に応じて公開/秘密鍵を生成します。私はこのインスタンスの名前として「dW DB2 data server」と入力し、すでに作成してある「dW」公開鍵を選択しました。このインスタンスにアクセスするときには、ユーザー名とパスワードではなく、ご使用のワークステーションでの該当する秘密鍵を使用してください。
図 3: DB2 イメージの構成
- DB2 に必要な 3 つの新規ユーザー・アカウントのパスワードを設定します。
図 4: DB2 パスワードの構成
- インスタンスの構成内容を確認します。
図 5: インスタンスの構成内容の確認
- ご使用条件を読んだ上で、「Next (次へ)」をクリックします。
図 6: ご使用条件を読む
- インスタンス・リクエストが送信されたことを確認します。
図 7: インスタンス・リクエストの送信成功
データ・サーバーとして使用するインスタンスを有効にするために必要な作業はこれだけです。インスタンスがプロビジョニングされて起動されるまでの状況は、コントロール・パネルをモニターすることで確認することができます。システムがブートされると、DB2 は実行中の状態になっています。
Linux Web アプリケーション・サーバーをプロビジョニングする
前のセクションで使用した同じイメージから、もう 1 つのインスタンスを作成して Zend Server Community Edition をインストールします。PHP ドライバーに必要な DB2 クライアントが確実にインストールされて使用可能な状態になるようにするには、これが最も簡単な方法です。
- Development and Test アプリケーションにログインして、「Control panel (コントロール・パネル)」タブを選択し、「Add instance (インスタンスの追加)」をクリックします。
- カタログから、同じく「DB2 Enterprise Developer Edition 9.7.1 64bit」イメージを選択します。
- 前と同じく、インスタンスに名前を付け、必要に応じて公開/秘密鍵を生成します。このインスタンスには「dW Zend Web server」という名前を設定し、「dW」公開鍵を選択しました。
- DB2 のパスワードを設定します。
- 構成内容を確認します。
- 使用許諾条件を読みます。
- 「Next (次へ)」をクリックして、確認メッセージが表示されるまで待ちます。
以上の手順を完了すれば、後はコントロール・パネルでインスタンス・リクエストの状況をモニターすることができます。DB2 クライアントがインストールされて、インスタンスの起動後には実行中の状態になっています。
Web アプリケーション・サーバー・インスタンスをプロビジョニングした後は、このインスタンスにログインして Zend Server Community Edition をインストールします。
以下に説明する手順では、読者が SSH と X フォワーディングに Windows を使用していることを前提とします。別のプラットフォームを使用している場合には、そのプラットフォームで SSH および X フォワーディングに相当するツールをインストールする必要があります。
- 上記のセクションでそれぞれのインスタンスを作成したときに、ユーザー名とパスワードを使わずにサーバーに接続するために、公開鍵と秘密鍵のペアを生成するというオプションがありました。ワークステーションにダウンロードした秘密鍵は、PuTTY
のキー・ジェネレーター (PuTTYgen) を使用して、OpenSSH フォーマットから PuTTY の秘密鍵のフォーマットに変換する必要があります。PuTTYgen
を起動して、「File (ファイル)」 > 「Load private key (秘密鍵のロード)」の順に選択してください。
図 8: 秘密鍵の変換
- 鍵が OpenSSH フォーマットであるという通知が表示されたら、「OK」をクリックします。
図 9: OpenSSH 秘密鍵のロード完了
- 「Save private key
(秘密鍵の保存)」をクリックし、変換後のファイルの新しい保存先を指定します。変換された鍵をパスフレーズなしで保存することの確認のために、「Yes
(はい)」をクリックします。
図 10: 変換後の鍵の保存
- XMing をインストールして構成します。XMing は自動的に起動されるはずですが、起動されない場合は Xming のショートカットをクリックしてください。
- SSH を使用してインスタンスにログインするように PuTTY
を構成します。インスタンスのプロビジョニング後にコントロール・パネルに示されたホスト名を追加します。「Save
(保存)」をクリックし、続いて「Load (ロード)」をクリックします。
図 11: PuTTY の構成
- 「Connection (接続)」カテゴリーの「Data (データ)」画面で、「Auto-login username (自動ログイン・ユーザー名)」フィールドに「idcuser」というユーザーを設定します。
図 12: ユーザー名の設定
- 「SSH」カテゴリーの「Auth (認証)」画面で秘密鍵をインポートするために、前のステップで変換した秘密鍵ファイルを参照します。
図 13: 変換後の鍵のインポート
- 最後に、Windows デスクトップで Linux サーバーから X Windows を表示できるように X
フォワーディングをセットアップします。「SSH」カテゴリーの「X11」画面で、「Enable X11 forwarding (X11
フォワーディングを有効にする)」ボックスを選択し、「X display location (X ディスプレイの場所)」フィールドに「
localhost:0」と入力します。
図 14: X フォワーディングの構成g
- 「Session (セッション)」カテゴリーに戻り、「Save (保存)」、「Open (開く)」の順にクリックします。PuTTY セキュリティー・アラートに対しては、このサーバーに接続するのはこれが初めてなので、「Yes (はい)」をクリックしてインスタンス・ホストの鍵を受け入れます。
- X フォワーディングを許可するために、ファイアウォールを無効にします。その後、以下の xclock を使った単純なテストで X Windows をテストします。
リスト 1: ファイアウォールのシャットダウンおよび xclock の実行$ sudo /etc/init.d/iptables stop $ xclock
図 15: iptables を無効にした X フォワーディングのテスト
構成済みの PHP ディストリビューションをインストールする
- アプリケーションにログインして GUI システムをセットアップした後は、Zend Server Community Edition
(Zend Server CE (PHP 5.3) 5.0.3 (64 ビット) (TAR.GZ) 55.95 MB) をダウンロードします。Zend Server
についての詳細は、Zend 製品ページを参照してください。
リスト 2: Zend Server のダウンロードとインストール$ mkdir src $ cd src $ wget http://www.zend.com/download/353?start=true $ tar - xvzf ZendServer-CE-php-5.3.3-5.0.3-linux-glibc23-x86_64.tar.gz $ cd ZendServer- 5.0.3_Tarball_B3-php5.3.3-linux-glibc23-x86_64/ $ sudo su - # cd /home/idcuser/src/ZendServer-5.0.3_Tarball_B3-php5.3.3-linux-glibc23-x86_64/ # ./install.sh
システムがインストールを完了するまで待ってください。数分すると、以下の画面が表示されます。
図 16: Zend Server のインストール
- 「
exit」と入力してルート・シェルからエスケープして idcuser セッションを再開した後、Web ブラウザー (Firefox) を立ち上げます。root としてウィンドウを起動することはできません。PuTTY では、idcuser に対してしか X フォワードを構成しなかったためです。
リスト 3: idcuser として Firefox を起動する# exit $ firefox https://localhost:10082/ZendServer
Zend Server は HTTPS で自己署名証明書を使って実行されているため、ページの表示を促すときの例外を追加する必要があります。Firefox が起動されると、最初のページとして「End User License Agreement (エンドユーザー向け使用許諾契約)」が表示されます。このページを読んだ上で「Next (次へ)」をクリックします。
図 17: Zend Server のエンドユーザー向け使用許諾契約
- 2 番目のページで、コンソール・パスワードを設定し、そのパスワードを再入力して「Next (次へ)」をクリックします。
- 3 番目のページでは、Zend Server Community Edition メーリング・リストに参加するかどうかを選べます。参加する場合には、自分の E メール・アドレスを入力してから「Finish (完了)」をクリックします。
- Zend Server のダッシュボードが表示されます。最もよく使用される拡張機能はすでに組み込まれていて、何もしなくても有効に設定されます。DB2 ドライバー拡張機能も用意されていますが、これについては有効になるように設定する必要があります。
- 「Server Setup (サーバー・セットアップ)」タブを選択し、このタブの下の「Extensions
(拡張機能)」リンクを選択します。「ibm_db2」までスクロールダウンし、「Turn On (有効化)」をクリックします。
図 18: ibm_db2 拡張機能
- 新規 PuTTY セッションで、DB2 環境を Apache Web サーバーのソースにしてデフォルト・ポートを 80 に変更した後、すべての Zend Server デーモンを再起動します。
- Apache 構成ファイルを変更して、「
Listen 10088」という行を「Listen 80」に変更します。
リスト 4: ポートを変更するための httpd.conf の編集$ sudo su - # vi /usr/local/zend/apache2/conf/httpd.conf
- Apache が起動されるたびに DB2 環境を Apache のソースに設定します。これは、Apache のパスを設定して、PHP ドライバーの DB2
を見つけられるようにするためです。以下のコマンドによってファイルを開いたら、先頭行の後の任意の場所に「
/home/db2inst1/sqllib/db2profile」という行を追加します。
リスト 5: DB2 環境をソースにするための apachectl の編集# vi /usr/local/zend/apache2/bin/apachectl
- コマンドラインに以下のコマンドを入力して、すべての Zend Server プロセスを再起動します。GUI で「Restart PHP (PHP の再起動)」をクリックするだけでは十分ではありません。
リスト 6: Zend Server プロセスの再起動# /usr/local/zend/bin/zendctl.sh restart
- Apache 構成ファイルを変更して、「
- 既存の Firefox ウィンドウで新しいタブを開いて、「
http://localhost/」と入力します。「Zend Server Test Page (Zend Server テスト・ページ)」と示された画面が表示されます。
図 19: Zend Server テスト・ページ
- 最後に単純な PHP スクリプトを作成して、これまでの手順で適切に DB2 接続が構成されたことをテストします。ここでは、/var/www/html ディレクトリーに以下の PHP スクリプトを作成します。このスクリプトは、接続を検証するためにデータ・サーバーに接続するだけのスクリプトです。
リスト 7: DB2 環境をソースにするための apachectl の編集# vi /usr/local/zend/apache2/htdocs/db2info.php
リスト 8. DB2 に接続するための PHP スクリプト<?php $username = 'db2inst1'; $password = 'passw0rd'; $database = 'sample'; $hostname = 'vhost0323.developer.ihost.com'; $port = '50001'; $conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;" . "HOSTNAME=$hostname;PORT=$port;PROTOCOL=TCPIP" . "UID=$username;PWD=$password"; $conn_resource = db2_connect($conn_string, '', ''); if ($conn_resource) { echo 'Connection to database succeeded.'; db2_close($conn_resource); } else { echo 'Connection to database failed.<br />'; echo 'SQLSTATE: ' . db2_conn_error() . '<br />'; echo 'Message: ' . db2_conn_errormsg(). '<br />'; } ?>
- 上記のファイルを保存した後、ブラウザーで http://localhost/db2info.php をロードすると、以下の画面が表示されるはずです。
図 20: PHP から DB2 への接続の成功
おめでとうございます。これで、PHP と DB2 が駆動する Web アプリケーションをサポートする 2 つの仮想サーバーを構成することができました。このシステムを作成するために踏んだ手順は、今後、別の仮想サーバーをインスタンスする場合でも同様です。
この記事では、以下の内容を学びました。
- クラウド・コンピューティングと IBM Development and Test Cloud が PHP 開発者にもたらす魅力的な可能性
- IBM Cloud で一般的な PHP 開発およびテスト環境を素早くプロビジョニングする方法
クラウド上で PHP 構成が有効になると、記事で説明した以下のあらゆるシナリオに対処できるようになります。
- デプロイメント環境の検証
- 新技術導入の迅速化と実験の促進
- パフォーマンス問題の解決と問題の事前回避
- オープンソース・プロジェクトの改善
- スキルの構築と知識の拡大
以下の参考文献を調べて、クラウドでの PHP 開発について詳しく学んだ後は、早速 IBM Smart Business Development and Test on the IBM Cloud を使い始めてください。
学ぶために
- IBM Redbooks で公開されている「Developing PHP Applications
for IBM Data Servers」を読んでください。
- 「Moving
a PHP application to DB2 from MySQL」: クラウドによって、IBM ソフトウェアへのマイグレーションが迅速化します。この 4 回連載の記事で、PHP アプリケーションを DB2 に移行する理由と方法を学んでください。
- IBM Redbooks で公開されている「Read Up and Running with
DB2 on Linux」を読んでください。
- php.net は、PHP 開発者の主要な情報源です。
- 「Recommended
PHP reading list」に目を通してください。
- developerWorks ですべての PHP
関連記事を調べてください。
- developerWorks
のクラウド開発者向けリソースで、クラウド開発プロジェクトを作成しているアプリケーションおよびサービス開発者たちの知識と経験を調べて共有してください。
- developerWorks の SOA and web services および
Industries で、この記事の話題に関連する developerWorks リソースをさらに見つけてください。
- 次のステップ: IBM
Smart Business Development and Test on the IBM Cloud にアクセスする方法を調べてください。
- developerWorks の XML エリアで、DTD、スキーマ、XSLT を含め、XML のスキルを伸ばすために必要な資料を入手してください。
製品や技術を入手するために
- IBM Smart Business Development
and Test on the IBM Cloud で使用できる製品イメージを調べてください。
- この記事で SSH
を介して公開鍵認証によってインスタンスにアクセスするために使用した PuTTY および PuTTYgen をダウンロードしてください。
- この記事で X フォワーディングをサポートするために使用した
Xming X Server for Windows をダウンロードしてください。
- PHP 5.3 に対応した最先端のフレームワークをダウンロードして試してみてください。
- この記事の例を実行するための Zend Server Community
Edition をダウンロードしてください。
- ご自分に最適な方法で IBM
製品を評価してください。評価の方法としては、製品の試用版をダウンロードすることも、オンラインで製品を試してみることも、クラウド環境で製品を使用することもできます。また、SOA Sandbox では、数時間でサービス指向アーキテクチャーの実装方法を効率的に学ぶことができます。
議論するために
- developerWorks
のクラウド・コンピューティング・グループの一員になってください。
- developerWorks
でクラウドに関する優れたブログのすべてを読んでください。
- 専門家のネットワークであるとともに、互いにつながりを持ち、共有、協力するためのコミュニティー・ツールが集められている
developerWorks コミュニティーに加わってください。
Daniel Krook は、ニューヨーク広域圏を拠点としている IBM/Open Group Master Certified IT Specialist です。Web アプリケーション開発に 10 年以上の経験を持つ彼は、現在 Java EE、DB2、REST、およびモバイル技術を用いた IBM のクラウド・インフラストラクチャーを構築しています。PHP、Java EE、BlackBerry、DB2、および Solaris の認証資格を持ち、IBM developerWorks では PHP 関連の記事の著者として活躍しています。共著書に IBM Redbook の「Developing PHP Applications for IBM Data Servers」があります。