Bluemix環境で動作するWordPressを構築しデプロイする (Deploy and configure WordPress in Bluemixの翻訳)

米国 [developerWorks](https://www.ibm.com/developerworks/) サイトの [developerWorks Recipes](https://developer.ibm.com/recipes/) に「[Deploy and configure WordPress in Bluemix](https://developer.ibm.com/recipes/tutorials/deploy-and-configure-wordpress-in-bluemix/)」という興味深い投稿があったので、試しつつざっと訳してみます。

## 最初に

基本は翻訳なので、基本的な著作権は元原稿の作者・所有者にあります。感謝はできれば元ページへお願いします。wuretaさんに感謝！

元原稿にないコンテンツ、つまり私が作成した全ての文章、画像、コード等は [Creative Commons Zero](https://creativecommons.org/publicdomain/zero/1.0/deed.ja) ライセンスです。元原稿由来の制限がない限り、自由に活用してください。内容は確認しつつ訳していますが、全て無保証です。勘違いや翻訳のミスはコメント欄で指摘をお願いします。

## 概要

対象読者: 誰でも (Any Skill Level)

この記事(レシピ)の目的は、Bluemix環境をWordpressのためにどのように構成したらよいかを説明することです。またどのように製品を導入し、その過程で生じる一般的な問題に対応していくか、についても言及します。

## 構成要素

* Bluemix account
* Wordpress 4.8.1

このレシピは IBM Bluemix のコンセプトに関する基礎知識と、PHP および Wordpress の基礎知識を前提としています。

## ステップ･バイ･ステップ

### 1. BluemixでPHPアプリケーションを作成する

まず [Bluemix](https://console.bluemix.net/) にログインし、[カタログ](https://console-regional.ng.bluemix.net/catalog/) を開いて「Cloud Foundry アプリ」にある 「PHP」ビルドパックを作成します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/c76f36c5-77cd-060e-7f1b-cf36f19e3ef8.png)

アプリ名を入力します。このレシピではアプリ名として「WordPressSampleJP」を使用しましょう。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/a4e38e26-0a26-e06c-c00a-394588e72aa4.png)

このアプリケーションは選択した開発用のスペース「dev」の下に作成されます。下にある「作成」ボタンをクリックしてこの手順を完了しましょう。

作成の後、「概要」セクションでアプリケーションのリソースを確認できます。ここでは割り当てられたインスタンスの数とメモリー量を確認できます。費用とパフォーマンスのバランスをとるため、モニタリングと処理能力の自動拡張サービスの利用を検討するのも良いでしょう。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/1a23d8c7-fbc1-47fe-684f-4f52319c8f43.png)

#### 【訳注】ホスト名について

最初は上記のように進めましたが、後になってホスト名が大文字になっていることが気になりました。ですので、以下のようなコマンドで小文字に修正しました。

> cf delete-route mybluemix.net --hostname WordPressSampleJP
> cf map-route WordPressSampleJP mybluemix.net --hostname wordpresssamplejp


### 2. BluemixでMySQL databaseを作成する

右上の「カタログ」をクリックします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/2ab3b11e-2bfb-e537-fbe4-0b01f2e4bad4.png)

メニューの「データ&amp;分析」をクリックした後、「Compose for MySQL」を探してクリックして、サービスのインスタンスを作成します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/de4735f1-acc3-e6b7-4da2-ca66b8fd0704.png)

同じスペース(このレシピではdev)が選択されていることを確認し、接続欄に今回のアプリ名である「WordPressSampleJP」を選択した後、右下の「作成」ボタンをクリックして入力を完了します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/33c9d0d6-822d-a78d-f073-c610670cc1cb.png)

「アプリの再ステージ」ダイアログが表示されますので、「再ステージ」をクリックして継続します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/fdc63f47-a174-d3d9-6d0b-bfd1407e26c0.png)

「接続」メニューが表示されますので、新しく作成したMySQLデータベースのサービスが、さきほどのPHPアプリケーションに接続されているのが確認できます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/8683bf34-1c1b-9ed2-f8d0-000d07ff6191.png)

MySQLサービスにある「資格情報の表示」ボタンをクリックし、サービスの構成情報と資格情報がJSON形式でダイアログに表示されることを確認してください。「uri」属性を探して、その値を今後の利用のためにコピーして保持しておくことをお勧めします。(もしくは右上のコピーアイコンでこの全てのテキストをコピーして保持しておくのも良いでしょう)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/95a27a71-4629-df94-ad06-091f1be49b26.png)

その保持した値は

> uri”: “mysql://admin:PASSWORD@bluemix-sandbox-dal-9-portal.8.dblayer.com:29205/compose

のような形式でしょう。このurlの値は以下のようなフィールドで構成されていますが、それらについては先のステップで説明します。

> mysql://[USER]:[PASSWORD]@[SERVER]/[DATABASE]

### 3. Orion IDEを用いた継続的デリバリーを利用する

この時点で、Bluemixコンポーネントの作成は完了し、WordPressアプリケーションをBluemix環境にアップロードすることが可能になりました。それには幾つかの方法がありますが、幾つか紹介すると

* 基本となるアプリケーションパッケージを入手し、それを Cloudfoundry か Bluemix の CLIツールで push する。
* GITリポジトリを用意し、自動化されたパイプラインを構成し、GITリポジトリにコンテンツを配置することで自動的にビルドとデプロイを実行する。
* 「継続的デリバリー」機能を有効化し、Online IDE (Orion) を使用してファイルを手動でデプロイする。このレシピではこの方法を用います。
 
