IBM BluemixでDrupal環境を構築してみる (Drupal: IBM Bluemixの翻訳)

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

[Drupal](https://ja.wikipedia.org/wiki/Drupal) はプログラム言語PHPで記述されたフリーでオープンソースのモジュラー式フレームワークであり、コンテンツ管理システム (CMS) です。

## 最初に

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

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

## 概要

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

ステップ･バイ･ステップでIBM Bluemix環境上にDrupalをセットアップします。

## 構成要素

* Bluemix アカウント
* Composer

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

### 1. Drupalのダウンロード

Download the latest version of the [Drupal 8](https://www.drupal.org/download) (version 8.3.7 がこの投稿時の最新です)

【訳注】元レシピは version 8.3.5 ですが、このレシピでは現時点で最新の version 8.3.7 を使用します

### 2. Extract content

ダウンロードしたファイルを解凍し、作成されたディレクトリに移動します。

> $ cd drupal-8.3.5

### 3. Cloud Foundry Buildpack for PHP

Drupal 8 は最新のバージョンのPHPを要求するので、適したバージョンを含んだ Cloud Foundry ビルドパックを探します。PHP用の Cloud Foundry ビルドパックは https://github.com/heroku/heroku-buildpack-php にあります。ステップ8で Bluemix 環境にデプロイする際にはこちらを使いましょう。

ノート: Bluemix で用意された php_buildpack は Drupal 8 にバージョンが適合しないので使用しないでください。ビルドが失敗します。(Bluemix チームがビルドパックをアップデートすればこれは解消されるかもしれません)

【訳注】 Drupal 8 の [System requirements](https://www.drupal.org/docs/8/system-requirements) には「PHP 5.5.9 or greater」とあるので、Bluemix で用意された PHP 環境で問題なさそうな気もするのですが… 今回はレシピに従います。

### 4. Edit Composer

Drupal は依存性解決のため Composer を採用しています。必要なPHP拡張を適切にロードするため、ビルドパックとDrupalのバージョン依存にあわせ、ソースツリーのルートにある ‘composer.json‘ ファイルを修正する必要があります。

これは Drupal version 8.3.5 のケースですが、PHP の ‘gd’ 拡張がロードされませんでした。以下のように composer.json ファイルの ‘require’ 属性に ‘ext-gd’ を加えることで対応します。

```json
"require": {
    "composer/installers": "^1.0.21",
    "ext-gd": "*",
    "wikimedia/composer-merge-plugin": "~1.3"
},
```

【訳注】version 8.3.7 でも同様に追加しましたが、Composerで依存関係が設定されているようにみえますので不要かもしれません。なお拡張がないとインストール時に以下のようなエラーが表示されます。<br/>![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/de170bf1-3f33-baf9-20b4-a9dc332fd348.png)

### 5. Composer でアップデートする

composer.json ファイルが composer.lock ファイルと整合性がとれている必要があるため、Composer が導入された環境で以下を実行します。

>  composer update

![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/06ddc65b-d50f-6b53-a08a-bd967c20f9f8.png)

【訳注】最初の実行は「Package operations: 32 installs, 33 updates, 0 removals」と表示され表示が非常に長かったため、上記は2度目の実行です。

【訳注】使用しているWindows環境にはPHP関連の開発環境が入っていなかったので、まず [PHPのダウンロードとインストール - Windows環境](https://webkaru.net/php/windows-php-instal/) を参考に PHP を導入し、次に [Composerをインストールしてみた](https://qiita.com/kakijin/items/02364adacf36410f449e) を参考に Composer を導入して対応しました。

【訳注】composer導入や、composer update 実行中にローカル環境に拡張が導入されていないためにエラーが発生することがあります。私の場合はPHP導入直後のため php.ini で以下の項目のコメントアウトを外す必要がありました。
> extension_dir = "ext"
> extension=php_gd2.dll
> extension=php_mbstring.dll
> extension=php_openssl.dll


### 6. データベースを作成する

永続データの保持のため、Bluemix にあるPostgreSQL データベースサービスを利用します。

Bluemix アカウントでログインし、データ&分析にある「Compose for PostgreSQL」をクリック。接続は「アンバインドのまま」で作成します。<br/>![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/3193d2d0-f9a6-9a7a-4625-b585841d55b6.png)<br/><br/>![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/9d1ab807-39bb-ce84-45e9-3f9e3579659b.png)

### 7. Save DB details

Bluemix のダッシュボードからPostgreSQLサービスを開き、ユーザー名、パスワード、ホスト名、ポート番号を保存します。これらの情報はBluemixでDrupalをインストールする際に必要になります。<br/>![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/0413942b-949d-fbd1-f255-24741822bb1c.png)

### 8. Code push in Bluemix

ターミナルを開いてdrupal ディレクトリに移動します。 (ステップ2で使用したディレクトリと同じ)
Bluemixにデプロイします (CF CLI ツールのダウンロードはこちら: https://console.ng.bluemix.net/docs/cli/index.html#downloads)

> cf login
> cf push &lt;app-name&gt; -b https://github.com/heroku/heroku-buildpack-php

【訳注】CLIツールに関しては [CFツールの導入](https://qiita.com/yamachan360/items/12545f3277fc0c65d2f8#cf%E3%83%84%E3%83%BC%E3%83%AB%E3%81%AE%E5%B0%8E%E5%85%A5) も参照してみてください。

【訳注】drupal-bmx-testjp というアプリ名で実行した結果が以下です。<br/>![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/9d51be33-9675-6023-df20-3f2daa4020b0.png)

### 9. Drupalのセットアップ

https://&lt;app-name&gt;.mybluemix.net/ にアクセスして、あなたのインスタンスを設定しましょう。
言語、プロフィールを選択します。<br/>![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/b64ec92e-6c70-5b2c-58e2-b6386fd26120.png)<br/>![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/5706a57a-d101-da94-8440-5cd1188e2f48.png)

### 10. データベースのセットアップ

PostgreSQL データベースを選択し、ステップ8で保持しておいた情報を設定します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/6e6c9111-ed95-3744-7687-80278d4ffc7d.png)

【訳注】私の場合はこの後で以下のエラーが発生しました。<br/>![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/5d891b6c-3527-b7ee-2dbf-478999cba34f.png)<br/>関連する議論は [#2569365](https://www.drupal.org/node/2569365) や [#2810049](https://www.drupal.org/node/2810049) だとおもわれます。 まだ対応がされていないようなので、言われたとおりSQLコマンドを実行してみましたが、オーナー権限でないと怒られました…<br/>![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/e2f1c8e6-677c-6b19-70ce-10e19aa424eb.png)<br/>困りました。Bluemix環境上でPostgreSQL データベースのオーナー権限を得る方法がわかりません。bytea_outputの値が変更されたのがv9.0からのようですが、それより古いバージョンは作成時に選択できません…

【訳注】とりあえず今回はここで諦め、以降は文章の訳だけしていったん公開します。元のサイトで質問をしてみましたので回答待ちです。また上記の問題の対応方法をご存知の方、コメント欄で教えていただけると助かります。

### 11. サイトの設定

要求された情報を入力し、サイトを設定しましょう。

### 12. Drupalサイトにアクセスする

サイトにこのURLでアクセスしましょう: https://&lt;app-name&gt;.mybluemix.net/