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」にしたがってインストールしていきます。
GoogleAppEngineLauncher
をApplications
フォルダにドラッグします。
GoogleAppEngineLauncher
を開くと、Make command symlinks
のプロンプトが開くので[OK]をクリックします。
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を開いて動作を確認します。
AppEngineにデプロイする
AppEngineは、Google Cloud Platformプロジェクト内の一つのサービスとして利用可能になっています。
(1アカウントでは、AppEngineが利用可能なプロジェクトは10プロジェクトまで作成できます。足りなくなった場合は申請が必要です)
Google Cloud Platform プロジェクトを作成
新規プロジェクトは、右上のプロジェクト選択メニューから作成します。
アプリケーションのデプロイ先として、HelloWorldPHP
という名前のプロジェクトを作成してみました。
作成後に表示されるダッシュボードの左上で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ログインを求められます。
[許可]をクリックするとブラウザでは、以下のメッセージが表示されてデプロイが開始されます。
http://helloworldphp-1263.appspot.com
にアクセスするとデプロイされたPHPアプリが動作していることを確認できます。
以上で、AppEngine上での基本的なPHPアプリを動作させるためのGCPコンソールの使い方と、開発手順について確認できました。
次に、PHP MVCフレームワークを利用するにあたって、Cloud SQLの使い方などを調べてみたいと思います。