Hosting WordPress in the App Engine flexible environment

は、

This tutorial shows how to deploy a small WordPress site to the App Engine flexible environment.

Objectives

  • Create a Cloud SQL Second Generation instance.
  • Configure a sample WordPress site.
  • Deploy the sample WordPress site to the App Engine flexible environment.

Costs

Before you begin

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

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

  2. GCP プロジェクトを選択または作成します。

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

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

    課金を有効にする方法について

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

    APIを有効にする

  5. Cloud SDK をインストールして初期化します。
  6. Create a new service account. Download the JSON key file and save it in a secure place.
  7. Install PHP and Composer.
  8. Download the Cloud SQL Proxy and make it executable. Also add the location of the Cloud SQL Proxy executable file to your PATH environment variable.
  9. Install a MySQL client and verify that the location of the mysql executable file is in your PATH environment variable.

Creating and configuring a Cloud SQL Second Generation instance

  1. Create a Cloud SQL Second Generation instance:

    gcloud sql instances create tutorial-sql-instance \
        --activation-policy=ALWAYS \
        --tier=db-n1-standard-1
    
  2. Set the root password for your instance:

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

    where [YOUR_SQL_ROOT_PASSWORD] is a secure password of your choice.

  3. Run the 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]
    

    where

    • [YOUR_PROJECT_ID] is your GCP project ID.

    • [PATH_TO_YOUR_SERVICE_ACCOUNT_JSON] is the path to the service account JSON file that you downloaded previously.

    The following output indicates that the proxy is ready for new connections:

    Listening on 127.0.0.1:3306 for [YOUR_PROJECT_ID]:us-central1:tutorial-sql-instance
    Ready for new connections
    
  4. In another terminal window, create a new database and a user:

    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
    

    where:

    • [YOUR_SQL_ROOT_PASSWORD] is the root password for your Cloud SQL instance.
    • [YOUR_DATABASE_PASSWORD] is a secure password of your choice.

Setting up the WordPress project

  1. Clone the sample repository:

    git clone https://github.com/GoogleCloudPlatform/php-docs-samples.git
    
  2. Go to the directory that contains the sample code:

    cd php-docs-samples/appengine/flexible/wordpress
    
  3. Install dependencies:

    composer install
    
  4. Run the helper script:

    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]
    

    where:

    • [YOUR_PROJECT_ID] is your project ID.
    • [YOUR_DATABASE_PASSWORD] is your database password.

    The -dir parameter specifies the location of your WordPress project.

  5. The helper script writes information to wordpress-project/wordpress/wp-config.php. Inspect the content of wp-config.php to verify that your names, project ID, and database password are correct.

    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]');
    }
    

Deploying the WordPress project to the App Engine flexible environment

  1. Go to your WordPress project directory:

    cd wordpress-project
    
  2. Deploy the WordPress project:

    gcloud app deploy \
        --promote --stop-previous-version app.yaml cron.yaml
    
  3. Enter this URL in your browser:

    https://[YOUR_PROJECT_ID].appspot.com
    

    where [YOUR_PROJECT_ID] is your GCP project ID.

Updating WordPress, plugins, and themes

It's important to keep WordPress, plugins, and themes up to date. You can keep these items updated by using the wp tool. After an update, you need to re- deploy the WordPress project.

  1. Update WordPress itself:

    vendor/bin/wp core update --path=wordpress
    
  2. Update plugins:

    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. Update themes:

    vendor/bin/wp theme update --all --path=wordpress
    
  4. Deploy the project again:

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

Cleaning up

To avoid incurring charges to your Google Cloud Platform account for the resources used in this tutorial:

Delete the project

The easiest way to eliminate billing is to delete the project that you created for the tutorial.

To delete the project:

  1. GCP Console で [プロジェクト] ページに移動します。

    プロジェクト ページに移動

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

Delete non-default versions of your app

If you don't want to delete your project, you can reduce costs by deleting the non-default versions of your app.

To delete an app version:

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

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

  2. 削除したい、デフォルト以外のアプリのバージョンの横にあるチェックボックスをクリックします。
  3. ページ上部にある [削除] ボタンをクリックし、アプリのバージョンを削除します。

Delete your Cloud SQL instance

To delete a Cloud SQL instance:

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

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

  2. 削除したい SQL インスタンスの名前をクリックします。
  3. ページの上部にある、[削除] ボタンをクリックし、インスタンスを削除します。

What's next

このページは役立ちましたか?評価をお願いいたします。