Laravel Cloudってご存じですか?Laravel公式が提供するフルマネージドのクラウドデプロイプラットフォームです。サーバーの設定やスケーリングをLaravel側が全部やってくれる、Laravel専用のホスティングサービスです。
GitHubにプッシュするだけでデプロイが完了するので、手軽にLaravelアプリを本番公開できます。
気になるけど、これまで使う機会がなく。
ただこのたび、「とにかくさくっとプロトタイプをデプロイしたい」案件があり、使ってみました♪

気になる方見てください。ちなみにお値段は従量課金制*で、今回のような使い方ならかなり少なくできます。
*月額制もあります。
Laravel Cloud使ってみた!サンプルプロトタイプを「爆速」でデプロイしました
今回はGitHubにプッシュしたリポジトリをデプロイします。
準備編
準備として、デプロイしたいWebアプリをGitHubにプッシュしておきます。
また、こちらでLaravel Cloudアカウントを作成します。

最初にクレジットカードの登録が必要です。
プロジェクト作成
Laravel Cloud内でプロジェクトを作成し、GitHubリポジトリを選択してデプロイします。
なお public/build フォルダは .gitignore から外しておきましょう。

データベースについて
今回は本番プロジェクトではないのでスピードとコストを最優先し、「SQLite」を選択しました。
.sqlite ファイルはGitから無視(Ignore)される設定になっています。 下記コマンドを実行して、Gitの管理に含め、クラウド上へ送り出しました。
|
1 |
git add -f database/database.sqlite |
このあとファイルをプッシュ→Laravel Cloud反映。
さらに、Settings/General/Custom environment variables(環境変数)の設定を開きます。

下記のようなコードを追加しました。
|
1 2 |
DB_CONNECTION=sqlite DB_DATABASE=/var/www/html/database/database.sqlite |
Saveしてデプロイを実行。
マイグレーションの実行
Commandsタブにて必要なコマンドを実行します。今回はマイグレーションを強制実行しました。
|
1 |
php artisan migrate --force |

なぜ–force(強制)をつけるかですが、Laravel CloudはデフォルトでAPP_ENV=productionに設定されています。
本番環境でのマイグレーションはデータ破壊を防ぐためにLaravelが確認プロンプトを表示しますが、Commandsタブは対話操作に対応していないため、プロンプトが出た時点でコマンドがキャンセルされてしまいます。この確認を読み飛ばし、強制実行するために–forceをつけています。
詳細は、下記公式マニュアルご参照ください。
ログをみてエラー修正
プロジェクト名の下に表示されるURLをクリックして、ブラウザに表示します。500エラーなどあった場合は、Logsよりログを確認して修正します。
⚠️ SQLiteに関する注意点
なおSQLiteの利用にはご留意点があります。公式マニュアルには、下記のようにあります。
SQLiteは開発環境や軽量アプリケーションで人気の選択肢ですが、Laravel Cloudの本番環境ではサポートされていません。
https://cloud.laravel.com/docs/knowledge-base/sqlite
デプロイしなおさない限りデータは保持されますが、再デプロイのたびにデータはリセットされます。今回はプロトタイプの動作確認が目的なので問題ありませんが、本番用途でのSQLite使用は公式非推奨です。
本番運用を視野に入れるなら、最初からServerless PostgresやMySQLを選択することをおすすめします。データベースをちゃんと作るには、「Resources」より設定が必要です。

コストを抑えたい方へ
ハイバネーション(Hibernation) を有効にすることでコストを大幅に下げられます。

ハイバネーションとは、リクエストがない間はアプリが自動的にスリープし、その間のコンピュート費用が発生しない。つまりお財布にやさしい仕組みです。
今回試したところ、現在は最初からハイバネーションが有効になっており、デフォルトで5分間リクエストがないとスリープする設定になっていました。

設定変わるかもなので、ご自身でご確認くださいね
設定は Environment → App cluster から確認・変更できます。

実際に5分後にハイバネーションモードになりましたが、Webアプリを開くと約5秒ほどで利用できるようになりました。今回のようなプロトタイプではあまり不便は感じませんが、Webアプリによっては設定変更が必要かもしれません。
また、SQLiteを使っている場合はハイバネーションからの復帰時にもデータが消えるため注意してください。プラント価格は下記公式ドキュメントご覧ください。
さいごに
ざっくりですが、Laravel Cloud使ってみたこと記録しました。普段はエックスサーバーを使うことが多く、また案件に合わせて他のホスティングサービスも利用します。
本番で使うときは、引き続きそうする可能性が高いですが、ただ、Laravelをデプロイするには、わりと手順が面倒なのは事実。今回はさくっとできて助かりました。
今後も時々使っていき、慣れてきたら、なにかちゃんとしたWebアプリを実装するときに使ってみたいと感じました。



