PaaSのBluemix上にWordPressを10分で構築する

# PaaSであるBluemix上にWordPressを構築する
ハッカソンやプロトタイプ作成でチョチョっとWordPressを構築したい時に参考にしていただけると幸いです。
MAMPなどを使って簡単に環境構築することができますがBluemixを使うと簡単に外部に公開できます。

# 課題
これから紹介する手順で環境構築を行うといくつか課題が残ります。
問題になる場合は以下に解決方法が載っているため必要な箇所を参照してください。
http://niccloud.niandc.ne.jp/?p=2330

以下課題の内容

```
## 名前解決に類する課題（Bluemixでは常にFDQNが必要になります）

サイト名が変わる場合にはDBの中にもFDQNが入っていますので修正が必要です（この辺りは普通にググると色々プラグイン等が出てきます）

## ストレージに類する課題（PaaSの性質上データの永続化は検討の必要があります）

WordPressでは、RDBとしてMySQLを利用します。
Bluemixでは、MySQLサービスとして「ClearDB」とCompose「MySQL」があります。
またローカルのディスクに保管される「メディア」や「テーマ」などの情報の管理が必要になります。
Runtime内に含まれる情報は、再デプロイ実行時には消えてしまうのでこの部分を外部に保存する必要があります。
今回は投稿時に利用するメディアに関しては「ObjectStorage」へ保管してくれるプラグインを利用しました。

## デプロイの課題 (デプロイを行った時点で、オンライン中の変更が消えてしまう、2にも関連する課題）

オンライン中の変更は2.同様の理由によりデプロイ「元」の方をどのようにするかを検討する必要があります。
今回はComposerを利用してデプロ時にプラグインを導入する（または「最新」する）事が出来るようにしています。
この辺りは実際の運用イメージとの兼合いで選択するのが良いでしょう。

http://niccloud.niandc.ne.jp/?p=2330 参照
```

# 構築手順
1.Bluemixのアカウントを取得する
2.Bluemix上に環境を構築する
3.WordPressをBluemixで動くように修正する
4.WordPressをデプロイする

## 1.Bluemixのアカウントを取得する
以下URLにアクセスして「まずは無料トライアルからスタート」からBluemixアカウントを作成する。
※すでにBluemixアカウントをお持ちの方もトライアル期間が過ぎている場合は新規にアカウントを作成することをおすすめします。
※たまに認証メールが24時間以内に届かない時があります。そんな時はカスタマーサポートにメールしてください。
https://www.ibm.com/cloud-computing/jp/ja/bluemix/

