App Engine フレキシブル環境で PHP アプリを作成する

リージョン ID

REGION_ID は、アプリの作成時に選択したリージョンに基づいて Google が割り当てる省略形のコードです。一部のリージョン ID は、一般的に使用されている国や州のコードと類似しているように見える場合がありますが、このコードは国または州に対応するものではありません。2020 年 2 月以降に作成されたアプリの場合、REGION_ID.r は App Engine の URL に含まれています。この日付より前に作成されたアプリの場合、URL のリージョン ID は省略可能です。

詳しくは、リージョン ID をご覧ください。

このクイックスタートでは、PHP ランタイム バージョン 7.3 以前で短いメッセージを表示するアプリを作成してデプロイする方法について説明します。バージョン 7.4 以降では、app.yaml ファイルを更新する必要があります。新しいバージョンの使用の詳細については、PHP ランタイムをご覧ください。

始める前に

  1. Google Cloud アカウントにログインします。Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  2. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

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

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

  4. Cloud Build API を有効にします。

    API を有効にする

  5. Google Cloud CLI をインストールします。
  6. gcloud CLI を初期化するには:

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

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

  8. Google Cloud プロジェクトで課金が有効になっていることを確認します

  9. Cloud Build API を有効にします。

    API を有効にする

  10. Google Cloud CLI をインストールします。
  11. gcloud CLI を初期化するには:

    gcloud init

追加の前提条件

  1. プロジェクトで App Engine アプリケーションを初期化し、そのリージョンを選択します。

    gcloud app create --project=[YOUR_PROJECT_ID]
    

    表示された指示に従って、App Engine アプリケーションを配置するリージョンを選択します。

  2. 次の前提条件をインストールします。

App Engine のロケーション

App Engine はリージョナルです。つまり、アプリを実行するインフラストラクチャは特定のリージョンに配置され、そのリージョン内のすべてのゾーンで冗長的に利用できるように Google が管理しています。

レイテンシ、可用性、耐久性の要件を満たすことが、アプリを実行するリージョンを選択する際の主な要素になります。一般的には、アプリのユーザーに最も近いリージョンを選択できますが、App Engine が使用可能なロケーションと、アプリが使用するその他の Google Cloud プロダクトおよびサービスのロケーションを考慮する必要があります。使用するサービスが複数のロケーションにまたがっていると、アプリのレイテンシだけでなく、料金にも影響する可能性があります。

設定したアプリのリージョンは変更できません。

すでに App Engine アプリケーションを作成している場合は、次のいずれかの方法でそのリージョンを表示できます。

このクイックスタートは、読者が PHP プログラミング言語に精通していることを前提としています。

Hello World アプリをダウンロードする

App Engine 用のシンプルな Hello World アプリが用意されており、Google Cloud へのアプリのデプロイをすぐに試すことができます。

  1. Hello World サンプルアプリ リポジトリのクローンをローカルマシンに作成します。

    git clone https://github.com/GoogleCloudPlatform/php-docs-samples.git
    

    または、zip 形式のサンプルをダウンロードして、ファイルを抽出します。

  2. サンプルコードが含まれているディレクトリに移動します。

       cd php-docs-samples/appengine/flexible/helloworld
    

ローカルマシン上で Hello World を実行する

ローカルのパソコンで Hello World アプリを実行する手順は次のとおりです。

  1. 依存関係をインストールします。

    composer install
    
  2. ローカルのウェブサーバーを起動します。

    php -S localhost:8080 -t web/
    
  3. ウェブブラウザに次のアドレスを入力します。

    http://localhost:8080

サンプルアプリから Hello World というメッセージがページに表示されます。ターミナル ウィンドウで Ctrl+C キーを押してウェブサーバーを終了します。

Hello World を App Engine にデプロイして実行する

