【GoogleAppEngine】デプロイとSSL対応まで(PHPの場合)

言わずもがな、サーバークラウドを使う時代
ということで今までは先駆者であるAWSを使っていた。

ただ最近になってぐんぐん伸びているGoogle製のクラウド
こっちのが安いし、普通のWEBサービスなら簡単にデプロイ、運用管理までできるらしいのでGCPを使ってみることにしたという話。

その中でもGoogleがおすすめしているGAE(GoogleAppEngine)を使ってみたら、
本当に簡単だったのでここに記す。

今回言語はPHPを選択したが、他のでも大体は変わらないと思う。

■GoogleCloudPlatformの準備

・プロジェクト作成

IDができるのでメモしておく。デプロイ時に指定する。
gggggg-xxxxxx-111111111 みたいなやつ

・AppEngine > 言語選択 > PHP > asia-north-east1を選択

...1分待つ

SDKインストール

curl https://sdk.cloud.google.com | bash

(そのままEnterかYなどで進んでいく…)

・シェルの設定ファイル再読込

source ~/.bash_profile

・確認

gcloud help

・App Engine SDK for PHP のインストール

gcloud components install app-engine-php

SDK初期設定

gcloud init

(ブラウザで認証)

・プロジェクトID選択

1など


■アプリ作成

ディレクトリ作成

mkdir webapp
cd webapp

・app.yamlの作成(ヤムル)

今回記載する条件
・画像は静的ファイル(PHPとして実行しない)として扱うように指定
・画像ファイル(拡張子が「.gif」「.png」「.jpg」)以外は、index.php にルーティング

runtime: php55
api_version: 1
 
handlers:
- url: /(.+\.(gif|png|jpg))$
  static_files: \1
  upload: .+\.(gif|png|jpg)$
  application_readable: true
 
- url: /.*
  script: index.php

※基本的にYAMLでアクセス制限、スケジューリング指定をする。
その他記載方法参考
https://cloud.google.com/appengine/docs/standard/php/configuration-files

YAMLの基本構文ルール
・インデントの縦を合わせる(インデント幅は慣習的にスペース2つ)
・キーと値の区切り文字「:」の後ろは必ず空ける(× name:foo、○ name: foo)
・構文エラーになる場合は、文字列をクォートしてみる

・index.phpプログラム作成

<?php
echo 'Hello, World!';

■プログラム動作確認

・ローカル開発サーバ起動(Ctrl + Cで終了)

dev_appserver.py .

■本番GAEへのデプロイ

・デプロイ

gcloud app deploy

・ブラウザで確認

gcloud app browse

ドメイン設定

GAE > 設定 > カスタムドメインを追加

画面に沿っていくとできる。
ドメイン登録元のレコード設定するとSSL有効になる。
認証局はLet's Encrypt


■まとめ

これからはPaaSの時代だね!
例:GAEやHerokuなど