PHP App Engine スタンダード環境のクイックスタート

このクイックスタートでは、短いメッセージを表示する小さな App Engine アプリケーションを作成する方法について説明します。

料金

このガイドの実行に伴う費用はありません。このサンプルアプリを実行するだけなら、無料の割り当てを超過することはありません。

始める前に

このクイックスタートを実行してデプロイする前に、次の手順で App Engine 用に GCP プロジェクトを設定し、Cloud SDK をインストールする必要があります。

  1. GCP Console を使用して、新しい GCP プロジェクトと App Engine アプリケーションを作成します。

    App Engine に移動

    プロンプトが表示されたら、App Engine アプリケーションを配置するリージョンを選択します。App Engine アプリケーションを作成すると、ダッシュボードが開きます。

  2. Cloud SDK をダウンロードしてインストールします。Cloud SDK ページの手順に従って、gcloud コマンドライン ツールで GCP プロジェクト ID を初期化して設定します。

    SDK をダウンロード

  3. 次のコマンドを実行して、PHP 用の App Engine 拡張機能が含まれる gcloud コンポーネントをインストールします。

    gcloud components install app-engine-php
    

App Engine のロケーション

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

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

App Engine は次のリージョンで利用できます。

  • northamerica-northeast1(モントリオール)
  • us-central(アイオワ)
  • us-west2(ロサンゼルス)
  • us-east1(サウスカロライナ)
  • us-east4(バージニア北部)
  • southamerica-east1(サンパウロ)*
  • europe-west(ベルギー)
  • europe-west2(ロンドン)
  • europe-west3(フランクフルト)
  • asia-northeast1(東京)
  • asia-south1(ムンバイ)
  • australia-southeast1(シドニー)

* サンパウロ リージョンをご利用のお客様には、すべてのリージョナル プロダクト SLA が引き続き有効です。ただし、北米と南米を対象とするマルチリージョン機能およびクロスリージョン機能は、可用性またはパフォーマンスが一時的に低下する可能性があります。

アプリのリージョンを設定した後で変更することはできません。

App Engine アプリケーションがすでに作成してあれば、gcloud app describe コマンドを実行するか GCP Console の App Engine ダッシュボードを開くことで、リージョンを表示できます。App Engine アプリケーションのリージョンは http://[YOUR_PROJECT_ID].appspot.com に表示されます。

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

PHP 用のシンプルな Hello World アプリが用意されており、Google Cloud Platform へのアプリのデプロイをすぐに試すことができます。次の手順で Hello World をローカルマシンにダウンロードしてください。

  1. Hello World サンプルアプリ レポジトリのクローンをローカルマシンの helloworld という名前のディレクトリに作成します。

    git clone -b phase0-helloworld https://github.com/GoogleCloudPlatform/appengine-php-guestbook.git helloworld
    
  2. 次に、サンプルコードを含むディレクトリに移動します。

    cd helloworld
    

あるいは、zip ファイルとしてサンプルをダウンロードして helloworld という名前のディレクトリに抽出することもできます。

アプリケーションをテストする

SDK に含まれるローカルの開発用サーバー(dev_appserver.py)を使用して、アプリケーションをテストします。

  1. アプリの app.yaml 構成ファイルがある helloworld ディレクトリ内から、次のコマンドを使用してローカルの開発用サーバーを起動します。

      python dev_appserver.py app.yaml
    

    ローカルの開発用サーバーが起動し、ポート 8080 でリクエストを待機します。問題が発生する場合は、ここをクリックしてください。

  2. ウェブブラウザで http://localhost:8080/ にアクセスしてアプリを表示します。

ローカルの開発用サーバー(dev_appserver.py)を起動

ローカルの開発用サーバーを実行するには、ディレクトリをフルパスで指定して dev_appserver.py を実行するか、PATH 環境変数に dev_appserver.py を追加します。

  • 元の App Engine SDK をインストールした場合、ツールは次の場所に配置されています。

    [PATH_TO_APP_ENGINE_SDK]/dev_appserver.py
    
  • Google Cloud SDK をインストールした場合、ツールは次の場所に配置されています。

    [PATH_TO_CLOUD_SDK]/google-cloud-sdk/bin/dev_appserver.py
    

    ヒント: Google Cloud SDK ツールを PATH 環境変数に追加し、シェルでコマンドの補完を有効にするには、次のコマンドを実行します。

    [PATH_TO_CLOUD_SDK]/google-cloud-sdk/install.sh
    

