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

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

料金

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

始める前に

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

  1. Cloud SDK をダウンロードしてインストールします。

    SDK をダウンロード

    : Cloud SDK がすでにインストールされている場合は、次のコマンドを実行して更新します。

    gcloud components update
    
  2. 新しいプロジェクトを作成します。

    gcloud projects create [YOUR_PROJECT_ID] --set-as-default
    

    プロジェクトが作成されたことを確認します。

    gcloud projects describe [YOUR_PROJECT_ID]
    

    次のようなプロジェクトの詳細が表示されます。

    createTime: year-month-hour
    lifecycleState: ACTIVE
    name: project-name
    parent:
    id: '433637338589'
    type: organization
    projectId: project-name-id
    projectNumber: 499227785679
    
  3. プロジェクトで App Engine アプリを初期化し、そのリージョンを選択します。

    gcloud app create --project=[YOUR_PROJECT_ID]
    

    プロンプトが表示されたら、App Engine アプリケーションを配置するリージョンを選択します。

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

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(フランクフルト)
  • europe-west6(チューリッヒ)
  • asia-northeast1(東京)
  • asia-northeast2(大阪)
  • asia-east2(香港)
  • asia-south1(ムンバイ)
  • australia-southeast1(シドニー)

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

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

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

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 ディレクトリから、次のコマンドを使用してローカル開発用サーバーを起動します。

    dev_appserver.py app.yaml
    

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

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

ローカル開発用サーバーの実行(dev_appserver.py

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

  • 元の 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 5 アプリをデプロイするをご覧ください。すべてのコマンドフラグの一覧については、gcloud app deploy リファレンスをご覧ください。

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

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

gcloud app browse

これで完了です。

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

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

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

クリーンアップ

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

  1. GCP Console で [リソースの管理] ページに移動します。

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

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

次のステップ

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

appspot.com の代わりに独自のカスタム ドメインを使用して、App Engine アプリを提供できます。詳細については、カスタム ドメインと 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)に合致する場合、その 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 で を再実行し、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 についてさらに理解を深めるためのトピックをご紹介します。