*

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

[php]application: helloworld
version: 1
runtime: php55
api_version: 1
[/php]

helloworld.php

[php]<?php
echo “Hello world”;
[/php]

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

関連記事

GCP愛を語る

RGCP(GCP好き以外お断り) 技術的な話ばかりの中のAdventCalendarですが、本

記事を読む

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

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

記事を読む

GAE負荷テスト その2「無料で何PVまで表示できるのか試してみた」

その1のアップからだいぶ日が経ってしまい、いつの間にか年すら変わっていましたね。。。 " GA

記事を読む

GAEのスケーリング 前編 <仕組みについて>

今回は、こちらの公式ドキュメントをもとに、GAEのスケーリングの仕組みと最適化のやり方について紹介し

記事を読む

Google App Engine Modules のScalingを試す

みなさんこんにちは。 前回の記事では、GAE Modulesの簡単なサンプルを配備し、動作を確

記事を読む

Search API詳細解説 Part6「Search API 詳細 限界値編」

みなさん、こんにちは。 前回はSearch APIの反映速度について調べてみましたが、いかがだった

記事を読む

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

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

記事を読む

GCEにPuttyから簡単接続する

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

記事を読む

GAE/GOでVideo Intelligence APIを操作してみた!!〜事前準備編〜

先週のGCP Next 17’でGoogleから新しい機械学習APIが発表されました!その名

記事を読む

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

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

記事を読む

PAGE TOP ↑