![スクリーンショット 2017-01-09 21.36.21.png](https://qiita-image-store.s3.amazonaws.com/0/92989/f12788dc-4d4a-0d8f-caaa-676b5b23cd22.png)

## 2.Bluemix上に環境を構築する
次にBluemix上にWordPressを展開する環境を構築します。

### 1. PHPのサービスを作成する
作成したアカウントを用いてBluemixにログインします。  
すると以下のような「ダッシュボード」が開きます。
※「ダッシュボード」が開かない場合は左上の三本線のマークをクリックし「ダッシュボード」をクリックしてください。

そして、赤枠の「カタログ」または「アプリの作成」をクリックします。
![スクリーンショット 2017-01-09 21.33.46.png](https://qiita-image-store.s3.amazonaws.com/0/92989/b7f375d5-afdd-7603-6e1f-bc2070ce1f62.png)

クリックすると「カタログ」が開きます。
左の一覧の中から「CloudFoundryアプリ」を選択し、CloudFoundryアプリの一覧の中からPHPを選択します。
![スクリーンショット 2017-01-09 21.47.41.png](https://qiita-image-store.s3.amazonaws.com/0/92989/06a17945-4f62-991f-86fd-338a34fe5412.png)

phpを選択するとサービス作成画面に遷移するので、必要事項を記入して「作成」をクリックしてください。
![スクリーンショット 2017-01-09 21.50.40.png](https://qiita-image-store.s3.amazonaws.com/0/92989/ffd93211-3234-0374-ca50-f5dcac037c77.png)

以下のような画面が表示されたらPHPの環境構築完了です。
※ちなみに2017/1/9のPHPのバージョンは5.5.34でした。
※調べ方はphpinfo()だけを書いたphpファイルをデプロイして表示させました。
![スクリーンショット 2017-01-09 21.52.53.png](https://qiita-image-store.s3.amazonaws.com/0/92989/217f5452-1515-cebe-c261-1b54c613977f.png)

### 2.MySQLを接続させる
続いてMySQLを接続します。
MySQLのサーバーはどこにあっても大丈夫ですが、今回はBluemix上から作成できる外部サービスのClearDBを使用します。

PHPのサービスを表示している画面の左側にあるリストから「接続」を選択します。
以下のような画面が表示されたら、「新規に接続」をクリックします。
![スクリーンショット 2017-01-09 21.58.24.png](https://qiita-image-store.s3.amazonaws.com/0/92989/7f3933d5-e299-540a-25f0-550ce5f07aee.png)

すると、また「カタログ」画面が表示されるため
検索に「MySQL」と入力します。
表示された一覧の中から「ClearDB MySQL Database」を選択します。
![スクリーンショット 2017-01-09 22.01.36.png](https://qiita-image-store.s3.amazonaws.com/0/92989/15f46332-37f7-cb14-e5ab-bbdd948e92fc.png)

選択すると以下のような画面が表示されるので
お好みでサービス名を変更したり、価格プランを選んでください。
最後に「作成」をタップします。
![スクリーンショット 2017-01-09 22.06.46.png](https://qiita-image-store.s3.amazonaws.com/0/92989/69fc2f12-9a79-7fb2-942f-d383bd8b8ebe.png)

再び「接続」画面に戻り、作成したClearDBが表示されていれば準備完了です。
![スクリーンショット 2017-01-09 21.58.24.png](https://qiita-image-store.s3.amazonaws.com/0/92989/7f3933d5-e299-540a-25f0-550ce5f07aee.png)

## 3.WordPressをBluemixで動くように修正する
環境構築が完了したら続いてWordPressの設定をしていきます。
以下のURLからWordPressをダウンロードして解凍してください。
※Bluemix上のPHP環境はデフォルトのままだとPHPの推奨と異なっていますが、動作します。
https://ja.wordpress.org/

解凍したらBluemix上の「接続」画面からClearDBの資格情報の表示をクリックして接続情報を確認します。
![スクリーンショット 2017-01-09 22.16.06.png](https://qiita-image-store.s3.amazonaws.com/0/92989/ce875316-a7f3-fd14-e31e-1217d7ffd271.png)

上記の情報をWordPressのwp-config.phpに記載していきます。
```php
define(‘DB_NAME’, ‘データベース名’);
define(‘DB_USER’, ‘ユーザー名’);
define(‘DB_PASSWORD’, ‘パスワード’);
define(‘DB_HOST’, ‘ホスト名 : ポート番号’);
```

続いてWordPressをBluemix上のPHPランタイムで正しく動かすための追加設定をします。
ドキュメントルートのディレクトリ下に.bp-configというフォルダを作り、.bp-configの下にoptions.jsonというファイルを追加します。
![スクリーンショット 2017-01-09 22.29.01.png](https://qiita-image-store.s3.amazonaws.com/0/92989/98a4d2ec-ac55-246e-d6e1-3b73a1fdfb95.png)

options.jsonにWordPressで使用する拡張モジュールを記載します。
```json
{
"PHP_EXTENSIONS": [ "bz2", "zlib", "curl", "mcrypt", "mbstring", "mysqli", "pdo", "pdo_mysql" ]
}
```

最後にPHPのバージョンの問題で、MySQLのライブラリが一部使用できないので、
wp-includes/wp-db.phpの「mysql_connect」を「mysqli_connect」に変換します。
※気になる方は最新のPHPが入ったビルドパックを使用して環境を構築してください。

## 4.WordPressをデプロイする
最後にWordPressをデプロイします。
PHPのサービス画面の左のリストから「開始」を選択して、表示された内容に沿って
作成したWordPressのフォルダの中身のソースをBluemix上にデプロイしてください。
![スクリーンショット 2017-01-09 22.36.20.png](https://qiita-image-store.s3.amazonaws.com/0/92989/a9fcf66d-d90d-720f-5c80-6b728e17bde1.png)

デプロイが完了するとサービスが再起動するので再起動後Bluemix上の「アプリの表示」ボタンをタップして
WordPressのインストール画面が表示されればWordPressの環境構築完了です。

## 注意
上記の方法でWordPressの環境を構築するとWordPressのインストール画面でMySQLのエラーが発生します。※調査中
一応エラーが発生しても正常にWordPressのインストールは行えMySQLのテーブルも作成されてました。
その後の動作も特におかしなところはないと思います。