*

App Engine for PHP ベータ版から正式版へ

公開日: : 投稿者: GAE

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

それぞれのファイルの内容は次の通りです。
app.yaml

application: helloworld
version: 1
runtime: php55
api_version: 1

helloworld.php

<?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.


「Deployment successful」と返ってくればアプリのデプロイが完了です。

ブラウザに次のURLを入力して確認します(「helloworld」 はアプリケーションIDです)。
http://helloworld.appspot.com/
gae4phphello
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で使えるサービス・使えないサービス、使える関数・使えない関数、等のご紹介をしたいと思います。ご期待ください。

関連記事

Cloud Loggingの利用方法

はじめに 本記事はGoogle Cloud Platformの公式ページで公開されている「Goog

記事を読む

GAE負荷テスト その1「Hello World!」

2011年11月にGAEのプレビューが終わり、早数ヶ月経ちました。 これからGAEでの開発に乗り出

記事を読む

Prediction API入門(後編)

今回はPrediction API on GAE/J みなさん、こんにちは。Prediction

記事を読む

GAEでWordPressを動かす

これは2014年時点での記事になります。 2015年版の記事がありますのでそちらをご参照下さい。

記事を読む

Google App Engine コンソールの小技

みなさんご存知、GAEのコンソールにはさまざまな機能があります。 あなたがデプロイしたアプリケ

記事を読む

PageSpeedの動作を検証

皆さん、こんにちは。 突然ですが、皆さんはPageSpeedというサービスをご存知でしょうか?

記事を読む

静的HTMLをGAE上で公開する

みなさんこんにちは。 本日は、静的HTMLをGAEで公開する手順を紹介します。 本サイトを運営し

記事を読む

1つのエンティティにプロパティをいくつまで作れるか

1つのエンティティにプロパティをいくつまで作れるか 1つのエンティティにプロパティをいくつまで

記事を読む

Search API詳細解説 Part3「Search APIの使い方 検索編」

Search API詳細解説シリーズ タイトル Part1Search API 概要説明

記事を読む

専用Memcacheは共有Memcacheよりも本当に性能が高いのか検証する

GAEでMemcacheを利用した経験はありますでしょうか? MemcacheとはGAEで利用

記事を読む

PAGE TOP ↑