App Engine フレキシブル環境にアプリをデプロイするには:

  1. appengine/flexible/helloworld ディレクトリで次のコマンドを実行して、Hello World アプリをデプロイします。

    gcloud app deploy

    オプションのフラグをご覧ください。

    共通の gcloud コマンドフラグ

    • アプリのバージョンを一意に識別する ID を指定するには --version フラグを含めます。このフラグを含めない場合は自動的に生成されます。例: --version [YOUR_VERSION_ID]
    • gcloud ツールでデフォルトとして初期設定したものに代わる Google Cloud プロジェクト ID を指定するには、--project フラグを指定します。例: --project [YOUR_PROJECT_ID]

    例:

    gcloud app deploy --version pre-prod-5 --project my-sample-app

    コマンドラインからアプリをデプロイする方法について詳しくは、アプリのテストとデプロイをご覧ください。すべてのコマンドフラグの一覧については、gcloud app deploy リファレンスをご覧ください。

  2. ブラウザを起動し、https://PROJECT_ID.REGION_ID.r.appspot.com にアクセスしてアプリを表示します。

    gcloud app browse
    ここで PROJECT_ID は、Google Cloud プロジェクト ID です。

今回、Hello World メッセージが表示されるページは、App Engine インスタンスで実行されているウェブサーバーから配信されます。

これで完了です。App Engine フレキシブル環境に最初の App Engine アプリケーションをデプロイしました。

アプリケーションのデプロイでエラーが発生した場合は、トラブルシューティングのヒントをご覧ください。

クリーンアップの詳細については、以下の説明をご覧ください。また、活用できる次のステップへのリンクも併せてご確認ください。

クリーンアップ

課金されないようにするには、Google Cloud プロジェクトを削除してプロジェクト内のすべてのリソースへの課金を停止します。

  1. Google Cloud コンソールで、[リソースの管理] ページに移動します。

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

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

次のステップ

プラットフォーム全体について学習する

App Engine アプリの開発とデプロイについて概要を理解した後は、Google Cloud の残りの部分についても確認します。すでに Google Cloud CLI がインストールされているため、Cloud SQL、Cloud Storage、Firestore などのプロダクトを操作するツールを使用できます。

App Engine フレキシブル環境について学習する

App Engine についてさらに理解を深めるためのトピックをご紹介します。

Hello World コードレビュー

Hello World は、サービスが 1 つだけ含まれ、バージョンも 1 つだけで、すべてのコードがアプリケーションのルート ディレクトリにあるという、最もシンプルな App Engine アプリケーションです。このセクションでは、このアプリの各ファイルを詳しく説明します。

index.php

index.php ファイルには、サーバーの起動とリクエストへの応答を行う PHP コードが含まれています。このサンプルでは Slim を使用していますが、他の PHP ウェブ フレームワークも使用できます。

このコードは、新しい Slim Application オブジェクトを作成し、2 つの異なる GET ルートを定義します。

require_once __DIR__ . '/../vendor/autoload.php';

use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Message\ResponseInterface as Response;
use Slim\Factory\AppFactory;

// Create App
$app = AppFactory::create();

// Display errors
$app->addErrorMiddleware(true, true, true);

$app->get('/', function (Request $request, Response $response) {
    $response->getBody()->write('Hello World');
    return $response;
});

$app->get('/goodbye', function (Request $request, Response $response) {
    $response->getBody()->write('Goodbye World');
    return $response;
});

// @codeCoverageIgnoreStart
if (PHP_SAPI != 'cli') {
    $app->run();
}
// @codeCoverageIgnoreEnd

return $app;

app.yaml

app.yaml ファイルには、アプリの次の構成が記述されます。

  • env: flex の設定。アプリで App Engine フレキシブル環境が使用されることが示されます。
  • アプリで使用するランタイムを指定します。

    runtime: php
    env: flex
    
    runtime_config:
      document_root: web
    
    # This sample incurs costs to run on the App Engine flexible environment.
    # The settings below are to reduce costs during testing and are not appropriate
    # for production use. For more information, see:
    # https://cloud.google.com/appengine/docs/flexible/php/configuring-your-app-with-app-yaml
    manual_scaling:
      instances: 1
    resources:
      cpu: 1
      memory_gb: 0.5
      disk_size_gb: 10
    

    composer.json

    composer.json を使用して、アプリの依存関係の宣言、インストール、更新を行います。

    {
      "require": {
        "slim/slim": "^4.0",
        "slim/psr7": "^1.3"
      }
    }