Laravel-リリースしたサービスの構成
基本構成
最近、仕事でLaravelを初めて使ってサービスをリリースしました。
その構成を載せておきたいと思います。
できるだけ費用を抑えたいのですべて、usリージョンです。
サーバー
GCPのGAEスタンダードのPHP7DB
GCPのCloud SQL(MySQL5.7)フレームワーク
Laravel5.8エラーレポート
GCPのStackdriverセッション・キャッシュ
DB
ここまでは以下のドキュメントに沿ってデプロイしています。
Run Laravel on Google App Engine standard environment
GAEにはMemcacheの機能があり、キャッシュはそれを使えば良いと思っていたのですが、PHP7の構成には対応しておらず断念。
月額が少々するMemorystoreを使用するか、無料枠があるRedis Labsが公式に勧められていますが、一旦DB使用で保留。
DNS
ムームーで取ったらしいドメインをCloud DNSに向けて、管理
ストレージ
Cloud Storageを使用しています。Laravelで使用するには以下のライブラリを使用しました。
superbalist/laravel-google-cloud-storage
ブログ機能
要件にブログ機能があったので、サブディレクトリでWordPressを動かしています。
GAEのサブディレクトリでWordPressを動かす
Basic認証
開発サーバにアクセス来ると困るということで、ベーシック認証を以下のライブラリでかけています。
olssonm/l5-very-basic-auth
Sitemap.xml
サイトマップ作成は以下を使用しました。
laravelium/sitemap
画像加工
情報が多いので以下を使用しました。
intervention/image
ユーザの画像アップロード
以下の問題が発生したので、Firebaseを使用しました。
GAEに画像をアップロードするのが遅い
デプロイ
また、デプロイ後以下のエラーが発生したので、app.yamlにはそれぞれのキャッシュファイルの保存場所を指定しています。
Laravel on App Engine Standard: The /srv/bootstrap/cache directory must be present and writable
1 | APP_SERVICES_CACHE: /tmp/services.php |
開発用
Homesteadで開発。
重いクエリとか見るのに以下のデバッグバーが必須。
barryvdh/laravel-debugbar
Cloud SQLのテーブルとかを操作したいのでAdminerをLaravelで使用できる以下を導入してます。
onecentlin/laravel-adminer