IBM Bluemix は開発者向けのコンテストなども行われていますが、オープンな Cloud Foundry をベースとした PaaS 環境です。そのため、コミュニティなどから Cloud Foundry 向けに提供されている実行環境を流用して環境構築することも可能ですし、それも Bluemix の魅力の1つです。

その一例として、コンテンツ管理システムとして有名な WordPress サーバー環境を Bluemix 上に構築するまでの一連の手順を紹介します。

一部、このエントリの内容と重複していますが、ご了承ください:
BlueMix 上で PHP アプリを動かす



まず IBM Bluemix にログインして、ダッシュボードが表示されている状態にします。そして "Create Application" と書かれたボタンをクリックして、WordPress を導入することになるアプリケーションサーバーを1つ追加(作成)します:
2014062701


アプリケーションサーバーの種類を選択します。最終的には Buildpack から PHP アプリケーションサーバーを選択することになるので、ここではどれを選択しても構いません。図では Liberty for Java を選択しています:
2014062702


"CREATE APP" ボタンをクリックします:
2014062703


アプリケーションサーバーの名称と、ホスト名(の mybluemix.net の前の部分)を指定して "CREATE" ボタンをクリックします。この例では名称は "wordpress"、ホスト名は "wordpress.mybluemix.net" に指定しています。名称は "wordpress" のままでも構いませんが、ホスト名には同じものが使えません。実際に入力する場合はこれとは異なるホスト名を入力してください:
2014062704


しばらく待つとアプリケーションサーバーが作成され、"wordpress" サーバーがダッシュボードに追加されているはずです:
2014062705


次に WordPress のデータベースとなる MySQL サーバーを追加します。再びダッシュボード画面から今度は "Add a Services" ボタン(先ほどの "Add Applicatoin" よりも下にあるはずです)をクリックします:
2014062706


IBM Bluemix 環境内に用意されているサービスの一覧が表示されます。今回は WordPress 用の MySQL データベースサーバーを追加するのが目的なので、少し下の "Data Management" セクションの中にある "mysql" と書かれたアイコンをクリックします:
2014062707


先程と同様の確認画面が表示されるので、"CREATE AND ADD TO APP" ボタンをクリックします:
2014062708


次の画面では、この MySQL サーバーをどのアプリケーションサーバーと紐付けるのか(或いは紐付けなしで起動するのか)を入力する箇所があります。ここでは先程作成した "wordpress" サーバーを選択します。そして "CREATE" ボタンをクリックして MySQL サーバーを作成します:
2014062709


紐付けを行った "wordpress" アプリケーションサーバーを再起動します、という旨のメッセージが表示されたら "OK" をクリックして再起動します。再起動処理は一瞬で終わります:
2014062710


この状態で再びダッシュボード画面を確認すると、作成した MySQL サーバーがサービスとして追加されていることが確認できるはずです:
2014062711


次に、この MySQL サーバーにアクセスするための情報を確認します。ダッシュボード画面の上の方に戻り、アプリケーションサーバー("wordpress")のアイコン部分をクリックします:
2014062712


この "wordpress" サーバーのシステム概要が表示されます。この時点で "wordpress" アプリケーションサーバーと、MySQL サーバーが関連付けられていることが確認できます。 MySQL への接続情報を取得するには、この画面の左ペインから "Runtime" と書かれた箇所をクリックします:
2014062713


この画面の下の方の "Environment Variables" と書かれた所に、環境の変数の情報が表示されている箇所があります:
2014062714


その中にこのような感じで、MySQL サーバーへのアクセス情報が書かれています。この中の赤字部分の内容をメモしておきましょう:
{
   "mysql-5.5": [
      {
         "name": "mysql-qs",
         "label": "mysql-5.5",
         "plan": "100",
         "credentials": {
            "name": "(databasename)",
            "hostname": "192.155.XXX.XXX",
            "host": "192.155.XXX.XXX",
            "port": 3307,
            "user": "(username)",
            "username": "(username)",
            "password": "(password)",
            "uri": "mysql://(username):(password)@192.155.XXX.XXX:3307/(databasename)"
         }
      }
   ]
}

ちなみに "name" の値がデータベース名、"hostname" は MySQL サーバーのホスト名(IPアドレス)、"port" は接続ポート番号ですが、常に 3307 のようです。そして "username" と "password" がユーザー名とパスワードになります。


ここからしばらくは Bluemix 上ではなく、自分のローカル環境での作業になります。まずローカル環境で cf ツールが使える状態にしておきます。cf ツールの導入方法についてはこちらを参照ください。cf ツールが使えるようになっている前提で以下を続けます。ちなみに以下は Linux 環境に cf ツールを導入している前提での説明になりますが、Windows 環境でもほぼ同じだと思っています(未確認です)。

