WordPress × Google Cloud Platform

【構築 編】GAE でWordPress をデプロイ

本概要は「オートスケーリングなWordPress を構築について」をご覧ください。

操作手順

GCP プロジェクトを作成している前提で進めます。

Cloud SQL でMySQL インスタンスを作成

  1. 左上のメニュー「≡」を選択し、「SQL」をクリックします。
  2. Cloud SQL インスタンスの作成を行います。
  3. 「MySQL を選択」をクリックします。
GCP 管理コンソール:Cloud SQLを選択

各項目を入力し、Cloud SQL インスタンスを作成します。

  • インスタンス ID:適当な名称を入力します。
  • root パスワード:適当なパスワードを入力します
  • リージョン:利用されるリージョンを選択します。
  • データベースのバージョン:MySQL 5.7
  • マシン タイプ:db-g1-small

今回は、「db-g1-small」「HDD 10GB」ですが、「設定オプションを表示」をクリックし、用途に合わせて好きな設定に変更ください。

※ db-f1-micro、db-g1-small はCloud SQL SLA 対象外です。

GCP 管理コンソール:Cloud SQLインスタンスの作成

SQL インスタンスの作成には時間がかかります。

ユーザーの作成

作成したインスタンス をクリックします。

  1. 左のナビゲーションから「ユーザー」を選択します。
  2. 「ユーザー アカウントを作成」をクリックします。
  3. ユーザー名とパスワードを適当に入力し、「作成」をクリックします。
GCP 管理コンソール:Cloud SQL:ユーザーアカウントの作成

データベースの作成

  1. 左のナビゲーションから「データベース」を選択します。
  2. 「データベースを作成」をクリックします。
  3. ユーザー名とパスワードを適当に入力し、「作成」をクリックします。
GCP 管理コンソール:Cloud SQL:データベースの作成

ターミナルを開く

※ コマンドに [〜〜〜〜] と記載してあります。正しい情報に書き換えてください。
Ex: [PROJECT_ID] → [weighty-nation-285706]

ターミナルでWordPressの設定とGAE へのデプロイを行います。
操作がしやすいようにターミナル専用ウィンドウを開きます。
また、エディターも開くことでディレクトリを可視化してわかりやすくします。

  1. 右上の「Cloud Shall」をクリックします。
  2. CloudShall バーから「エディターを開く」をクリックします。
  3. エディター バーから「新しいウィンドウを開く」をクリックします。

GCP プロジェクトが設定されていない場合は次のコマンドを入力し、使用するGCP プロジェクトを設定します。

※ [PROJECT_ID] はダッシュボードに載っているプロジェクト情報>プロジェクト ID です。

gcloud config set project [PROJECT_ID]
ターミナル:GCP プロジェクトの指定

WordPress を作成する

Composer をインストール

次のコマンドを実行して、Google Cloud 用のパッケージ管理システム composer をインストールします。

composer require google/cloud-tools

インストールが完了するとCloud Shell のHOME 領域に次の3つが作成されています。

  • vendor
  • composer.json
  • composer.lock
Cloud Shell:Composer が作成完了

wp-gae を実行時にzip 解凍が行えない可能性があるので、
次のコマンドを実行して、php 7.2 をインストールします。

sudo apt-get install php7.2-zip php7.2-curl

インストール中に「360 kB of additional disk space will be used. Do you want to continue?(360KB の容量を使用しますが継続しますか?)」と尋ねられるので「Y」と返します。

次のコマンドを実行し、WordPress プロジェクトを作成します。
また、Cloud SQL のデータベースに接続するための同時に対話型で質問を返します。

php vendor/bin/wp-gae create

質問に返す情報を次になります。

[GCPプロジェクト ID] = project_id = gae-wordpress-285410
[Cloud SQL インスタンス名] = db_instance = wp2-sql-instance
[インスタンス のデータベース] db_name = wp_db
[ユーザー名] db_user = wp-user
[パスワード] db_password = 285410

