在 App Engine 柔性环境中托管 WordPress

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

目标

  • 创建一个 Cloud SQL 第二代实例。
  • 配置一个 WordPress 示例网站。
  • 将示例 WordPress 网站部署到 App Engine 柔性环境。

费用

准备工作

  1. In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance 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

  2. Verify that billing is enabled for your Cloud de Confiance project.

  3. 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

  4. 安装 Google Cloud CLI。

  5. 配置 gcloud CLI 以使用您的联合身份。

    如需了解详情,请参阅使用联合身份登录 gcloud CLI

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

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

      打开“API 凭据”页面

    • 点击创建凭据,然后选择服务账号密钥
    • 选择服务账号 > App Engine 默认服务账号
    • 点击创建
    • 将下载的密钥保存在安全的地方。
  8. 安装 PHPComposer
  9. 下载 Cloud SQL 代理并使其可以执行。此外,将 Cloud SQL 代理可执行文件的位置添加到 PATH 环境变量中。
  10. 安装 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] 是 Cloud de Confiance 项目 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. 在 Cloud de Confiance 控制台中,前往管理资源页面。

    转到“管理资源”

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

删除应用的非默认版本

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

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

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

    转到“版本”

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

删除 Cloud SQL 实例

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

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

    转到“实例”

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

后续步骤