2013年5月19日日曜日

28.Google App Engine for PHP (GAE/PHP) を早速試してみた




Ryo Yamasaki(@vierjp)です。

Google I/Oでハンズオンに参加したおかげか、
すぐにGoogle App Engine for PHPのLimited Previewを使えるようにしてもらえたので早速試してみました。

◯Google App Engine for PHP Limited Preview申し込み


・Google App Engineのアカウントとアプリの作成


申し込みは自分のGoogleアカウントに紐付いている「AppEngineの"アプリ"」に対して行います。
そのため「AppEngineのアカウントが無い」または「アプリを作成していない」という場合には、
先にアカウントとアプリの作成を行う必要があります。

比較的新しめのところでは以下のサイトが参考になるかもしれません。
egashira.jp : 初めてのGoogle App Engine

アカウントの大量取得を防ぐためか
AppEngineのアカウント登録時には携帯の電話番号やメールアドレスを使った確認があるので、
手元に携帯電話を用意しておいてください。


・Limited Previewの申し込み


Google App Engine for PHP Limited Preview申し込みサイト


中央の緑色のボタン「Register an app for the Limited Preview」を押します。

するとGoogleアカウントの権限の認可を求められるので、許可してください。

・アプリ選択画面


アプリ選択画面に来たら「PHPを使えるようにしたいアプリ」を選択し、
・AppEngine for PHPで何をしたいのか
・MemcacheやURLfetchのようなAppEngineのAPIを使う予定はあるか
・WordpressやphpMyAdminのようなアプリを使う予定はあるか
などを記述します。

最後に「Request PHP for this application」ボタンを押して申し込みは完了です。

申し込み完了直後と、実際に利用できるようになった後にメールが届きます。
また、再度「Register an app for the Limited Preview」を押すと、
現在の状況を参照することができます。

利用できるようになると以下の画面になります。

・申し込み完了画面



◯SDKのダウンロード

Installing the PHP SDK - Google App Engine — Google Developers

手順に従って以下をインストールしてください。
・Python 2.7
・PHP 5.4
・App Engine PHP SDK


◯AppEngine上で「phpinfo()」を表示してみる

適当なディレクトリに以下の内容でファイルを作成します。

・app.yaml

application: vier-test

version: phpinfo

runtime: php

api_version: 1



handlers:

- url: /

  script: index.php



基本的には「runtime: php」の行以外はPython版と同じ書き方のようですね。

・index.php

<?php

  phpinfo();

?>

普通はyamlとphpファイルだけなのですが、
セキュリティ都合か、デフォルトでは「phpinfo()」を実行できないようになっています。
そのため以下の内容で「php.ini」ファイルを作成して同一ディレクトリに配置します。

・php.ini

google_app_engine.enable_functions = "phpversion, phpinfo"

これで一つのディレクトリに
「app.yaml」「index.php」「php.ini」の3つのファイルが存在する状態になります。


◯デプロイする


・デプロイ方法

前項で作成したアプリのディレクトリに移動して以下を実行します。
(「appcfg.py」は展開したSDKのディレクトリにあります)

/Users/User/appengine_php_1_8_0/appcfg.py update -R --runtime=php .

認証中にGoogleアカウントのIDとPassを聞かれます。
二段階認証を設定している場合には
アプリケーション固有のパスワード」を取得するか、
上のコマンドに「--noauth_local_webserver --oauth2」を追加して実行します。


デプロイ後の「Admin ConsoleのVersion画面」です。

言語が「php」になっているのが確認できます。


実際にAppEngine上に配置した状態は、以下のURLで確認できます。
http://phpinfo.vier-test.appspot.com/


「Server API AppEngine PHP Runtime SAPI」となっているのが確認できます。


◯セッションやハンズオンの話

・Datastoreの話

前回「27.Google I/Oで発表されたGoogle Cloud Platformの新機能」にも書いた通り、
現時点でのドキュメントには「Cloud SQLを使う方法」しか書いていませんが
一応セッションではDatastoreにアクセスするコードがありました。
また、新プロダクトの「Cloud Datastore」はJSON APIを使えるので、こちらはPHPからも利用できると思います。


・WordPressは動きそう

セッション内でWordPressの話があったので「Cloud SQL」と組み合わせることで動作するんじゃないでしょうか。

* 2013/05/21追記
コメントでneranさんから教えていただきましたがドキュメントに思いっきり書いてありますね。
Running WordPress - Google App Engine — Google Developers

* 2013/05/22追記
実際に試してみたので詳細については次の記事
29.Google App Engine for PHPでWordPressを動かしてみた」をどうぞ。


・phpMyAdminもAppEngine上で動くかも

ハンズオンでは、CloudSQLを操作するために「AppEngine上に配置したphpMyAdmin」を使用しました。



ハンズオン用に最初から用意されていたので、
完全に素で動くのか、いくらか修正が必要なのかはわかりませんが、
一応AppEngine上で動作させる事はできるようです。


以上、今回もサンフランシスコからでした。(´▽`)


4 件のコメント:

  1. WordPressは公式にチュートリアルがありますね。

    Running WordPress - Google App Engine — Google Developers
    https://developers.google.com/appengine/articles/wordpress

    返信削除
  2. ほんとだ!ありがとうございますヽ(´▽`)ノ
    このブログの初コメントもありがとうございますw

    返信削除
  3. BigQuery周りとか、いつも濃くて美味しい記事をありがとうございます。
    PHPも、まだデプロイ許可もらえてないんで、めっちゃ参考になります。

    MediaWikiとMODX辺りを試そうと考えてるんで、$_FILESのハマりも参考になりました。
    Modelが綺麗なプロダクトなら、Datastoreへの移植も試してみようと思います。

    返信削除
  4. ありがとうございます!そう言っていただけるととても励みになりますヽ(´▽`)ノ
    neranさんはPHP得意そうですね。
    Datastoreを使う形に移植できたら本当にいくらでもスケールするアプリが出来上がりそうで、素晴らしいですね。
    健闘を祈ります。(`・ω・´)ゞ

    返信削除