WordPress を作成するディレクトリ名を入力します。無記入の場合は、my-wordpress-project になります。
「ディレクトリが存在していた場合、上書きしますか?」と尋ねられるので「Y」と返します。

ターミナル:WordPress プロジェクトの作成

作成したCloud SQL インスタンスのリージョンを尋ねられるので「6」を返します。

ターミナル:作成したCloud SQL インスタンス リージョンを選択

プロジェクト ID、データベース情報を尋ねられるので、それらの情報を入力して返します。

「ローカル環境でも同じデータベースとユーザー名を使用しますか?」と尋ねられるので、「Y」と返します。

ターミナル:データベース情報を回答

入力が間違ってしまった場合

回答が間違っていた場合、Cloud Shell のWordPress ディレクトリのwp-config.php から次の箇所を更新することでデータベース情報を変更することができます。

wp-config.php:Cloud SQL データベースの情報

GAE 環境へのデプロイ

次のコマンドを実行し、WordPress ディレクトリに移動します。

cd [WORDPRESS_DIR]

次のコマンドを実行し、GAE にデプロイします。

gcloud app deploy app.yaml cron.yaml

「デプロイするGAE リージョンはどこですか」と尋ねられるので、「17」と返します。

ターミナル:デプロイするGAE リージョンを選択

デプロイされるGAE の情報が返されます。
「この情報でGAE をデプロイしますか?」と尋ねられるので「Y」と返します。

ターミナル:デプロイされるGAE の情報

デプロイしたWordPress のファイルをGCS への保存が行われ、GAE にWordPress がデプロイ完了となります。

ターミナル:GAE のデプロイ完了

次のコマンドを実行し、GAE のURLを表示します。

gcloud app browse
ターミナル:GAEのURLを表示

問題なければWordPress にチュートリアル画面が表示されます。

Welcome to the famous five-minute WordPress installation process

各項目に適当な情報を入力し、「Install WordPress」をクリックして、WordPress 管理コンソールを開きます。

データベース接続の確立中にエラー

wp-config.php のデータベース情報とCloud SQLのデータベース情報が異なっていた場合は「Error establishing a database connection」と表示されます。

Error establishing a database connection

wp-config.php を開き、Cloud SQLのデータベース情報に修正します。
Cloud SQL の情報を忘れた場合はGCP 管理コンソールに戻り、左上のメニュー「≡」を選択し、「SQL」をクリックします。

Google Cloud Storage プラグインを有効にする

GAE にはオブジェクトを保存することはできないため、WordPress にオブジェクト(メディア)をアップロードすることができません。

WordPress:メディアのアップロード失敗

WordPress のアップロード先をGCS にする設定を行います。

GCP 管理コンソールに戻り、左上のメニュー「≡」を選択し、「ストレージ」をクリックします。

WordPress をGAE にデプロイするとGCSに次のバケットが作成されています。

  • asia.artifacts.[YOUR_PROJECT_ID].appspot.com
  • [YOUR_PROJECT_ID].appspot.com
  • staging.[YOUR_PROJECT_ID].appspot.com
GCP 管理コンソール:Storage:ブラウザ

Cloud Shell を開きます。
次のコマンドを実行して、バケット「[YOUR_PROJECT_ID].appspot.com」をすべてのユーザーがアクセスできるアクセス制御リスト(ACL)に変更します。

gsutil defacl ch -u AllUsers:R gs://[YOUR_PROJECT_ID].appspot.com
ターミナル:バケットをACL に変更

WordPress 管理コンソールに戻り、プラグイン ページでGoogle Cloud Storage plugin をActivate にして、Settings をクリックします。
ACLに変更したGCS のバケット名 [YOUR_PROJECT_ID].appspot.comを入力します

適当なファイルをアップロードを行い、アップロードができる事を確認します。アップロードしたファイルはGCS に保存されています。

※ アップロードのディレクトリ構成は「日/年/月」になります。

次はデプロイしたWordPress をcomposer を利用してアップデートを行います。
GAE でWordPress をデプロイ」をご覧ください。