*

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で使えるサービス・使えないサービス、使える関数・使えない関数、等のご紹介をしたいと思います。ご期待ください。

関連記事

GAEでWordPressを動かす

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

記事を読む

Search APIの「Faceted Search」を使ってみた

Search API詳細解説シリーズは完結しましたが、2015年2月19日のAppEngine SD

記事を読む

PageSpeedの動作を検証

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

記事を読む

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

前回のGAEの「専用Memcacheは共有Memcacheよりも本当に性能が高いのか検証する」が投稿

記事を読む

Prediction API入門(後編)

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

記事を読む

GAE/JからBigQueryへのStream Insert

今回はGAE/JからBigQueryへのStream Insertを試してみます。 BigQuer

記事を読む

GAEでよくあるエラーの発生原因と対策1

GAE上で動くWebアプリケーションに特有の例外について、弊社での運用の事例からいくつか特徴的なもの

記事を読む

たったの15分でできるGAE/GO入門 標準APIその1

知っておけば必ず開発が楽になる! GAE/Go入門の本連載ですが、前回は第一弾として「PaaS最前

記事を読む

GCEにPuttyから簡単接続する

年末ではありますが、先日ちょっとGCE(Google Compute Engine)を触る機会がまた

記事を読む

Cloud Loggingの利用方法

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

記事を読む

PAGE TOP ↑