App Engine フレキシブル環境での WordPress のホスティング

このチュートリアルでは、小規模な WordPress サイトを App Engine フレキシブル環境にデプロイする方法を示します。

目標

  • Cloud SQL 第 2 世代インスタンスを作成する。
  • WordPress のサンプルサイトを構成する。
  • WordPress のサンプルサイトを App Engine フレキシブル環境にデプロイする。

費用

始める前に

  1. アカウントにログインします。 Google Cloud を初めて使用する場合は、 アカウントを作成して、 実際のシナリオでプロダクトがどのように機能するかを評価してください。 Google Cloud新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the required APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  5. Google Cloud CLI をインストールします。

  6. 外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。

  7. gcloud CLI を初期化するには、次のコマンドを実行します:

    gcloud init
  8. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  9. Verify that billing is enabled for your Google Cloud project.

  10. Enable the required APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  11. Google Cloud CLI をインストールします。

  12. 外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。

  13. gcloud CLI を初期化するには、次のコマンドを実行します:

    gcloud init
  14. 次の手順で認証情報を作成します。
    • コンソールで、[認証情報] ページに移動します。 Google Cloud

      API の認証情報ページを開く

    • [認証情報を作成] をクリックし、[サービス アカウント キー] を選択します。
    • [サービス アカウント] > App Engine のデフォルトのサービス アカウントを選択します。
    • [作成] をクリックします。
    • ダウンロードしたキーを安全な場所に保存します。
  15. PHPComposer をインストールします。
  16. Cloud SQL Proxy をダウンロードして、実行可能ファイルにします。また、Cloud SQL Proxy の実行可能ファイルの場所を PATH 環境変数に追加します。
  17. MySQL クライアントをインストールし、mysql 実行可能ファイルの場所が PATH 環境変数に含まれていることを確認します。

Cloud SQL 第 2 世代インスタンスの作成と構成

  1. Cloud SQL 第 2 世代インスタンスを作成します。

    gcloud sql instances create tutorial-sql-instance \
        --activation-policy=ALWAYS \
        --tier=db-n1-standard-1 \
        --region=us-central1
    
  2. インスタンスに root パスワードを設定します。

    gcloud sql users set-password root --instance tutorial-sql-instance \
        --password [YOUR_SQL_ROOT_PASSWORD] \
        --host %
    

    [YOUR_SQL_ROOT_PASSWORD] は任意の安全なパスワードです。

  3. Cloud SQL Proxy をダウンロードして実行します。

    ./cloud-sql-proxy \
        -dir /tmp/cloudsql \
        -instances=[YOUR_PROJECT_ID]:us-central1:tutorial-sql-instance \
        -credential_file=[PATH_TO_YOUR_SERVICE_ACCOUNT_JSON]

    ここで

    • [YOUR_PROJECT_ID] は Google Cloud プロジェクト ID です。

    • [PATH_TO_YOUR_SERVICE_ACCOUNT_JSON] は、前にダウンロードしたサービス アカウント JSON ファイルのパスです。

    次の出力は、新しい接続に対してプロキシの準備ができていることを示します。

    Listening on 127.0.0.1:3306 for [YOUR_PROJECT_ID]:us-central1:tutorial-sql-instance
    Ready for new connections
    
  4. 別のターミナル ウィンドウで、新しいデータベースとユーザーを作成します。

    mysql -h 127.0.0.1 -u root --password=[YOUR_SQL_ROOT_PASSWORD]
    mysql> create database tutorialdb;
    mysql> create user 'tutorial-user'@'%' identified by '[YOUR_DATABASE_PASSWORD]';
    mysql> grant all on tutorialdb.* to 'tutorial-user'@'%';
    mysql> exit

    ここで

    • [YOUR_SQL_ROOT_PASSWORD] は、Cloud SQL インスタンスの root パスワードです。
    • [YOUR_DATABASE_PASSWORD] は、任意の安全なパスワードです。

