IBM Bluemix 上に WordPress 環境を構築する方法の 2015/06/28 版を紹介します。

具体的な内容紹介の前に少し補足を。実は同様の内容を過去2回ほど紹介したことがありました:
IBM Bluemix 上で WordPress 環境を構築する(2014/06/28)
IBM Bluemix で無料の WordPress 環境を構築する(2015/02/21)

前者は自分で必要なサービスを選んで組み合わせていく、という今回の内容に近い方法です。ただ残念ながら IBM Bluemix の環境が変わり、この時に紹介した方法では現在は正しく構築できないことが分かっています。そんなこともあって今回、新しい方法を紹介しようと思いました。

後者の方法は IBM Bluemix のボイラープレートと呼ばれるテンプレート機能を使う方法で、こちらは現在でも使えます。ただこの方法で提供される MySQL データベースは ClearDB の無料プランで、その容量は 5MB しかありません。本格的に使うにはさすがに不十分だと思っています。

という背景もあって、
 ・2015/06/28 現在でも有効に使えて、
 ・そこそこな容量の MySQL データベースを持つ
WordPress 環境を Bluemix 上に構築する方法を紹介します。おおまかな流れとしては上記前者の方法に近いのですが、ちょっとした追加設定を行うことになります。


まず、最初は普通に Bluemix 上に PHP サーバーと MySQL データベースサーバーを用意してバインドします。最初は PHP サーバーを作ります。ダッシュボードから「アプリの作成」:
2015062801


アプリサーバーの種類として「PHP」を選択:
2015062802


アプリサーバーの名前(ホスト名の一部になる名前)を指定して「完了」:
2015062803


これで PHP サーバーは完成です。続いて MySQL サーバーを追加してバインドします。「サービスまたは API の追加」を選択:
2015062804


「データ管理」カテゴリを選択します。ClearDB の MySQL を選択してもいいのですがデフォルトで与えられる容量が少ないので画面下部の「Bluemix Labs Catelog」をクリックしてオープンソース版の MySQL を探します:
2015062805


オープンソースデータベースの一覧が表示されるので、ここから「MySQL」を選択:
2015062806


プランの選択肢から好きなプランを選びます(画面では 500MB まで使えるプランを選択しています)。アプリに自分が先程作った PHP アプリの名称が表示されていることを確認して「作成」:
2015062807


これで Bluemix 上に PHP アプリサーバーと MySQL データベースサーバーが1つずつ作成されました。MySQL データベースに接続するための情報はメニューの「環境変数」を選択すると表示されます:
2015062808


おそらくこのような JSON テキストが表示されます。この情報は後で WordPress の設定内容として必要になるので保存しておくか、メモしておきます:

#オープンソース版 MySQL サービスを選択した場合、ポート番号がデフォルトの 3306 ではなく、3307 になる点に注意
{
   "mysql-5.5": [
      {
         "name": "mysql-n7",
         "label": "mysql-5.5",
         "plan": "300",
         "credentials": {
            "name": "(データベース名)",
            "hostname": "(MySQL サーバーのIPアドレス)",
            "host": "(MySQL サーバーのIPアドレス)",
            "port": 3307,
            "user": "(MySQL サーバーのユーザー名)",
            "username": "(MySQL サーバーのユーザー名)",
            "password": "(MySQL サーバーのパスワード)",
            "uri": "mysql://(MySQL サーバーのユーザー名):(MySQL サーバーのパスワード)@(MySQL サーバーのIPアドレス):3307/(データベース名)"
         }
      }
   ]
}

ではこの環境を使って WordPress 環境を構築します。

まずは cf ツールをインストールします。こちらのサイトから自分の環境にあった cf コマンドラインツールをダウンロードしてインストールしておきます:
cloudfoundry/cli


次に WordPress をダウンロードします。WordPress の(日本語)公式ページから最新版の WordPress モジュールの zip ファイルをダウンロードします(2015/06/28 時点では wordpress-4.2.2-ja.zip が最新でした。以下このファイルを使う前提で紹介します):
2015062801


ダウンロードしたファイルを展開して、ローカルディスク内の任意のフォルダ(例えば c:\tmp\wordpress)内に保存します:
2015062802


まずは WordPress に必要なフォルダを作成します。モジュールを展開したフォルダの wp-content フォルダに以下のサブフォルダを追加で作成します:
 - upgrade
 - uploads
2015062803


また、モジュール展開フォルダ内にある wp-config-sample.php ファイルを wp-config.php にリネームします:
2015062804


加えて、リネーム後の wp-config.php ファイルをテキストエディタで開き、先程メモした接続情報を使って以下の様な内容に書き換えます(最終行の FS_METHOD の行は丸々追加):
  :
  :
// ** MySQL 設定 - この情報はホスティング先から入手してください。 ** //
/** WordPress のためのデータベース名 */
define('DB_NAME', '(MySQL サーバーのデータベース名)');

/** MySQL データベースのユーザー名 */
define('DB_USER', '(MySQL サーバーのユーザー名)');

/** MySQL データベースのパスワード */
define('DB_PASSWORD', '(MySQL サーバーのパスワード)');

/** MySQL のホスト名 */
define('DB_HOST', '(MySQL サーバーのIPアドレス):3307');


/** データベースのテーブルを作成する際のデータベースの文字セット */
define('DB_CHARSET', 'utf8');

/** データベースの照合順序 (ほとんどの場合変更する必要はありません) */
define('DB_COLLATE', '');

define('FS_METHOD','direct');
  :
  :

実は今まではこれだけの設定で WordPress が使えたのですが、現在はこれだけだと使えなくなっています。理由は PHP ランタイム側に変更が加わり、デフォルト状態では MySQL や mbstring モジュールが無効にされており、その結果 WordPress の環境条件が満たされずにエラーとなってしまうようです。

このエラーを回避するため、ドキュメントルート直下に .bp-config というフォルダを作り、その下に options.json というテキストファイル(つまり .bp-config/options.json)を以下の内容で作成します。このファイルを作っておくと、PHP ランタイムに MySQL や mbstring のモジュールが組み込まれ、利用可能になり、上述のエラーを回避することができるようになります:
{
      "PHP_EXTENSIONS": [ "bz2", "zlib", "curl", "mcrypt", "mbstring", "mysql", "pdo", "pdo_mysql" ]
 }
2015062805


(2015/06/30 追記)
これだけだと足りませんでした。この後の cf push コマンドを成功させるには更に1ファイルがドキュメントルート直下に必要でした。

ドキュメントルート直下に composer.json というファイルを用意し、その中身を {} だけで作成します:
{}
(2015/06/30 追記終わり)


ではローカルマシンに作ったこの WordPress 環境を Bluemix 上の PHP サーバーにプッシュします。プッシュの作業には上述の作業でインストールした cf ツールを使います。コマンドラインやコンソールを起動後、以下のようなコマンドを指定します:
> cd (WordPress のフォルダ)

> cf login -a https://api.ng.bluemix.net/ -u (Bluemix のログインID)

※データセンターが英国を使っている場合は https://api.eu-gb.bluemix.net を指定する

(パスワード入力を求められるので指定) > cf push (Bluemix で作成時に指定したアプリ名)


プッシュが正しく終了すると WordPress モジュールが PHP サーバーのドキュメントルートに送られ、ウェブから WordPress が利用できるようになります:
2015062806



というわけで、PHP のビルドパック内の mbstring や MySQL モジュールを有効にすることで WordPress が使えるようにする、という例の紹介でした。