LoginSignup
5
8

More than 3 years have passed since last update.

Google App Engine(GAE)でWordPressを構築する

Last updated at Posted at 2019-09-29

公式ページのアップデート版(非公式)です。
App Engine フレキシブル環境での WordPress のホスティング

作業手順

  1. GCPプロジェクト作成
  2. Cloud SQLインスタンス作成と設定
  3. WordPressプロジェクトの設定
  4. App Engine環境へのデプロイ

1. GCPプロジェクト作成

  1. GCPプロジェクトの課金が有効になっているか確認
  2. 必要なAPIが有効になっているか確認
  3. Cloud SDKをインストール
  4. サービスアカウントを作成
  5. PHPComposerをインストール
  6. Cloud SQLプロキシをダウンロード
  7. 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

管理画面の言語を日本語に変更したい場合

(追記)AppEngineの罠

5
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
8