Laravel-リリースしたサービスの構成

基本構成

最近、仕事でLaravelを初めて使ってサービスをリリースしました。
その構成を載せておきたいと思います。
できるだけ費用を抑えたいのですべて、usリージョンです。

  • サーバー
    GCPのGAEスタンダードのPHP7

  • DB
    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に画像をアップロードするのが遅い

デプロイ

現状、CI/CDの環境は整えられていないので、手動で以下のようなコードでデプロイしています。

1
2
3
4
5
6
7
8
git clone --depth 1 git@github.com:xxxx/yyyyyy.git
cd yyyyyy
composer install --optimize-autoloader --no-dev
php artisan config:cache
php artisan route:cache
gcloud app deploy app.yaml
cd ../
rm -rf yyyyyy

また、デプロイ後以下のエラーが発生したので、app.yamlにはそれぞれのキャッシュファイルの保存場所を指定しています。
Laravel on App Engine Standard: The /srv/bootstrap/cache directory must be present and writable

1
2
3
4
APP_SERVICES_CACHE: /tmp/services.php
APP_PACKAGES_CACHE: /tmp/packages.php
APP_CONFIG_CACHE: /tmp/config.php
APP_ROUTES_CACHE: /tmp/routes.php

開発用

Homesteadで開発。
重いクエリとか見るのに以下のデバッグバーが必須。
barryvdh/laravel-debugbar

Cloud SQLのテーブルとかを操作したいのでAdminerをLaravelで使用できる以下を導入してます。
onecentlin/laravel-adminer

PHPカテゴリの記事