イケてる SaaS を作りたい (koni blog)

SNS管理ツール「SocialDog」を運営する株式会社AutoScale代表 小西将史のブログです。イケてるSaaSを目指して日々奮闘しています。

5分でPHPアプリをGoogle App Engineで動かす

以前紹介したGoogle App Engineですが、本当に簡単に動くところまでいけるので、5分で動かすところまで行ってみましょう。

<2017/4/20 追記> だいぶやり方が変わっているので、全面的に見直しました。

手順① Google Cloud Platform の登録とGAEのリージョンの指定

以下から、アカウントを作成し、任意の名前でプロジェクトを作成します。作成したアプリケーションのURLは、「プロジェクトID」で決まります。プロジェクトIDは全世界でグローバルで、あとから変えられませんので、慎重に決めましょう。

Google Cloud Platform

f:id:konisimple:20170326005105p:plain

またクレカが必要ですが、無料枠があるのと、3万円の無料利用分があるので、テスト程度では課金されません。

次に左上のメニューからGAEのページを開き、下のような画面でリージョンだけ指定しておきます。

東京にする場合は、asia-northeast1を選択します。

f:id:konisimple:20170111002130p:plain

手順② SDKのインストール

以下から必要なSDKをインストールします。 インストールすると、デプロイ用のコマンドと、ローカル用の開発環境が使えるようになります。

Cloud SDK のインストール  |  Cloud SDK のドキュメント  |  Google Cloud Platform

どの方法でもいいですが、とりあえず入れる方は「対話型インストーラ」が簡単でおすすめです。

  1. ターミナルで以下コマンドを実行。途中でインストールするディレクトリや、パスを通すか、コマンドの補完をするか聞かれます。よくわからない場合は、すべてデフォルトでOKです。
curl https://sdk.cloud.google.com | bash
  1. シェルを再起動
exec -l $SHELL
  1. gcloudの初期設定をする
gcloud init

手順③ ソースコードを書く

適当な名前でディレクトリを作り、その中に以下のファイルを入れます。このディレクトリの中身をデプロイすることになります。

index.php

以下のようなPHPのプログラムを書き、index.phpで保存しましょう。

<?php
  echo 'Hello, World!';

app.yaml

このファイルで、アプリケーション名、実行環境(PHP5.5か5.3か)、ルーティングの設定、静的ファイルの設定を行います。

service: default
runtime: php55
api_version: 1

handlers:
- url: /.*
  script: index.php

手順④ ローカルでテストしてみる

以下のコマンドを実行すると、ローカル開発環境が立ち上がります。

$ cd /path/to/project_dir (index.phpがあるディレクトリ)
$ dev_appserver.py .

初回はコンポーネントのインストールなどが走ります。 この状態でブラウザを開き、以下にアクセスすると、Hello Worldが表示されるはずです。

http://localhost:8080/

ちなみに、以下でローカル環境の管理画面があり、DataStoreの中身やMemcachedの中身や、インスタンスの数などが見られます。

http://localhost:8080/

手順⑤ デプロイする

テストは問題ないので、デプロイしましょう。

$ cd /path/to/project_dir (index.phpがあるディレクトリ)
$ gcloud app deploy --project [プロジェクトID] --version 1  .

プロジェクトIDには、https://console.cloud.google.com/home/dashboard:ダッシュボードに表示されているプロジェクトIDを入れます。

f:id:konisimple:20170420134912p:plain

ブラウザで以下のURLを開きます。

http://[プロジェクト名].appspot.com/

↑このURLは、SSL対応していて、httpsでもつながります。プロジェクト名に.があるときは、.-dot-にするとつながります。

HelloWorldと表示されれば成功です!

手順⑥ コンソールで確認する

使用量の確認

プロジェクトトップに使用しているリソースが表示されます。 コードにsleepとか入れて、更新すると、インスタンスが増えるのがわかると思います。

f:id:konisimple:20160106120333p:plain

バージョンの確認

デプロイが成功すると、「バージョン」タブの日時が変わります。 app.yamlのversionを変えると別versionとして認識され、A/Bテストができます。

f:id:konisimple:20160106120934p:plain

アクセスログの確認

アクセスログは、左のタブで「ログ」を選択すると、見られます。 アプリからsyslogに送ったデータもここから確認できます。

f:id:konisimple:20160106120521p:plain

まとめ

GAE のデプロイは本当に簡単。

慣れれば、プロジェクト作成(30秒)、app.yaml作成(1分)、デプロイ(30秒)ということで、2分くらいでデプロイできちゃいます。

PHPを新たに覚える方や、さくっとツール作る、なんてときにも簡単でおすすめです。

よいGAEライフを!!

次のステップ

次のステップとしては、以下がおすすめです。

ゲストブックを作るチュートリアル

https://cloud.google.com/appengine/docs/php/gettingstarted/introduction

phpMyAdminを設置するチュートリアル

Using phpMyAdmin with Cloud SQL on App Engine Standard Environment  |  Cloud SQL for MySQL  |  Google Cloud Platform

PHPの設定を変えたい

date.timezoneをJSTにするのは、php.iniというファイルをルートディレクトリに置いて変えます。詳細は以下。

The php.ini File  |  App Engine standard environment for PHP  |  Google Cloud Platform

ルーティングの設定など、app.yamlの設定を見たい

app.yaml Reference  |  App Engine standard environment for PHP  |  Google Cloud Platform

追記(2017/3/26)リージョン選択のタイミングについて

以前は以下のような記述がありましたが、リージョン選択はいつのまにかGAEを利用開始するタイミングに変わりました。

プロジェクト作成時にリージョンを選びます。これはあとから変えられません!東京リージョンを使う場合は、ここで必ず asia-northeast1 を選択します。

追記(2017/4/20)コマンドラインツール gcloud について

gcloud がすごく使いやすくなっているので、こちらの方法に書き換えました。 こちらにすると、以下のように app.yaml のフォーマットが変わっているので気をつけてください。

application → 記載不要CLIで指定するようになりました

version → 記載不要CLIで指定するようになりました

moduleservice 内容は同じです。

参考資料