この記事は2019/2/1時点のこちらにあるコマンドラインツールを使用してWordPressをGAEにデプロイする手順を説明します。
前提条件
- Cloud Console 上で新規プロジェクトを作成する
- 作成したプロジェクトの支払い設定を有効にする
- Google Cloud SDK をインストールする
- Cloud SQL API を有効にする
- Composer をインストールする
Cloud SQL for MySQL インスタンスの作成と設定
注: このガイドでは, インスタンスとデータベース名に
wordpress
を使用します。データベースではroot
ユーザーを使用します。
- 下記コマンドで、新規 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
- 最後に、インスタンスの 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
- このリポジトリをダウンロードし
cd
でappengine/php72/wordpress
ディレクトリに入ります
$ git clone https://github.com/GoogleCloudPlatform/php-docs-samples.git
$ cd php-docs-samples/appengine/php72/wordpress
- このディレクトリで composer を使って依存パッケージをインストールします
$ composer install
注 エラーが発生したら, PHP拡張モジュールの
phar
とzip
をインストールし再実行してみてください
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を使います。手順は以下です。
- あとで使うためにApp EngineのデフォルトGCSバケットを設定します。デフォルトの App Engine バケットは YOUR_PROJECT_ID.appspot.com です。このバケットのデフォルトのアクセスコントロールリスト(ACL)を以下のコマンドで変更します
$ gsutil defacl ch -u AllUsers:R gs://YOUR_PROJECT_ID.appspot.com
- ダッシュボードに行きます https://PROJECT_ID.appspot.com/wp-admin
- プラグインベージで
Google Cloud Storage plugin
をアクティブにします。 - プラグイン設定ページで、上記で設定したバケット名をセットします。
プラグインを有効化した後、メディアのアップロードを試すと、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
最初にサーバー上のダッシュボードで無効化してから、ローカルで削除してください。次にデプロイするとサーバー上でも完全に削除されます。