PHP で Hello World を実行する方法

Google Cloud Platform で実行される PHP アプリのデプロイは簡単に始めることができます。作成したアプリは、Google サービスと同じインフラストラクチャで実行されるため、ユーザーの数に関わらず、すべてのユーザーに確実にサービスを提供することができます。このチュートリアルでは、簡単な Hello World アプリをデプロイします。

このチュートリアルは、PHP に精通し、PHP 5.6、7.0、または 7.1 がインストールされていることを前提としています。Composer をダウンロードする必要もあります。このチュートリアルでは、Composer 実行可能ファイルがグローバルにインストールされていることを前提とします。

これは、Google Cloud Platform での PHP の使用方法シリーズに含まれています。「始める前に」の準備作業を完了してから、チュートリアルを実施してください。チュートリアルは約 10 分で完了します。

始める前に

このサンプルを実行する前に、次の手順を行います。

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

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

  2. 次の前提条件をローカルにインストールします。
    1. git をダウンロードしてインストールします
    2. Composer をダウンロードしてインストールします。Composer 実行可能ファイルはグローバルにインストールしてください。
    3. Google Cloud SDK のダウンロード、インストール、初期化を行います。
      SDK をダウンロード
  3. 別の方法として、既にインストール済みのこれらの前提条件に付属している Google Cloud Shell を使用することもできます。

Google App Engine フレキシブル環境での PHP アプリの実行

App Engine フレキシブル環境では、標準の PHP ウェブアプリを簡単にデプロイし、実行できます。フレキシブル環境では、スケーリング、モニタリング、負荷分散のインフラストラクチャが提供されるので、アプリの作成に専念することができます。

フレキシブル環境で PHP アプリを実行するには、次のものが必要です。

  • アプリのランタイム設定が記述されている app.yaml ファイル

アプリのダウンロードと実行

Cloud Platform にアプリをデプロイする方法を習得するため、PHP で作成した簡単な Hello World サンプルアプリを使用します。事前の準備が完了したら、Hello World サンプルアプリをダウンロードしてデプロイします。ここでは、アプリを入手してローカルで実行する手順を説明します。

Hello World アプリのクローンを作成する

Hello World サンプリアプリをローカルマシンにコピーします。

git clone https://github.com/GoogleCloudPlatform/getting-started-php.git

サンプルコードのあるディレクトリに移動します。

cd getting-started-php/1-hello-world

zip ファイルとしてサンプルをダウンロードして展開することもできます。

ローカルのパソコンでアプリを実行する

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

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

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

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

    http://localhost:8000
    

サンプルアプリの Hello World というメッセージがページに表示されます。このページは、ローカルのパソコン上のウェブサーバーから提供されています。

次に進む準備ができたら Ctrl+C キーを押して、ローカルのウェブサーバーのプロセスを終了します。

Hello World コードレビュー

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

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

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

$app = new Silex\Application();

$app->get('/', function () {
    return 'Hello World';
});

$app->get('/goodbye', function () {
    return 'Goodbye World';
});

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

return $app;

Cloud Platform での Hello World の実行

ここでは、App Engine フレキシブル環境に Hello World アプリをデプロイする手順を説明します。次の図は、Cloud Platform にアプリをデプロイするプロセスを表しています。

Hello World アプリのデプロイ プロセスと構造

App Engine フレキシブル環境では、コンテナを実行して Compute Engine インスタンスをプロビジョニングします。インスタンスの数は、トラフィックの量に応じて増加します。詳細については、App Engine フレキシブル環境を参照してください。フレキシブル環境に代わる選択肢については、Google Cloud Platform サービスの概要を参照してください。

Cloud Platform にアプリをデプロイする

次のコマンドを入力して、サンプルをデプロイします。

gcloud app deploy

クラウドでのアプリの実行を確認する

ウェブブラウザで次のアドレスを入力します。

https://<your-project-id>.appspot.com

今回の Hello World メッセージが表示されるページは、Google Cloud Platform で実行されているウェブサーバーから配信されます。

アプリを更新する場合は、最初にデプロイしたときと同じコマンドを使って更新バージョンをデプロイできます。デプロイを行うと、アプリの新しいバージョンが作成され、それがデフォルトのバージョンに設定されます。古いバージョンはそのまま残り、関連付けられた VM インスタンスも同様に残ります。これらのアプリ バージョンと VM インスタンスはすべて課金対象のリソースとなるのでご注意ください。VM インスタンスを削除または停止する方法については、クリーンアップを参照してください。

これで完了です。 これで Google Cloud Platform に最初の PHP アプリがデプロイできました。

次に、アプリを Google Cloud Platform で実行するために必要な設定について説明します。

App Engine フレキシブル環境の設定

最初に説明したように、フレキシブル環境でアプリを実行するには次のファイルが必要です。

  • app.yaml
  • Dockerfile

ここでは、それぞれの要件について詳しく説明します。

アプリの設定

app.yaml ファイルには、アプリのデプロイ設定が記述されています。

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/python/configuring-your-app-with-app-yaml
manual_scaling:
  instances: 1
resources:
  cpu: 1
  memory_gb: 0.5
  disk_size_gb: 10

この app.yaml ファイルでは、アプリがカスタム ランタイムとフレキシブル環境を使用することが指定されています。フレキシブル環境の設定の詳細については、App Engine フレキシブル環境をご覧ください。

Docker

Dockerfile には、アプリが使用するランタイム環境が記述されています。Hello World アプリは gcr.io/php-mvm-a/php-nginx ランタイム環境を使用します。

このアプリは Docker で実行されるため、変更なしに Google Kubernetes EngineKubernetes などの Docker ホストで実行できます。

次のステップ: Bookshelf アプリを作成する

Bookshelf アプリのロゴ

Bookshelf アプリを作成する

Hello World のデプロイが完了しました。次に Bookshelf サンプルアプリに進みましょう。Bookshelf アプリは少し複雑です。データ ストレージ、承認、ロギングなど、複数の Cloud Platform 機能を使用しますが、基本的な PHP ウェブアプリです。

クリーンアップ

チュートリアルを完了し、割り当てたリソースをクリーンアップする場合は、クリーンアップをご覧ください。