公式ページのアップデート版(非公式)です。
App Engine フレキシブル環境での WordPress のホスティング
作業手順
- GCPプロジェクト作成
- Cloud SQLインスタンス作成と設定
- WordPressプロジェクトの設定
- App Engine環境へのデプロイ
1. GCPプロジェクト作成
- GCPプロジェクトの課金が有効になっているか確認
- 必要なAPIが有効になっているか確認
- Cloud SDKをインストール
- サービスアカウントを作成
- PHPとComposerをインストール
- Cloud SQLプロキシをダウンロード
- MySQLクライアントをインストール
2. Cloud SQLインスタンス作成と設定
- Cloud SQLインスタンスを作成する
gcloud sql instances create [インスタンス名] \
--activation-policy=ALWAYS \
--tier=db-n1-standard-1
--region=asia-northeast1
- Cloud SQLプロキシを実行
./cloud_sql_proxy \
-dir /tmp/cloudsql \
-instances=[プロジェクトID]:asia-northeast1:[インスタンス名]=tcp:3306 \
-credential_file=[サービスアカウントのJSONファイル]
以下のエラーが発生した場合は、ポート番号を変更してください。
listen tcp 127.0.0.1:3306: bind: address already in use
- 新しいデータベースとユーザを作成
mysql -h 127.0.0.1 -u root --password=[パスワード]
mysql> create database [データベース名];
mysql> create user '[ユーザ名]'@'%' identified by '[パスワード]';
mysql> grant all on [データベース名].* to '[ユーザ名]'@'%';
mysql> exit
3. WordPressプロジェクトの設定
- Githubからリポジトリをクローン
git clone https://github.com/GoogleCloudPlatform/php-docs-samples.git
- サンプルディレクトリに移動(今回はフレキシブル環境の例です)
cd php-docs-samples/appengine/flexible/wordpress
- 依存関係をインストール
composer install
- ヘルパースクリプトを実行
php wordpress.php setup -n \
--dir [WordPressのプロジェクト名] \
--db_instance=[インスタンス名] \
--db_name=[データベース名] \
--db_user=[ユーザ名] \
--project_id=[プロジェクトID] \
--db_password=[パスワード] \
--db_region=asia-northeast1
ヘルパースクリプトがwordpress/wp-config.phpに以下の内容を書き込みます。
if ($onGae) {
/ Production environment */
define('DB_HOST', ':/cloudsql/[プロジェクトID]:asia-northeast1:[インスタンス名]');
/ The name of the database for WordPress /
define('DB_NAME', '[データベース名]');
/ MySQL database username */
define('DB_USER', '[ユーザ名]');
/ MySQL database password /
define('DB_PASSWORD', '[パスワード]');
} else {
/ Local environment */
define('DB_HOST', '127.0.0.1');
/ The name of the database for WordPress /
define('DB_NAME', '[データベース名]');
/ MySQL database username */
define('DB_USER', '[ユーザ名]');
/ MySQL database password /
define('DB_PASSWORD', '[パスワード]');
}
App Engine環境へのデプロイ
- WordPressプロジェクトへ移動
cd wordpress-project
- デプロイを実行
gcloud app deploy -q \
--promote --stop-previous-version app.yaml cron.yaml
- サイトにアクセスして、表示を確認
gcloud app browse
Tips
GAE上のファイル、ディレクトリ権限を変更したい場合
- app.yamlファイルで、skip_lockdown_document_rootをtrueにする
runtime_config:
document_root: wordpress
skip_lockdown_document_root: true
管理画面の言語を日本語に変更したい場合
- 日本語版WordPressをダウンロード
- languageディレクトリ配下を全て日本語版に置き換える
(追記)AppEngineの罠
- AppEngineでWordPressをデプロイすると、AppEngine側で1日1回ロールバックするひどい目に遭った
- つまりWordPressで更新した内容が元に戻ってしまう
- File System公式)です。
App Engine フレキシブル環境での WordPress のホスティング