在 App Engine 柔性环境中托管 WordPress

本教程介绍如何将小型 WordPress 网站部署到 App Engine 柔性环境。

目标

  • 创建一个 Cloud SQL 第二代实例。
  • 配置一个 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. 如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 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. 如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI

  13. 如需初始化 gcloud CLI,请运行以下命令:

    gcloud init
  14. 按照以下步骤创建凭据:
    • 在 Google Cloud 控制台中,前往凭证页面。

      打开“API 凭据”页面

    • 点击创建凭据,然后选择服务账号密钥
    • 选择服务账号 > App Engine 默认服务账号
    • 点击创建
    • 将下载的密钥保存在安全的地方。
  15. 安装 PHPComposer
  16. 下载 Cloud SQL 代理并使其可以执行。此外,将 Cloud SQL 代理可执行文件的位置添加到 PATH 环境变量中。
  17. 安装 MySQL 客户端并验证 mysql 可执行文件的位置是否存储在 PATH 环境变量中。

创建和配置 Cloud SQL 第二代实例

  1. 创建一个 Cloud SQL 第二代实例:

    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 代理

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

将 WordPress 项目部署到 App Engine 柔性环境

  1. 转到您的 WordPress 项目目录:

    cd wordpress-project
    
  2. 部署 WordPress 项目:

    gcloud app deploy \
        --promote --stop-previous-version app.yaml cron.yaml
    
  3. 在浏览器中,输入以下网址:

    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 账号产生费用,请删除包含这些资源的项目,或者保留项目但删除各个资源。

删除项目

为了避免产生费用,最简单的方法是删除您为本教程创建的项目。

要删除项目,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往管理资源页面。

    转到“管理资源”

  2. 在项目列表中,选择要删除的项目,然后点击删除
  3. 在对话框中输入项目 ID,然后点击关闭以删除项目。

删除应用的非默认版本

如果您不想删除项目,可以通过删除应用的非默认版本来降低费用。

要删除应用版本,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往 App Engine 的版本页面。

    转到“版本”

  2. 选中要删除的非默认应用版本对应的复选框。
  3. 如需删除应用版本,请点击删除

删除 Cloud SQL 实例

要删除 Cloud SQL 实例,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往实例页面。

    转到“实例”

  2. 点击要删除的 SQL 实例的名称。
  3. 如需删除实例,请点击删除,然后按照说明操作。

后续步骤