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

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

目標

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

料金

始める前に

  1. Google アカウントにログインします。

    Google アカウントをまだお持ちでない場合は、新しいアカウントを登録します。

  2. Cloud Console のプロジェクト セレクタページで、Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタのページに移動

  3. Google Cloud プロジェクトに対して課金が有効になっていることを確認します。 プロジェクトに対して課金が有効になっていることを確認する方法を学習する

  4. 必要なAPI を有効にします。

    API を有効にする

  5. Cloud SDK をインストールし、初期化します
  6. 次の手順で認証情報を作成します。
    • Cloud Console で [認証情報] ページに移動します。

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

    • [認証情報を作成] をクリックし、[サービス アカウント キー] を選択します。
    • [サービス アカウント] > App Engine のデフォルトのサービス アカウントを選択します。
    • [作成] をクリックします。
    • ダウンロードしたキーを安全な場所に保存します。
  7. PHPComposer をインストールします。
  8. Cloud SQL Proxy をダウンロードし、実行可能にします。また、Cloud SQL Proxy の実行可能ファイルの場所を PATH 環境変数に追加します。
  9. 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 をダウンロードして実行します。

        wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy
        cloud_sql_proxy \
            -dir /tmp/cloudsql \
            -instances=[YOUR_PROJECT_ID]:us-central1:tutorial-sql-instance=tcp:3306 \
            -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

    以下を置き換えます。

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 Platform アカウントに課金されないようにする手順は次のとおりです。

プロジェクトの削除

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

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

  1. Cloud Console で [リソースの管理] ページに移動します。

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

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

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

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

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

  1. Cloud Console で、App Engine の [バージョン] ページに移動します。

    [バージョン] ページに移動

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

Cloud SQL インスタンスの削除

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

  1. Cloud Console で、[SQL インスタンス] ページに移動します。

    [SQL インスタンス] ページに移動

  2. 削除する SQL インスタンスの名前をクリックします。
  3. [削除] をクリックしてインスタンスを削除します。

次のステップ