Google App Engine(よくGAEと略されます)は、自分が作ったWEBアプリケーションを簡単に公開することができる PaaS (Platform as a Service)です。最近ではサーバーレスアーキテクチャ(サーバーの構築や保守が不要なしくみ)とも呼ばれるようになりました。以前の Google App Engine は、制約が多く対応するプログラム言語も少なかったのですが、ここ最近でずいぶんと改善されたようです。そこで今回は、利用登録から Google App Engine で「Hello World」を表示するまでの手順をまとめてみました。
Google Cloud Platform の利用登録
Google App Engine は「Google Cloud Platform」というGoogleが提供するクラウドサービスの1つです。そのため Google Cloud Platform の利用登録が必要になります。登録用のGoogleアカウントを1つ用意しましょう。
Google Cloud Platform トップページの「無料トライアル」をクリックし、Googleアカウントでログインします。
Google Cloud Platform の無料トライアルの登録画面が表示されますので、住んでいる国を選択し「同意して続行」をクリックします。
無料トライアル期間(12ヶ月)が終わっても Google Cloud Platform には常時無料枠があります。Google App Engine の無料枠は以下の通りです。(2017年3月17日現在)ちょっと試す程度なら無料枠でおさまりそうですね(^^)
Google App Engine
Platform for building scalable web applications and mobile backends.
28 instance hours per day
5 GB Cloud Storage
Shared memcache
1000 search operations per day, 10 MB search indexing
100 emails per dayAlways Free Usage Limits | Google Cloud Platform Free Tier より引用
次の画面で「住所」「名前」「電話番号」「クレジットカード番号」(これらの項目は必須です)を入力し、「無料トライアルを開始」をクリックします。
以上で登録完了です。しばらくすると Google Cloud Platform のコンソール(管理画面)が表示されます。
Google App Engine の下準備
プロジェクトの作成
すでに「My First Project」というプロジェクトが作成されていると思いますが、今回は Google App Engine のテスト用に新しいプロジェクトを作成します。
「My First Project」をクリックして「プロジェクトを作成」を選択します。
適当なプロジェクト名を入力します。プロジェクトIDは自動で生成され、これが Google App Engine に「デプロイ」したWEBアプリケーションのURLの一部になります。プロジェクトIDは後で使うのでメモしておきましょう。(「編集」をクリックするとプロジェクトIDを入力することができますが、プロジェクトIDは Google Cloud Platform 全体で一意である必要があります)
(補足)「デプロイ」と聞くと、なにやら複雑なことをイメージしてしまいますが、単純に Google App Engine に「アップロードする」という意味と考えて問題ありません。
「作成」をクリックするとプロジェクトが作成されます。
Google App Engine の初期設定
コンソール左上の「≡」メニューから「App Engine」を選択します。
「言語を選択」から、作成するWEBアプリケーションのプログラム言語を選択します。今回は「PHP」を選択しました。
アプリのサービスを提供するリージョンは「asia-northeast1」(東京)を選択して「Next」をクリックします。ここで選択したリージョンは後から変更できないので注意です。
以上で Google App Engine の準備完了です。
Google Cloud SDK のインストール
Google App Engine にWEBアプリケーションをデプロイするには、GoogleクラウドのSDK(ソフトウェア開発キット)が必要になります。
SDKのインストールの前に、システムに Python 2.7 がインストールされていることを確認します。最近のmacOSやCentOS7であれば、Python2.7がインストールされていると思います。(今回はmacOS10.12のマシンにインストールしました)
Python 2.7.10 ← インストールされている
マシンがWindowsの場合は「Windows 用のクイックスタート | Cloud SDK のドキュメント」ページから、インストーラをダウンロードできます。
SDKをインストールしたいディレクトリに移動して、以下のコマンドを実行します。
$ curl https://sdk.cloud.google.com | bash
SDKのインストール先ディレクトリの指定です。よければそのままエンターを押してください。SDKのダウンロードが始まります。
SDKがクラッシュした場合に、匿名化された使用データをGoogleに送ってもいいか聞かれます。(ここはお好みで選択してください)
シェルの設定ファイルに SDKコマンドへのパスを追加してもいいか聞かれますので「Y」を入力してください。
completion? (Y/n)? Y
シェルの設定ファイルのパスの確認です。よければそのままエンターを押してください。
[/Users/foo/.bash_profile]:
シェルの設定ファイルを再読み込みして「gcloud」コマンドが実行できることを確認します。
$ gcloud help
(ヘルプが表示されればOKです)
App Engine SDK for PHP のインストール
今回 Google App Engine にデプロイするWEBアプリケーションはPHPで作成しますので、「App Engine SDK for PHP」もインストールしておきます。
続いてSDKの初期設定を行います。
Google Cloud SDK の初期設定
Google Cloud SDK の認証
Googleアカウントで Google Cloud SDK をアプリ認証します。以下のコマンドを実行してください。
Googleアカウントにログインしていいですか? と聞いてきますので「Y」を入力します。(WEBブラウザが開きます)
Google Cloud Platform の利用登録で使ったGoogleアカウントを選択します。
Google Cloud SDK のリクエストを許可します。(この許可はGoogleアカウントの管理画面でいつでも取り消すことができます)
「Google Cloud SDK の認証が完了しました」が表示されたら、ターミナル(コマンドプロンプト)に戻ります。
プロジェクトIDの選択
Google App Engine のテスト用に作成したプロジェクトのIDを選択します。
[1] gae-test-161708
[2] named-flag-161707
Please enter numeric choice or text value (must exactly match list
item): 1
(捕捉)Google Cloud SDK の設定情報は「/<ホームディレクトリ>/.config/gcloud/」以下に保存されます。
以上で Google App Engine を使う準備が整いました! WEBアプリケーションを作成してデプロイしてみましょう。
WEBアプリケーションの作成
適当な場所に、WEBアプリケーション用のディレクトリを作成します。(名前はなんでもかまいません)
作成したディレクトリに移動します。(ここがアプリケーションのルートディレクトリになります)
app.yaml の作成
Google App Engine にデプロイするには「app.yaml」という設定ファイルが必要になります。
設定ファイルは、YMAL(ヤムル)というフォーマットで記述します。YAMLは構文チェックが厳しいので、以下の点に気をつけると良いでしょう。
キーと値の区切り文字「:」の後ろは必ず空ける(× name:foo、○ name: foo)
構文エラーになる場合は、文字列をクォートしてみる
下の設定ファイルは、画像は静的ファイル(PHPとして実行しない)として扱うように指定しています。画像ファイル(拡張子が「.gif」「.png」「.jpg」)以外は、index.php にルーティングされます。
vi app.yaml
runtime: php55 api_version: 1 handlers: - url: /(.+\.(gif|png|jpg))$ static_files: \1 upload: .+\.(gif|png|jpg)$ application_readable: true - url: /.* script: index.php
Google App Engine は、このような設定ファイルでアクセス制限をしたり、スケジューリングを指定したりもできます。このあたりが Google App Engine を使いこなすカギになりそうですね。
Configuration Files | App Engine standard environment for PHP
(2018年9月26日追記)
ベータ版ですが「runtime: php72」を指定することで、PHP7.2 が使えるようになりました。
参考資料:Google App Engine PHP 7.2 Standard Environment Documentation
GAE PHP7.2 の phpinfo:https://gae-test-217500.appspot.com/
(2019年4月12日追記)PHP7.2 が正式版(GA)になりました。
PHPプログラムの作成
「Hello, World!」を表示するPHPプログラムを作成します。
vi index.php
<?php echo 'Hello, World!';
PHPプログラムの動作確認
Google Cloud SDK のローカル開発サーバを起動して、PHPプログラムが正しく動作することを確認します。
ローカル開発サーバの起動
以下のような表示があれば、ローカル開発サーバが起動しています。(終了する場合は [Control]+[C])
INFO 2017-03-16 20:52:47,107 api_server.py:268] Starting API server at: http://localhost:51288
INFO 2017-03-16 20:52:47,112 dispatcher.py:199] Starting module "default" running at: http://localhost:8080
INFO 2017-03-16 20:52:47,116 admin_server.py:116] Starting admin server at: http://localhost:8000
WEBブラウザで「http://localhost:8080」にアクセスすると、PHPプログラムの動作を確認できます。
Google App Engine にデプロイ
いよいよ Google App Engine へのデプロイです。
WEBアプリケーションのルートディレクトリで、以下のコマンドを実行します。
デプロイしてよいか最終確認がされますので、よければ「Y」を入力します。
(略)
Do you want to continue (Y/n)? Y
以下のコマンドを実行すると、WEBブラウザが開いてデプロイしたWEBアプリケーションを確認できます。
アプリをデプロイすると Google Cloud Platform のコンソール画面では、インスタンスの起動時間などWEBアプリケーションの動作状況が表示されるようになります。
独自ドメインのSSL証明書が無料!
(2017年9月16日追記)
Google App Engine のカスタムドメインという機能を使うと、デプロイしたWEBアプリケーションを独自ドメインで公開することができます。しかも標準で HTTPSに対応していて無料で使えます。もし興味がありましたら「Google App Engine 無料の自動更新 SSL 証明書の設定メモ」の記事ものぞいてみてくださいね。
おわりに
Google App Engine や Heroku などの、PaaSが盛り上がっていた2010年頃、がっつり「サーバー"有り"アーキテクチャ」の仕事をしていた私は「5年後には自分の仕事がなくなるなあ、、」と思ったものです。でもなぜかPaaSはいまいち流行らず、IaaS(サーバーハードウェアなどを単純に仮想化したもの)がクラウドの主流になったこともあって、なんとか2017年の今までサーバー回りの仕事を続けることができました。
しかし、昨年頃から「サーバーレスアーキテクチャ」(本質的にはPaaSと同じです)が盛り上がってきています。ここ数年でクラウド各社のPaaS系のサービスが、特に使いやすくなったのが要因でしょう。いよいよ今度こそ「5年後には自分の仕事はなくなるな(^^;)」と思う今日このごろです。
コメント