ポート番号の変更方法など、ローカルの開発用サーバーの実行について詳しくは、ローカルの開発用サーバーのリファレンスをご覧ください。

変更する

アプリケーションの開発中は、開発用サーバーを起動したままにすることができます。開発用サーバーはプロジェクト ファイルの変更を監視し、必要に応じて再読み込みします。

  1. では試してみましょう。開発用サーバーを起動したまま helloworld.php を編集して Hello, World! を変更します。 別の文字列に変更します。
  2. http://localhost:8080/ を再読み込みします。

アプリケーションをデプロイする 

アプリを App Engine にデプロイするには、app.yaml ファイルが保存されているアプリケーションのルート ディレクトリ内から次のコマンドを実行します。

gcloud app deploy

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

一般的な gcloud コマンドフラグ

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

例:

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

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

アプリケーションを表示する

ブラウザを起動して http://[YOUR_PROJECT_ID].appspot.com でアプリを表示するには、次のコマンドを実行します。

gcloud app browse

これで完了です。

このクイックスタートは以上です。

このクイックスタート後のクリーンアップの詳細と、デプロイされたアプリケーションで行う次のステップへのリンクについては、以下のセクションをご覧ください。

この Hello World アプリについて詳しくは、Hello World コードのレビュー セクションをご覧ください。

クリーンアップ

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

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

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

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

次のステップ

カスタム ドメインを使用する

App Engine アプリには、appspot.com の代わりに独自のカスタム ドメインを使用することもできます。詳しくは、カスタム ドメインと SSL を使用するをご覧ください。

Hello World のコードレビュー 

Hello World には 1 つのサービスのみ含まれ、1 つのバージョンのみ存在し、すべてのコードがアプリのルート ディレクトリに存在するため、最もシンプルな App Engine アプリです。このセクションでは、このアプリの各ファイルの詳細について説明します。 

helloworld.php

helloworld.php スクリプトは、いかなる HTTP リクエストに対してもメッセージ Hello, World! で応答します。

<?php

echo 'Hello, World!';

app.yaml

app.yaml 設定ファイルは、どの URL にどのハンドラ スクリプトを使用するかを記述します。

runtime: php55
api_version: 1
threadsafe: true

handlers:
- url: /.*
  script: helloworld.php

この設定ファイルは、上から下へ順に、アプリケーションに関する次の情報を記述しています。

  • このコードは php55 ランタイム環境、API バージョン 1 で実行されます。
  • このアプリケーションは threadsafe です。そのため、1 つのインスタンスで複数の要求を同時に処理できます。スレッドセーフは先進的な機能であるため、アプリケーションがスレッドセーフに対応するよう適切に設計されていない場合、動作にエラーが生じることがあります。
  • URL のパスが正規表現 /.*(すべての URL)に合致する場合は helloworld.php スクリプトで処理されます。

このファイルの構文は YAML です。構成オプションの全リストについては、app.yaml リファレンスをご覧ください。

トラブルシューティング 

発生する可能性のある一般的なエラー メッセージを次に示します。

ERROR: (gcloud.config.set) argument VALUE: Must be specified.
gcloud app deploy コマンドを実行しているときにこのエラーが発生した場合は、gcloud init コマンドを実行して、ツールが初期化されて GCP プロジェクト ID が設定されていることを確認する必要があります。
The development server must be started with the --php_executable_path flag set to the path of the php-cgi binary.

dev_appserver.py を実行しているときにこのエラーが発生した場合は、フラグ php_executable_path とともに dev_appserver.py を返し、php-cgi バイナリへのパスを指定する必要があります。Linux システムと Mac システムでは、次のコマンドを実行してパスを検索できます。

which php-cgi

--php_executable_path フラグを使用した dev_appserver.py コマンドは /usr/bin/php-cgi パスに設定されます。

python dev_appserver.py helloworld/ --php_executable_path /usr/bin/php-cgi

詳細 

プラットフォーム全体について学ぶ

App Engine アプリを開発し、デプロイするとどうなるかわかったところで、Google Cloud Platform の残りの部分を確認しましょう。App Engine だけでなくプラットフォーム全体を使用するアプリケーションの作成方法を学ぶチュートリアルについては、ゲストブックの作成のチュートリアルをご覧ください。このシンプルなアプリケーションを展開して、認証済み Google アカウントがパブリックページにメッセージを投稿できる本格的なゲストブック アプリケーションにします。

App Engine スタンダード環境の詳細

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

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

フィードバックを送信...

PHP の App Engine スタンダード環境