App Engine フレキシブル環境で PHP アプリを作成する
このクイックスタートでは、ショート メッセージを表示するアプリを作成してデプロイする方法を説明します。このクイックスタートのサンプル アプリケーションは、app.yaml ファイルでランタイム バージョンとオペレーティング システムを指定することで、サポート対象の任意の PHP バージョンで使用できます。
始める前に
- アカウントに Google Cloud ログインします。 を初めて使用する場合は Google Cloud、 アカウントを作成して、実際のシナリオで Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud 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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud Build API.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Google Cloud CLI をインストールします。
-
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
-
gcloud CLI を初期化するには、次のコマンドを実行します:
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud 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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud Build API.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Google Cloud CLI をインストールします。
-
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
-
gcloud CLI を初期化するには、次のコマンドを実行します:
gcloud init
必要なロール
このクイックスタートを完了するために必要な権限を取得するには、管理者に次の IAM ロールを付与するよう依頼してください。
- プロジェクトに対する App Engine 管理者 (
roles/appengine.appAdmin) - プロジェクトに対する Cloud Build 編集者 (
roles/cloudbuild.builds.editor) - Storage オブジェクト管理者 (
roles/storage.objectAdmin)プロジェクトに対する - ログビューア (
roles/logging.viewer)プロジェクトに対する - サービス アカウントに対する サービス アカウント ユーザー(
roles/iam.serviceAccountUser) -
App Engine のデフォルト サービス アカウントに次のロールを付与するよう管理者に依頼します:
- Artifact Registry 読み取り (
roles/artifactregistry.reader)プロジェクトに対する - Cloud Build サービス アカウント (
roles/cloudbuild.builds.builder) プロジェクトに対する - ストレージ オブジェクト閲覧者 (
roles/storage.objectViewer) プロジェクトに対する
- Artifact Registry 読み取り (
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
追加の前提条件
プロジェクトで App Engine アプリケーションを初期化し、そのリージョンを選択します。
gcloud app create --project=[YOUR_PROJECT_ID]表示された指示に従って、App Engine アプリケーションを配置するリージョンを選択します。
ローカルマシンに以下をインストールします。
- Git をダウンロードしてインストールします。
- PHP をインストールします。
依存関係を管理するには、Composer をダウンロードし、Composer 実行可能ファイルがグローバルにインストールされていることを確認します。
App Engine のロケーション
App Engine はリージョナルです。つまり、アプリを実行するインフラストラクチャは特定のリージョンに配置され、そのリージョン内のすべてのゾーンで冗長的に利用できるように Google が管理しています。
レイテンシ、可用性、耐久性の要件を満たすことが、アプリを実行するリージョンを選択する際の主な要素になります。一般的には、アプリのユーザーに最も近いリージョンを選択できますが、App Engine が使用可能なロケーションと、アプリが使用するその他のGoogle Cloud プロダクトおよびサービスのロケーションを考慮する必要があります。使用するサービスが複数のロケーションにまたがっていると、アプリのレイテンシだけでなく、料金にも影響する可能性があります。
設定したアプリのリージョンは変更できません。
すでに App Engine アプリケーションを作成している場合は、次のいずれかの方法でそのリージョンを表示できます。
gcloud app describeコマンドを実行します。Google Cloud コンソールの App Engine ダッシュボードを開きます。ページの上部にリージョンが表示されます。
Hello World アプリをダウンロードする
App Engine 用の Hello World アプリが用意されており、 Google Cloudへのアプリのデプロイをすぐに試すことができます。
Hello World サンプルアプリ リポジトリのクローンをローカルマシンに作成します。
git clone https://github.com/GoogleCloudPlatform/php-docs-samples.gitまたは、zip 形式のサンプルをダウンロードし、ファイルを抽出してもかまいません。
サンプルコードが含まれているディレクトリに移動します。
cd php-docs-samples/appengine/flexible/helloworld
ローカルマシン上で Hello World を実行する
ローカルのパソコンで Hello World アプリを実行する手順は次のとおりです。
依存関係をインストールします。
composer installローカルのウェブサーバーを起動します。
php -S localhost:8080 -t web/ウェブブラウザに次のアドレスを入力します。
サンプルアプリから Hello World というメッセージがページに表示されます。ターミナル ウィンドウで Ctrl+C キーを押してウェブサーバーを終了します。
Hello World を App Engine にデプロイして実行する
App Engine フレキシブル環境にアプリをデプロイする手順は次のとおりです。-
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リファレンスをご覧ください。 -
アプリケーションのバージョンを一意に識別する ID を指定するには、
-
ブラウザを起動し、
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 を削除することで、プロジェクト内のすべてのリソースに対する課金を 停止できます。
- コンソール Google Cloud で [**リソースの管理**] ページに移動します。
- プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
- ダイアログでプロジェクト ID を入力し、 [Shut down] をクリックしてプロジェクトを削除します。
次のステップ
プラットフォーム全体について学習する
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 コードが含まれています。このサンプルでは Silm を使用していますが、他の PHP ウェブ フレームワークも使用できます。
このコードは、新しい Slim Application オブジェクトを作成し、2 つの異なる GET ルートを定義します。
app.yaml
app.yaml ファイルには、アプリの次の構成が記述されます。
env: flexの設定。アプリで App Engine フレキシブル環境が使用されることが示されます。アプリで使用するランタイムを指定します。
PHP ランタイムの動作の詳細については、 PHP ランタイムをご覧ください。
バージョンとサービスを利用するアプリの作成方法の詳細については、App Engine の概要をご覧ください。
App Engine の構成の詳細については、app.yaml によるアプリの構成をご覧ください。
composer.jsoncomposer.jsonを使用して、アプリの依存関係の宣言、インストール、更新を行います。