最初のステップで作成したPHPアプリケーションに移動し、「概要」セクションにある「継続的デリバリー」エリアを見つけ、「有効化」ボタンをクリックします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/54ed4f4d-ae7c-4461-367a-1310b8b74e8d.png)

以下のような継続的デリバリー用ツールチェーンの標準テンプレートが表示されます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/5dc3caf4-54c7-c9c3-efa1-3be28d6ede98.png)


最初のフォームまでスクロールダウンし「Git Repos and Issue Tracking」オプションを探します。そしてリポジトリー・タイプを「新規作成」に変更し、「作成」ボタンをクリックします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/d3efffa2-338e-2d0a-18e8-0915d6619095.png)

以下のような表示になりますので、「Eclipse Orion Web IDE」ボックスをクリックします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/509ed2a5-d842-1c55-4b8d-916276e1b4a6.png)

こんな感じで自動的に設定が進み、

![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/03563bd7-c20d-f622-dd2c-e2dc288eb699.png)

以下のような最初のOrionパースペクティブが表示されます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/00fc6a30-468b-4f44-bf5d-9dfb232827e1.png)

### 4. WordPressファイルの準備と設定

上にあるメニューバーから「ファイル->インポート->HTTP」と選択します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/3c4e9534-62d9-96d7-5084-b9ae0006a6fa.png)

小さな入力エリアが表示されますので、「ファイルのURL」欄に以下のURLを入力し

> https://wordpress.org/latest.zip

「実行依頼」をクリックしてください。このとき「zipファイルをunzipします」欄のチェックは外さないでください。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/325cec26-893d-e8c1-5486-8ee622895311.png)

実行後、WordPressSampleJP 直下に「wordpress」フォルダが新しく追加されていることを確認してください。今後はこのコンテンツは /wordpress のパスで参照できます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/3cd8c439-b887-d663-7676-50ca3d70bf8c.png)

ルートにある WordPressSample アイテムの上で右クリックし「新規作成->フォルダ」と選択し、

![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/f3affaf0-7510-12ee-2b12-5280212636ec.png)

「.bp-config」という名前のフォルダを作成します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/5040e234-810b-115a-42d9-4b6180069b3e.png)

作成した .bp-config フォルダの上で右クリックし「新規作成->ファイル」で「options.json」という名前のファイルを作成します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/ca187986-c6c4-547f-f591-a7ed769295d9.png)

作成するとファイルの中身の編集モードになるので、以下のコンテンツ(JSON)を入力します。

```json
{
"PHP_EXTENSIONS": ["bz2", "zlib", "curl", "mcrypt", "mysql"]
}
```

最終的には以下のようになります。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/545c7849-af02-d953-dff5-739875ee97ce.png)

wordpressフォルダにある wp-config-sample.php ファイルを wp-config.php にリネームします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/9f038c4b-1ca8-fd80-2c7c-c58dc5bc6062.png)

そしてその wp-config.php ファイルに、前のステップで保持しておいた MySQL の構成情報を入力します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/48cb98a9-a2bf-9a43-4a68-6aa23246dde8.png)

こんな感じ。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/7f75bca6-838d-27e8-b92e-3a89caa4305f.png)

上にあるメニューバーにある三角形のデプロイアイコンをクリックして、アプリケーションをデプロイします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/328e31f4-5adb-ead2-7a73-524975d9dd08.png)

再デプロイのポップアップが表示された場合は「OK」をクリックして進めてください。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/d2961039-3b2d-becc-4da1-edb9b8ef4c2b.png)

#### 【訳注】メモリ不足でデプロイが失敗する場合

上記のデプロイの作業で、ブラウザ下部に以下のようなポップアップが表示されてデプロイに失敗する場合があります。訳者の環境ではダッシュボード上の残メモリに余裕があったのですが、いろいろなサービスを起動していて、これもメモリを消費している様子。なので残メモリは余裕をもって確保しておく必要がありそうです。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/977e12b9-8ab5-e1fa-63fa-d43f4a479f9a.png)

今回のWordPress利用に関してメモリ使用量を384Mにしていますが、これがBluemix上で利用できるメモリ上限を超えている場合にエラーが発生しているとおもわれます。実際の稼働状況をみると110M~140Mくらいなので、256Mでも稼働できそうです。

また一時的な問題があったらしく、デプロイ作業が失敗することがありました。その場合は少し時間をおいて実施すると良いようです。

### 5. WordPressのインストール

以下のURLにアクセスし、WordPressのインストールを完了しましょう。

> http://wordpresssamplejp.mybluemix.net/wordpress/wp-admin/install.php

以下はこのレシピのインストールの様子です。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/685c6472-2e20-67a0-6c4a-9337122a462b.png)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/a48bd382-86dc-246a-3458-9a65290d4759.png)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/c476cd9b-a086-cc7a-fbf7-516fc4341343.png)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/0526b632-bbaf-ba79-425f-9f8fb88a6d2f.png)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/72fc9747-30b1-5644-b168-209b5c616ca5.png)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/a5b6978d-6897-3ba9-6701-e5e110646875.png)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/d453a176-6f22-a97e-4699-c818090153f1.png)

これでレシピは完了です。あなたはBluemix環境上で動作するWordPressインスタンスを入手しました！

![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/4cb05613-10aa-1ded-efde-66fcf4adaec0.png)

### さいごに

このレシピではシンプルで無理のないWordPressのための環境を、Bluemix上で構築しました。
 
次のステップ

* モニタリングや処理能力の自動拡張サービスを追加してみる。
* 継続的デリバリー機能を活用してDevOps環境を構築してみる。このレシピで始めたBluemix上のWordPressの構築とデプロイ作業を続けてみる。