GCPBlogの記事によると App Engine for PHP(PHPアプリをGoogle App Engine上で動作させること) がベータ版から正式版(SLA対象)になりました。
App Engineをご存じ無い方はこちらをまずご覧ください。
App Engine for PHP の一般向けオープン記念に App Engine for PHP の特徴・できること・できないことを紹介したいと思います。
目次
App Engine for PHP の主な特徴(オンプレとの比較)
- アプリがデプロイされるサンドボックス環境では他のアプリからの影響を受けない。
- App Engine メール(メール送信サービス)、URL fetch(外部とのhttp通信)、ユーザサービス(Googleアカウント認証)などのサービスが使える。
- ファイルシステムが使用不可なので Cloud Storage を使用してファイルの読み書きを行う。
- リクエストを60秒以内に抑えなければならない。オーバーロードを避けるため長い処理になるリクエストは強制的に終了させられる。
- システムコールなどは使えるものと使えないものがある。
App Engine にはファイルをサーバ上で変更してその場で保存といったことができません。ファイルシステムの代わりにCloud Storageを使わなければならないというのが慣れないかもしれません。またレスポンスを返すのに時間が1分以上もかかる長いレスポンスは返せないので、長時間処理についてはTaskQueueを使用して工夫する必要があります。
オンプレ等の環境でWebアプリを動かすのとは主にこの辺りに違いがあります。
PHPアプリケーションをGAEで動かしてみる
プロジェクトの最小構成はapp.yamlとphpファイル
PHPアプリケーションを早速 App Engine 上で動かしてみます。PHPプロジェクトはapp.yamlと1つのphpファイルの最低2つのファイルがあれば動きます。
こちらに Hello World と表示されるだけのサンプルアプリ が用意されていますので確認してみましょう。
このzipファイルを解凍すると、app.yaml と helloworld.php の2つのファイルが入っています。
appengine-try-php ┬ app.yaml
└ helloworld.php
それぞれのファイルの内容は次の通りです。
application: helloworld
version: 1
runtime: php55
api_version: 1
<?php
echo “Hello world”;
app.yaml は、アプリケーションID、PHPバージョン、パスのハンドリングが記述されているアプリケーション設定ファイルです。application はデプロイ先のアプリケーションID、version はアプリケーションのバージョンを指定します。runtime と api_version は PHPランタイムの PHPバージョンと APIバージョンを指定します。これらは両方とも書き換えません。runtime は現在 PHP 5.5 のみ対応しているので PHP 5.5 を設定してください。 api_version は 1 のみ指定できます。
アプリケーションを App Engine にデプロイするには SDK が必要になるので、 Google App Engine SDK から「Google App Engine SDK for PHP」をダウンロードします。
※App Engine SDK for PHPを動かすために予め Python 2.7 をインストールしておきます。
コンソールからデプロイコマンド(update)を実行して確認します。
-AオプションをつけてアプリケーションIDを指定します。appengine-try-php はデプロイするプロジェクト一式です。
$ appcfg.py -A helloworld update appengine-try-php
Starting update of app: helloworld, version: 1
05:27 PM Getting current resource limits.
05:27 PM Scanning files on local disk.
05:27 PM Cloning 140 application files.
05:27 PM Compilation starting.
05:27 PM Compilation completed.
05:27 PM Starting deployment.
05:27 PM Checking if deployment succeeded.
05:27 PM Deployment successful.
05:27 PM Checking if updated app version is serving.
05:27 PM Completed update of app: helloworld, version: 1
05:27 PM Uploading task queue entries.
ブラウザに次のURLを入力して確認します(「helloworld」 はアプリケーションIDです)。
http://helloworld.appspot.com/
app.yamlとhelloworld.phpだけで構成されたアプリが動きました。
PHP on GAEの簡単解説まとめ
以上、非常に簡単ですがPHP on GAEにてアプリを起動させられました。
静的コンテンツや簡単なPHPのみのサイトであればこれでほぼ無料の範囲でWebサイトの公開が可能になります。しかもほぼ無限のスケーラビリティと高い可用性を持ったサーバです。
CloudSQL(こちらは有料)等を組み合わせることでCMS(Wordpressなど)も動作させることが出来ますし(WordPress on GAEを動かしてみた記事はこちら)、デザイナーの方がデザイン(と少しのPHP知識等)のみに注力してインフラを考慮せずにWebサイト運用が可能になります。
是非皆様もPHP on GAEを利用してサイトを公開してみてください。
弊社でも当サイトや伊豆半島のダイビングガイド等をPHP on GAEで運用しております。
次回以降、もう少し詳しくPHP On GAEで使えるサービス・使えないサービス、使える関数・使えない関数、等のご紹介をしたいと思います。ご期待ください。