Google App Engine 入門 (PHP)

木内智史之介(シャッチョー)
ミンカさんけっこんしてくださいおねがいします(ズザー SEGAさん、DIVAの筐体ください(ズザー

Google App Engine とは?

正直なところ、僕も「Google App Engineとは」なんて、そんな偉そうに説明をできるほど知っているわけではないです。
今回、なんとなく使ってみようと思い、ひとまずインスタンスでも作ってみるかと触ってみたところ、ついでなので その記録を取っておこうと思った次第です。

誤解があるかどうかも分からない状態ですが、現在の認識ベースで言うと、

Google App Engineとは、AWSのめんどくさいところを単純化して、アプリケーション開発に集中しやすくしたもの

という感じでしょうか?

以降、Google App Engine = GAEと記載させていただきます。めんどいんだぜ…。

GAEがしてくれること

  • httpd, php, mysqldとかインストールしないでもいけますぜ!
  • 高負荷時のオートスケーリング

今日のミンカ

http://ameblo.jp/minka-ri/entry-12054095342.html

うむ。かわいい。その髪の毛、クンカクンカさせてください。

簡単なPHPアプリケーションを動かすまで

Google App Engine SDKのインストール

後々使用するので、まずはGoogle App Engine SDKのインストールを済ませておきましょう。
今回はPHPでのアプリ構築を想定しているので、PHP向けのSDKをインストールします。

https://cloud.google.com/appengine/downloads?hl=ja

インストール後、アプリケーションを起動すると、コマンド関係のシンボリックリンクが張られ、GAE用のコマンドが使用可能になります。

プロジェクトの作成

GAEでは、インスタンスの管理から、費用請求まで、全てプロジェクト単位になります。
プロジェクト作成は、Google Developers Consoleから行います。

Google Developers Console

簡易アプリケーションをデプロイしてみる

簡易ソースコードをダウンロードして解凍をおこなったら、コンソールを開き、デプロイします。

$ appcfg.py -A [project-id] update appengine-try-php

すると、ブラウザが開き、権限の許可確認プロンプトが表示されるので、サクッと許可しましょう。

Authentication successful.

おk!ただし…

02:20 AM Scanning files on local disk.
Error 400: --- begin server output ---
PHP 5.4 applications are prevented from being deployed to Google App Engine from any version of the SDK, including older ones. If you need to continue to deploy PHP 5.4 applications for compatibility reasons, you can request that your application be whitelisted for PHP 5.4 deployment by visiting http://goo.gl/qjKEuk.
--- end server output ---

なんか言ってる!PHP 5.4はなんかいかん感じですかね?PHP 5.5を指定するには、app.yamlをいじればいいらしいです。

appengine-try-php/app.yaml

runtime: php55

その上で再度デプロイしてみましょう。

$ appcfg.py -A [project-id] update appengine-try-php
02:29 AM Application: [project-id] (was: helloworld); version: 1
02:29 AM Host: appengine.google.com
02:29 AM
Starting update of app: [project-id], version: 1
02:29 AM Getting current resource limits.
02:29 AM Scanning files on local disk.
02:29 AM Cloning 2 application files.
02:29 AM Compilation starting.
02:29 AM Compilation completed.
02:29 AM Starting deployment.
02:29 AM Checking if deployment succeeded.
02:29 AM Deployment successful.
02:29 AM Checking if updated app version is serving.
02:29 AM Completed update of app: [project-id], version: 1

いったっぽい!

ブラウザからアクセスしてみると…

ぱーふぇくと☆
天才か。キミは天才か。

次回は、簡易コードではなく、もうちょっと本格的なコードでも運用できるのか検証したいと思います。