Google App Engine で静的ウェブサイト + PHPスクリプトをホスティングする
このページでは、Google App Engine で静的ウェブサイト + PHPスクリプトをホスティングする手順・例を説明します。
注意
- 静的サイトに一部 PHP スクリプトファイルがあるような構成の企業・団体などの小規模ウェブサイト(ホームページ)を想定しています。
- PHP のバージョンは 7.2 です。
0. 準備
- Google Cloud SDK をあらかじめインストールし、
gcloud
コマンドが使用できるようにしてください。 - Google Cloud Console でプロジェクトを作成しておいてください。(例:
example
)
1. サイトの作成
通常のサイト作成の手順と同じように HTML, CSS, JavaScript, 画像, PHP スクリプトファイルなどを含むファイル一式を用意します。
(例)
- 📁 example
- 📁 css
- 📄 style.css
- 📁 js
- 📄 script.js
- 📁 img
- 📄 test.jpg
- 📁 contact
- 📄 index.html
- 📄 mailform.php
- 📄 index.html
- 📁 css
※ 例では PHP スクリプトファイルは contact/mailform.php
です。
補足
本題とは少し話がそれますが、Google App Engine + PHP 7.2 の場合は Mail API が提供されておらず、Google App Engine + PHP 5.5 で使用できた mail()
や google\appengine\api\mail\Message
を使用したメール送信ができません。代わりに Mailjet や SendGrid を使用してください。
2. app.yaml の作成
サイトフォルダ (1 の例だと 📁 example) 直下に app.yaml を作成し、下記のように記載します。
runtime: php72
handlers:
# ルートにアクセスされた時、index.html を表示
- url: /
static_files: index.html
upload: index.html
secure: always
# 下層フォルダ自体にアクセスされた時、各フォルダの index.html を表示
- url: /(.+)/$
static_files: \1/index.html
upload: .+/index\.html$
secure: always
# 静的ファイル
- url: /(.+\.(html|css|js|gif|png|jpg))$
static_files: \1
upload: .+\.(html|css|js|gif|png|jpg)$
secure: always
# 上記以外は index.php
- url: .*
script: auto
secure: always
※ runtime: php72
の場合は、静的ファイル以外のアクセスはすべてサイトフォルダ直下の index.php
に引き継がれます。
3. index.php の作成
サイトフォルダ (1 の例だと 📁 example) 直下に index.php
を作成し、下記のように必要な PHP スクリプトを読み込み・実行できるようにします。
<?php
// リクエスト URI のパス部分から、必要なスクリプトを読み込みます。
switch (@parse_url($_SERVER['REQUEST_URI'])['path']) {
// 例
case '/contact/mailform.php':
require 'contact/mailform.php';
break;
// 上記以外は 404
default:
http_response_code(404);
exit('Not Found');
}
4. デプロイ
コマンドプロンプト等でサイトフォルダの位置に移動したのち、gcloud app deploy --project プロジェクト名
(例の場合 gcloud app deploy --project example
) を実行し、ファイルをアップロードします。
5. 確認
コマンドプロンプト等でサイトフォルダの位置に移動したのち、gcloud app browse --project=プロジェクト名
(例の場合 gcloud app browse --project=example
) で実際の動作を確認し、問題なければ完了です。