Google App Engine PHP開発の進め方


AppEngineは、構成選択肢がだいぶ増えておりPHPに加えて、Go、Node.js、Dockerなど様々なプラットフォームが利用可能になっています。
PHPについては、2015.6.16に正式サポートされるようになっています。
App Engine for PHP is generally available. Build scalable apps, faster.

PHPアプリを動かすプラットフォームを改めて検討することになりそうなので、App Engine SDK for PHPの使い方を調べています。
まずは、Hello Worldからですが、AppEngineは、現在Google Cloud Platformの1つのサービスとして利用可能になっています(しばらく触っていなかったのでその辺りも一から調べ直してます)。
昔のコンソール https://appengine.google.com もまだ利用可能なようですが、CGPプロジェクトを作成してAppEngineにデプロイする手順を確認しています。

手順は、Mac OS X El Capitanで確認しました。
SDKを利用するには、前提条件としてPython 2.7が必要です。El Capitanはデフォルトで利用可能なので、Pythonのセットアップと確認は省略しています。

Google App Engine SDK for PHPのインストール

Google App Engine SDK for PHPを開きMac OS XのGoogleAppEngineLauncher-1.9.35.dmg (2016.3.27現在)をダウンロードします。

「Installing on Mac OS X」にしたがってインストールしていきます。

GoogleAppEngineLauncherApplicationsフォルダにドラッグします。
GoogleAppEngineLauncherを開くと、Make command symlinksのプロンプトが開くので[OK]をクリックします。

Google App Engine SDK for PHPコマンドへのシンボリックリンク作成を確認するプロンプト

SDKの各種コマンドは、ディレクトリ/usr/local/google_appengineに展開されます。

Hello Worldアプリの実装

Hello, World! in 5 Minutsの内容を確認してみます。

Github: GoogleCloudPlatform/appengine-php-guestbook

まずは、プロジェクト用のディレクトリを作成します。

$ mkdir helloworld

Hello World!のみを表示する最小限のリクエストハンドラーを記述します。

// helloworld.php
<?php
  echo 'Hello, World!';

app.mlを作成

// app.yml
runtime: php55
api_version: 1

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

PHPのバージョンは5.5のみ、2016.6にサポート切れだが。。
ググると、5.6や7を使いたい場合はManaged VMを利用しろという情報しか出てきません。。

ローカルサーバーで動作を確認してみます。

ローカルサーバーの起動(この辺りはPython版と同じですね)

$ /usr/local/google_appengine/dev_appserver.py .
Allow dev_appserver to check for updates on startup? (Y/n): Y
dev_appserver will check for updates on startup.  To change this setting, edit /Users/hrendoh/.appcfg_nag
INFO     2016-03-27 11:04:04,816 sdk_update_checker.py:229] Checking for updates to the SDK.
INFO     2016-03-27 11:04:05,116 sdk_update_checker.py:257] The SDK is up to date.
WARNING  2016-03-27 11:04:05,286 simple_search_stub.py:1126] Could not read search indexes from /var/folders/ck/3crp4y3d6tv99mynkzcybh_40000gn/T/appengine.None.hrendoh/search_indexes
INFO     2016-03-27 11:04:05,290 api_server.py:205] Starting API server at: http://localhost:54233
INFO     2016-03-27 11:04:05,294 dispatcher.py:197] Starting module "default" running at: http://localhost:8080
INFO     2016-03-27 11:04:05,296 admin_server.py:116] Starting admin server at: 

ブラウザで、http://localhost:8080を開いて動作を確認します。

google-app-engine-sdk-for-php-test-helloworld-app-in-local

AppEngineにデプロイする

AppEngineは、Google Cloud Platformプロジェクト内の一つのサービスとして利用可能になっています。
(1アカウントでは、AppEngineが利用可能なプロジェクトは10プロジェクトまで作成できます。足りなくなった場合は申請が必要です)

Google Cloud Platform プロジェクトを作成

新規プロジェクトは、右上のプロジェクト選択メニューから作成します。

google-app-engine-sdk-for-php-create-project-menu

アプリケーションのデプロイ先として、HelloWorldPHPという名前のプロジェクトを作成してみました。

Google Cloud Platformプロジェクトの作成

作成後に表示されるダッシュボードの左上でApp IDを確認できます。

Google Cloud Platformプロジェクトの詳細 App IDの確認
App IDは、helloworldphp-1263が割り当てられました。

コマンドでデプロイ

appcfg.pyコマンドで、作成したプロジェクトにデプロイします。
-AオプションにプロジェクトのApp ID helloworld-1263を指定します。

$ /usr/local/google_appengine/appcfg.py -A helloworldphp-1263 -V v1 update .
08:49 PM Application: helloworldphp-1263 (was: None); version: v1 (was: None)
08:49 PM Host: appengine.google.com
08:49 PM Starting update of app: helloworldphp-1263, version: v1
08:49 PM Getting current resource limits.
Your browser has been opened to visit:

    https://accounts.google.com/o/oauth2/auth?scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fappengine.admin+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloud-platform+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2F&response_type=code&client_id=550516889912.apps.googleusercontent.com&access_type=offline

If your browser is on a different machine then exit and re-run this
application with the command-line parameter 

  --noauth_local_webserver

Authentication successful.
08:49 PM Scanning files on local disk.
08:49 PM Cloning 2 application files.
08:49 PM Compilation starting.
08:49 PM Compilation completed.
08:49 PM Starting deployment.
08:49 PM Checking if deployment succeeded.
08:49 PM Deployment successful.
08:49 PM Checking if updated app version is serving.
08:50 PM Completed update of app: helloworldphp-1263, version: v1

デフォルトでは、ブラウザが開きOAuthログインを求められます。

AppEngineへデプロイするためにOAuth認証を許可

[許可]をクリックするとブラウザでは、以下のメッセージが表示されてデプロイが開始されます。

AppEngineへデプロイするためのOAuth認証許可完了

http://helloworldphp-1263.appspot.comにアクセスするとデプロイされたPHPアプリが動作していることを確認できます。

デプロイされたアプリケーションの動作を確認

以上で、AppEngine上での基本的なPHPアプリを動作させるためのGCPコンソールの使い方と、開発手順について確認できました。
次に、PHP MVCフレームワークを利用するにあたって、Cloud SQLの使い方などを調べてみたいと思います。

, ,