PHP+Smartyで作成サイトをGAE(Google App Engine)に移行したので感想と手順を記述します。
#移行作業概要
・GCP上に新規プロジェクト作成
・GCPのMySQL作成、DBデータ移行
・app.yaml作成
・メール送信関数を変更
・SmartyのファイルキャッシュをGCS出力に変更(*1)
・アプリログ出力をsyslog()出力
・画像ファイルをGCSに配置してインタネット公開
・画像ファイルのURLリンクを変更
・mysql_xxxx()関数をmysqli_xxxx()に変更(*2)
(*1)とりあえず動くけど、速度に若干不満あるので将来的にはmemcacheやBigTableへの移行を検討
(*2)M/Wのバージョンアップ影響
#ファイル配置
$GAE_BASE/app.yaml
$GAE_BASE/php.ini
$GAE_BASE/html/Smarty/*
$GAE_BASE/html/modules/*
$GAE_BASE/html/css/*
$GAE_BASE/html/js/*
gs:://xxxxxxx.appspot.com/img/*
gs:://xxxxxxx.appspot.com/compiled/*
gs:://xxxxxxx.appspot.com/cache/*
##app.yaml
```
application: xxxxxxxxxxx
version: 1-0
runtime: php55
api_version: 1
threadsafe: true
handlers:
- url: /css
static_dir: html/css
- url: /js
static_dir: html/js
- url: .*
script: html/modules/index.php
```
##php.ini
GCSにsmartyキャッシュファイルを配置するので、このおまじない設定が必要。
```
allow_url_include = "1"
google_app_engine.allow_include_gs_buckets = "バケット名/compiled/,バケット名/cache/"
```
##メール送信関数変更
mail()やmb_send_mail()は使えないのでgoogle提供ライブラリを利用
```
| use \google\appengine\api\mail\Message;
$message = new Message(); $message->setSender("送信者メールアドレス"); $message->addTo('宛先メールアドレス'); $message->setSubject('件名'); $message->setTextBody('本文'); $message->send(); |
```
##GCPバケットのデフォルト設定変更
外部公開用バケットを作成してデフォルト設定を一般公開に設定。
コピー前のファイルの公開属性は変更されないが、新規作成ファイルは一般公開で作成される。
```
gsutil defacl ch -u AllUsers:R gs://xxxxxxx.appspot.com/
gsutil defacl get gs://xxxxx.appspot.com/
```
#感想
・GAE移行は1日かからずに、できてしまうから簡単。
・データや画像ファイル移行、ミドルバージョンアップ影響調査に時間がかかった。
・PaaSの普及でインフラ技術者が、ますます不要になってくる。
