在 App Engine 柔性环境中托管 WordPress


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

目标

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

费用

准备工作

  1. 登录您的 Google Cloud 账号。如果您是 Google Cloud 新手,请创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
  2. 在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目

    转到“项目选择器”

  3. 确保您的 Google Cloud 项目已启用结算功能

  4. 启用所需的 API。

    启用 API

  5. 安装 Google Cloud CLI。
  6. 如需初始化 gcloud CLI,请运行以下命令:

    gcloud init
  7. 在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目

    转到“项目选择器”

  8. 确保您的 Google Cloud 项目已启用结算功能

  9. 启用所需的 API。

    启用 API

  10. 安装 Google Cloud CLI。
  11. 如需初始化 gcloud CLI,请运行以下命令:

    gcloud init
  12. 请按照以下步骤创建凭据:
    • 在 Google Cloud 控制台中,转到凭据页面。

      打开“API 凭据”页面

    • 点击创建凭据,然后选择服务账号密钥
    • 选择服务账号 > App Engine 默认服务账号
    • 点击创建
    • 将下载的密钥保存在安全的地方。
  13. 安装 PHPComposer
  14. 下载 Cloud SQL 代理并使其可以执行。此外,将 Cloud SQL 代理可执行文件的位置添加到 PATH 环境变量中。
  15. 安装 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 代理

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

将 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. 如需删除实例,请点击删除,然后按照说明操作。

后续步骤