WordPress プロジェクトの設定

  1. サンプル リポジトリのクローンを作成します。

    git clone https://github.com/GoogleCloudPlatform/php-docs-samples.git
    
  2. サンプルコードのあるディレクトリに移動します。

    cd php-docs-samples/appengine/flexible/wordpress
    
  3. 依存関係をインストールします。

    composer install
    
  4. ヘルパー スクリプトを実行します。

    php wordpress.php setup -n \
        --dir=./wordpress-project \
        --db_instance=tutorial-sql-instance \
        --db_name=tutorialdb \
        --db_user=tutorial-user \
        --project_id=[YOUR_PROJECT_ID] \
        --db_password=[YOUR_DATABASE_PASSWORD]

    ここで

    • [YOUR_PROJECT_ID] はプロジェクト ID です。
    • [YOUR_DATABASE_PASSWORD] はデータベース パスワードです。

    -dir パラメータは、WordPress プロジェクトの場所を指定します。

  5. ヘルパー スクリプトは wordpress-project/wordpress/wp-config.php に情報を書き込みます。wp-config.php の内容を調べて、名前、プロジェクト ID、データベース パスワードが正しいことを確認します。

    if ($onGae) {
        /** Production environment */
        define('DB_HOST', ':/cloudsql/[YOUR_PROJECT_ID]:us-central1:tutorial-sql-instance');
        /** The name of the database for WordPress */
        define('DB_NAME', 'tutorialdb');
        /** MySQL database username */
        define('DB_USER', 'tutorial-user');
        /** MySQL database password */
        define('DB_PASSWORD', '[YOUR_DATABASE_PASSWORD]');
    } else {
        /** Local environment */
        define('DB_HOST', '127.0.0.1');
        /** The name of the database for WordPress */
        define('DB_NAME', 'tutorialdb');
        /** MySQL database username */
        define('DB_USER', 'tutorial-user');
        /** MySQL database password */
        define('DB_PASSWORD', '[YOUR_DATABASE_PASSWORD]');
    }

App Engine フレキシブル環境への WordPress プロジェクトのデプロイ

  1. WordPress のプロジェクト ディレクトリに移動します。

    cd wordpress-project
    
  2. WordPress プロジェクトをデプロイします。

    gcloud app deploy \
        --promote --stop-previous-version app.yaml cron.yaml
    
  3. ブラウザに次の URL を入力します。

    https://PROJECT_ID.REGION_ID.r.appspot.com

    次のように置き換えます。

    • PROJECT_ID: 実際の Google Cloud プロジェクト ID
    • REGION_ID: App Engine がアプリに割り当てるコード

WordPress、プラグイン、テーマの更新

WordPress、プラグイン、テーマは常に最新の状態に保つことが重要です。wp ツールを使用して、これらのアイテムを最新の状態に更新できます。更新後に、WordPress プロジェクトを再デプロイする必要があります。

  1. WordPress 自体を更新します。

    vendor/bin/wp core update --path=wordpress
    
  2. プラグインを更新します。

    vendor/bin/wp plugin update --all --path=wordpress
    # Just in case it updates any of the dropins, copy the files:
    cp wordpress/wp-content/plugins/batcache/advanced-cache.php \
        wordpress/wp-content/plugins/memcached/object-cache.php \
        wordpress/wp-content
    
  3. テーマを更新します。

    vendor/bin/wp theme update --all --path=wordpress
    
  4. プロジェクトを再度デプロイします。

    gcloud app deploy \
        --promote --stop-previous-version app.yaml cron.yaml
    

クリーンアップ

このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。

プロジェクトの削除

課金されないようにする最も簡単な方法は、チュートリアル用に作成したプロジェクトを削除することです。

プロジェクトを削除するには:

  1. コンソールで [**リソースの管理**] ページに移動します。 Google Cloud

    [リソースの管理] に移動

  2. プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
  3. ダイアログでプロジェクト ID を入力し、 [Shut down] をクリックしてプロジェクトを削除します。

アプリのデフォルト以外のバージョンの削除

プロジェクトを削除しない場合、アプリのデフォルト以外のバージョンを削除すると、コストを抑えることができます。

アプリのバージョンを削除するには:

  1. コンソールで、App Engine の [**バージョン**] ページに移動します。 Google Cloud

    [バージョン] に移動

  2. 削除するデフォルト以外のアプリ バージョンのチェックボックスをオンにします。 削除します。
  3. アプリのバージョンを削除するには、 delete [Delete] をクリックします。

Cloud SQL インスタンスの削除

Cloud SQL インスタンスを削除するには:

  1. コンソールで、 [インスタンス] ページに移動します。 Google Cloud

    [インスタンス] に移動

  2. 削除する SQL インスタンスの名前をクリックします。
  3. インスタンスを削除するには、 delete [Delete] をクリックして、指示に従います。

次のステップ