PHP
WordPress
GoogleAppEngine

WordPress on App Engine Standard for PHP 7.2

この記事は2019/2/1時点のこちらにあるコマンドラインツールを使用してWordPressをGAEにデプロイする手順を説明します。


前提条件


Cloud SQL for MySQL インスタンスの作成と設定


: このガイドでは, インスタンスとデータベース名に wordpress を使用します。データベースでは root ユーザーを使用します。



  1. 下記コマンドで、新規 Cloud SQL for MySQL Second Generation インスタンスを作成

$ gcloud sql instances create wordpress \

--activation-policy=ALWAYS \
--tier=db-n1-standard-1

2. 次に、WordPressで使うデータベースを作成します

$ gcloud sql databases create wordpress --instance wordpress


  1. 最後に、インスタンスの root パスワードを変更します

$ gcloud sql users set-password root \

--host=% \
--instance wordpress \
--password=YOUR_INSTANCE_ROOT_PASSWORD # このパスワードは使ってはいけません!


Create or Update a WordPress project for App Engine

wp-age コマンドは新規に WordPress プロジェクトを作成するか、既に WordPress プロジェクトがある場合は必要な設定ファイルを追加します


Setup


  1. このリポジトリをダウンロードし cdappengine/php72/wordpress ディレクトリに入ります

$ git clone https://github.com/GoogleCloudPlatform/php-docs-samples.git

$ cd php-docs-samples/appengine/php72/wordpress


  1. このディレクトリで composer を使って依存パッケージをインストールします

$ composer install


エラーが発生したら, PHP拡張モジュールの pharzip をインストールし再実行してみてください



Create a new WordPress Project

Google Cloud に WordPress をダウンロードとセットアップするために、create コマンドを実行します

$ php vendor/bin/wp-gae create

実行するといくつか質問をするので回答してください。

完了すると、新しい WordPress プロジェクトを作成します。

デフォルトでは my-wordpress-project が現在のディレクトリに作成されます。


: データベースのリージョンを確認したい場合は、gcloud sql instances describe wordpressを実行する



Update an existing WordPress Project

もし既にある WordPress プロジェクトを Google Could に移行したい場合は、 update コマンドを使用します

$ php vendor/bin/wp-gae update path/to/your-wordpress-site

実行するといくつか質問をするので回答してください。

完了すると、files ディレクトリにファイルがコピーされ、設定が書き出されます。これで Google Could にデプロイする準備ができました!


Deploy to Google Cloud

cd で WordPress プロジェクトのルートに移動します

$ cd my-wordpress-project

App Engine にデプロイするために次のコマンドを実行します

$ gcloud app deploy app.yaml cron.yaml

これでサイトにアクセスできます。引き続きインストールStepを続けてください。

https://PROJECT_ID.appspot.com/


Enable the Google Cloud Storage plugin

メディアをアップロードするためにGoogle Cloud Storage pluginを使います。手順は以下です。


  1. あとで使うためにApp EngineのデフォルトGCSバケットを設定します。デフォルトの App Engine バケットは YOUR_PROJECT_ID.appspot.com です。このバケットのデフォルトのアクセスコントロールリスト(ACL)を以下のコマンドで変更します

$ gsutil defacl ch -u AllUsers:R gs://YOUR_PROJECT_ID.appspot.com


  1. ダッシュボードに行きます https://PROJECT_ID.appspot.com/wp-admin

  2. プラグインベージで Google Cloud Storage plugin をアクティブにします。

  3. プラグイン設定ページで、上記で設定したバケット名をセットします。

プラグインを有効化した後、メディアのアップロードを試すと、GCSバケットGoogle Cloud console's Storage pageに画像が確認できます。


Local Development

Cloud SQL Proxy を使用して、Cloud SQL の MySQL にアクセスします。はじめに ローカルマシン上でCloud SQL Proxy をダウンロードして、実行してください。

あなたのプロジェクトの認証情報を開き、'認証情報を作成する'をクリックしてください。そして'サービスアカウントキー'を選択してください。'App Engine app default service account'を選択して、'作成'をクリックし、JSONファイルをダウンロードしてください。

Proxyを実行するには以下のコマンドを使用します。

$ cloud_sql_proxy \

-dir /cloudsql \
-instances=YOUR_PROJECT_ID:us-central1:wordpress \
-credential_file=/path/to/YOUR_SERVICE_ACCOUNT_JSON_FILE.json


Note: 実行ユーザーが/cloudsqlに書き込み可能なことを確認してください。このコマンドはここに Unix socketを作成します。


これで MySQL Client を使って Cloud SQL インスタンスにアクセスできるようになりました。

別タブを開き、下記のコマンドで確認できます。

$ mysql --socket /cloudsql/YOUR_PROJECT_ID:us-central1:wordpress -u root -p

mysql> use database wordpress;
mysql> show tables;
mysql> exit


ローカルでWordPressを起動する (mkamakura追記)

wp-config.phpにあるデータベースの接続設定を変更します。

if ($onGae) {

/* 省略 */
} else {
/** The name of the local database for WordPress */
define('DB_NAME', 'wordpress');
/** Local environment MySQL login info */
/* define('DB_HOST', '127.0.0.1'); コメントアウト*/
define('DB_HOST', ':/cloudsql/YOUR_PROJECT_ID:us-central1:wordpress'); /* 追加 */
define('DB_USER', 'root');
define('DB_PASSWORD', 'YOUR_INSTANCE_ROOT_PASSWORD');
}

phpビルドインサーバーを使用して起動する

php -S localhost:8000


Various Workflows


Install and Update WordPress, Plugins, and Themes

wp-contentディレクトリはサーバー上ではRead-Onlyのため、ローカル環境でコードのアップデートをする必要があります。WordPressをローカルで起動し、ダッシュボードからプラグインやテーマをアップデートし、コードをサーバーにデプロイします。そして、サーバー上のWordPressのダッシュボードから有効化をします。また wp-cli は以下のような機能を提供します。(Cloud SQL proxy が起動していることを確認してください)

# wp-cli のインストール

$ composer require wp-cli/wp-cli-bundle

# WoldPressのアップデート
$ vendor/bin/wp core update --path=wordpress

# すべてのプラグインのアップデート, すべてのテーマのアップデート
$ vendor/bin/wp plugin update --all
$ vendor/bin/wp theme update --all

もし、以下のエラーが発生した場合は、

Failed opening required 'google/appengine/api/urlfetch_service_pb.php'

WP_CLI_PHP_ARGS環境変数にinclude_pathを設定してください。

$ export WP_CLI_PHP_ARGS='-d include_path=vendor/google/appengine-php-sdk'


Remove Plugins and Themes

最初にサーバー上のダッシュボードで無効化してから、ローカルで削除してください。次にデプロイするとサーバー上でも完全に削除されます。