まずはアプリケーションサーバーのドキュメントルートに相当する空のディレクトリを1つ作成しておきます。今後、このディレクトリの中にドキュメントルートの内容となるモジュールを追加していくことになります:
# cd /tmp
# mkdir wp
# cd wp


今回は PHP アプリケーションである WordPress を導入することになりますが、この PHP アプリを Bluemix で動かす場合、ローカル環境ではアプリケーションサーバーのドキュメントルート以下の状態を作っておく必要があります。今回であれば、ドキュメントルート以下に WordPress を導入することになるので、WordPress のモジュールを用意して展開しておくことになります。

というわけで、まずは最新版の WordPress を入手します。WordPress のホームページから最新版のバージョンを確認して、モジュールをダウンロードします(2014/06/27 時点での最新の日本語版は 3.9.1 でした):
# wget http://ja.wordpress.org/wordpress-3.9.1-ja.zip

ダウンロードしたモジュールを展開します。展開後、インストールモジュールは不要なので削除するか、このディレクトリ以下に含まれないディレクトリに移動します(含まれていると一緒にデプロイされてしまいます):
# unzip wordpress-3.9.1-ja.zip
# rm wordpress-3.9.1-ja.zip

なお、今回は /tmp/wp をドキュメントルートとします。WordPress は /tmp/wp/wordpress 内に展開されているので、実際に WordPress にアクセスするには http://wordpress.mybluemix.net/wordpress という URL でアクセスすることになります。もし http://wordpress.mybluemix.net/ という URL でアクセスできるようにしたいのであれば、/tmp/wp/wordpress をドキュメントルートとみなすことになります。この点、ご注意ください。


展開された WordPress モジュールの設定ファイルを Bluemix 環境用に編集します。まずは wordpress/wp-config-sample.php ファイルを wordpress/wp-config.php にリネームします(これが設定ファイルになります):
# mv wordpress/wp-config-sample.php wordpress/wp-config.php

次にこの wordpress/wp-config.php を編集して、Bluemix 上の MySQL サーバーにアクセスできるようにします。具体的には以下の赤字の箇所を上記でメモした自分の環境に合わせて編集してください:
# vi wordpress/wp-config.php
: define('DB_NAME', '(databasename)' ); データベース名 define('DB_USER', '(username)' ); DBユーザー名 define('DB_PASSWORD', '(password)' ); DBパスワード define('DB_HOST', '192.155.XXX.XXX:3307' ); ホスト名:ポート番号
define('FS_METHOD', 'direct' ); プラグインのアップデート用にこの行を追加 :

これらに加えて最初から加えておきたいプラグインやテーマなどがあれば初めから入れておきます。今回は特に用意しません。

最後にメディアアップロード用とアップグレードのフォルダを作成して、プラグインやテーマ用フォルダと合わせて書き込みパーミッションを与えておきます:
# mkdir wordpress/wp-content/uploads
# mkdir wordpress/wp-content/upgrade # chmod 777 wordpress/wp-content/uploads
# chmod 777 wordpress/wp-content/upgrade
# chmod -R 777 wordpress/wp-content/plugins
# chmod -R 777 wordpress/wp-content/themes 

これでローカルホスト側の準備も整いました。改めてドキュメントルート用に作成したフォルダへ移動して、cf ツールで API にログインし、ディレクトリごと Bluemix の wordpress サーバーへ push します。またその際にコミュニティから提供されている PHP アプリケーションサーバーの buildpack を指定することで wordpress サーバーを PHP アプリケーションサーバーとしてデプロイします。デプロイに少し時間がかかりますが、全て完了することを確認します:
# cd /tmp/wp
# cf login -a https://api.ng.bluemix.net -u (IBM ID) -p (パスワード) # cf push -b https://github.com/dmikusa-pivotal/cf-php-build-pack.git wordpress :
:
:
1 of 1 instances running

App started

Showing health and status for app wordpress in org (IBM ID) / space dev as (IBM ID) ...
OK

requested state: started
instances: 1/1
usage: 512M x 1 instances
urls: wordpress.mybluemix.net

state since cpu memory disk
#0 running 2014-06-27 11:42:09 PM 0.0% 68.2M of 512M 55.1M of 1G 
 

これで wordpress.mybluemix.net サーバーに PHP アプリケーションサーバー環境と WordPress を展開したドキュメントルート以下がデプロイされました。ウェブブラウザで http:///wordpress.mybluemix.net/wordpress/ にアクセスしてみると、導入した WordPress の初期セットアップ画面が表示されるはずです:
2014062715


初期セットアップができてしまえば、WordPress として使うことができます:
2014062716


これで IBM Bluemix 上で WordPress の動くサーバー環境を作ることができました。WordPress のような、どちらかというと IaaS 向けのオープンなツールを使うことができる、という意味でも Bluemix(Cloud Foundry) という PaaS のポテンシャルの高さを感じますね。