0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Laravel アプリケーションを Sevalla にデプロイしてみる

0
Last updated at Posted at 2026-08-13

前提条件

  • Sevallaにアカウントを作成しておきます。
    • サインアップは GitHub / GitLab / Bitbucket のいずれかのアカウント、または、メールアドレスを利用します。(アカウント作成時に20ドル分のクレジットを付与されるようです)
      • image.png

事前準備

まず、Laravel 13を使ってデプロイの対象となるアプリケーションを準備します。
今回は cc-sddを使って、以下のような簡単なTodoリストのアプリケーションを開発して、 GitHub に push しました。

image.png


Sevalla にアプリケーションを登録

それでは、 Sevalla にデプロイするための設定を行っていきます。

Sevalla のwebページにアクセスしてサインインを行います。

image.png


サインアップ後の初回サインイン時は支払い方法の入力が求められるで、画面の指示に従い入力します。

image.png


支払い方法の入力が終わるとアカウントが有効状態に切り替わり利用開始となるようです。

画面の右側に「Welcome to Sevalla」といったメッセージが表示され、アプリケーションやデータベースのデプロイが促されますが、ここは一旦「Skip for now」をクリックします。

image.png


このような構成のダッシュボードが表示されます。
50日間で20ドル分のクレジット付与はかなりお得な気がしますね。

image.png


まずは、プロジェクトを作成するため、左側のメニューから「Projects」を選択して、「Create project」をクリックします。

image.png


「C3PO」や「Darth Vader」のようにスターウォーズ的なミームのプロジェクト名が初期表示されるようです。
今回は特に気にせずデフォルトで表示されたものをそのまま採用しました。

image.png


このような表示に切り替わるので、作成されたプロジェクトをクリックします。

image.png


アプリケーションの設定を進める前にデータベースの準備を行う必要があるため、「Create or add service」ボタンをクリックして、「create database」を選択します。

image.png


データベースの選択肢の中から、今回は「MySQL」を選択します。

image.png


MySQL Version、Location(リージョン)、Resource(スペック)等の選択、及び、Database name や Database userなど接続に関する情報の入力が必要となります。
今回、接続情報については初期表示されている内容をそのまま利用することにしました。

MySQLの接続情報を入力する画面.png


Location の選択肢を確認すると、「Asia」地域にて「Tokyo, Japan」が選択可能なので、こちらを選択しましょう。(なお、「Osaka, Japan」も選択可能なようです)

image.png


Resource の選択肢は様々ありますが、今回は検証用途なので最も低いスペックの「DB1(月額5ドル)」を選択しておきます。

image.png


「Create database」をクリックします。

image.png


データベースの作成が完了すると、このように表示されます。

データベース作成完了後の表示.png


データベースが作成できたら「Projects」の画面に戻って、次は「Create or add service」ボタンをクリックして、「create application」を選択します。

image.png


Git Provider、Repository、Location(リージョン)、Resource(スペック)等の選択、及び、Name(アプリケーション名)の入力が必要となります。

image.png


今回は GitHub のリポジトリと連携してデプロイを行いたいので「Private GIT repository」、「GitHub」が選択された状態で「Connect to GitHub」をクリックします。

image.png


デプロイ対象のリポジトリが未指定の状態なのでプルダウンに選択肢が表示されていません。
リポジトリの設定を行うため「Adjust GitHub repository access」をクリックします。

image.png


Kinsta(Sevallaの運営会社)と GitHub リポジトリとの連携設定が完了したら、リロードボタンをクリックして、デプロイ対象のリポジトリとブランチ名を選択します。

image.png


プルダウンからリポジトリを選択すると、「Name(アプリケーション名)」はリポジトリ名が自動的に入力されます。
「Location(リージョン)」についてはデータベースと同様に「Tokyo, Japan」を選択し、「Resource(スペック)」についてもデータベースと合わせる形で最も低いスペックの「0.3 CPU / 0.3 GB RAM(月額5ドル)」を選択しておきます。

image.png


「Create application」をクリックします。

image.png


アプリケーションの作成が完了すると、このように表示されます。

アプリケーションの作成完了画面.png


開発環境で以下のコマンドを実行して「APP_KEY」を発行します。

$ php artisan key:generate --show
base64:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

次は環境変数を設定するため、左側のメニューから「Applications」→「Environment variables」を選択して、「Add environment variables」をクリックし、必要な項目を追加します。

image.png

.env ファイルから一括で入力を行いたい場合は、「Import .env」をクリックしてください。

image.png


「APP_KEY」については事前に開発環境で発行しておいたものを転記します。
「DB_URL」についてはデータベースの画面の「Internal connection」の欄に表示されていた「URL」の値を転記します。
必要な環境変数の入力が終わったら「Add environment variables」をクリックします。

AddEnvironmentVariablesの入力.png


「Environment variables」の画面にこのように表示されます。

image.png


デプロイの準備が整ったので、左側のメニューから「Applications」→「Deployments」を選択します。
「Build environment」を確認すると、デフォルトでは「Nixpacks」が選択されている状態です。

image.png


「Update build strategy」をクリックして、「Nixpacks」以外のビルド方法を確認します。

image.png


デフォルトは「Nixpacks」で、こちらはリポジトリの内容から自動的に判断して環境構築を行ってくれるようです。
「Railpack」は Railway の環境で採用されているもので、こちらは Railway で既に動作確認が取れているため、これを選択することで恐らく問題なく動作するでしょう。
「Buildpacks」は Heroku で採用されているビルドの仕組みになりますが、 Buildpacks は随分触っていないため知見がありません。
「Dockerfile」についてはリポジトリ内に準備していないため、今回は選択対象から外れます。

ということで、今回はデフォルトで選択されている「Nixpacks」を利用することとします。

image.png


「Deploy now」をクリックします。

image.png


デプロイ対象は「main」ブランチになるので、そのまま画面下部の「Deploy」をクリックします。

image.png


デプロイが完了するまでしばらく待ちます。

image.png


残念ながらデプロイが失敗したようなので、対象のデプロイをクリックして内容を確認します。

image.png


「Deployment logs」を確認すると、PHP 8.4系、Node.js 18系、npm 9系が利用されていることがわかります。

image.png

npm ci 実行時に上記のバージョンでは条件を満たしていないことがわかります。

image.png

その結果、 npm run build の際にエラーが発生しているようです。

image.png


ということで、「Update build strategy」をクリックして「Railpack」に切り替えます。

image.png


「Build environment」に「Railpack」と表示されていることを確認して「Deploy now」をクリックします。

image.png


デプロイが完了するまでしばらく待ちます。

image.png


緑のチェックマークが表示されているのでビルド自体は通っているように見えますが、「The app exited with code 1 (Error)」という不穏なメッセージが表示されたので、これをクリックします。

image.png


とても不穏な内容が表示されました。

image.png


左側のメニューから「Applications」→「Logs」を選択します。
ログを確認すると、どうやらそもそもデータベースに接続できていないようです。

アプリケーションのログ画面.png


左側のメニューから「Databases」→「Networking」を選択します。
Sevalla のデータベースはデフォルトで「Internal connection」になっているので、データベースに接続できるアプリケーションを指定して許可する必要がありそうです。

データベースのNetworking画面.png


「Add internal connection」をクリックして、「Application」から既に作成済みの「my-todo-list」を選択し、「Add internal connection」をクリックすることで、アプリケーション側からデータベースに接続することができるようです。

image.png

ちなみに、「Add environment variables to the application」のトグルをオンにすると、データベースの接続情報をアプリケーション側の環境変数に登録してくれる親切設計になっています。
今回は「DB_URL」を既に登録済みですので、このトグルはオフのままで問題ないでしょう。

AddEnvironmentの画面.png


「Connected applications」にアプリケーション名が表示されていることを確認します。

image.png


改めてデプロイを実行してしばらく待ちます。

image.png


今度は警告が表示されることなくデプロイが完了したようです。

image.png


データベースのマイグレーションが成功していることを確認するため、左側のメニューから「Databases」→「Studio」を選択します。

画面上に各テーブル名が表示されていて、「migrations」のテーブルをクリックすると履歴が登録されているので、マイグレーションが成功しているようです。

マイグレーション結果.png


左側のメニューから「Applications」→「Domains」と選択するか

Domains.png

もしくは、「Applications」→「Networking」と選択することで、外部からアクセス可能なURLを確認することができます。

Networking.png

URLは以下のような形式になっています。
https://[アプリケーション名]-[XXXXX].sevalla.app/


Todoリストのページのルーティングパスにアクセスすると、Todoリストの初期画面が表示されました。

image.png


Todoの追加・更新・削除が行える(DBにデータが保存される)ことも確認できました。

image.png


まとめ

まず、初回登録時の20ドル分のクレジット付与についてですが、これだけのクレジットがあれば検証したいことが色々と試せるので、これはかなりありがたい特典と言えます。
Laravel Cloud、Railwayの5ドル分のクレジット枠と比較するとその違いがはっきりとわかります。

データベースについてはどのPaaSを使っても同じかと思いますが、データベースを利用する場合の金額の高さは結構ネックかもしれません。
本番環境として利用するのであれば、それくらい払いましょうという話ではあるかもしれませんが、小規模なアプリケーションでもデータベースを使いたいシーンは多いので、データベースの利用料がもう少し抑えられると嬉しいかもしれませんね。

Laravel Cloudで言うところの「Scale to Zero」と同様に「Hibernation」の機能があるので、トラフィックが発生していない場合のコスト抑制については考えられてそうでした。

image.png

操作感については、 .env 形式のファイルをアップロードできたり、データベースの接続情報を連携できたりと、環境変数の登録周りにおいて気が利いてるの感じました。

「Nixpacks」がうまく動かなかった点は少々残念でしたが、「Railpack」を選択することでスルッとデプロイが成功したのでかなり楽でした。
以前、Fly.ioを触った際に、 Dockerfile を自動生成してくれるのはすごく便利だなぁと感じましたが、最近のPaaSはリポジトリの内容からいい感じに読み取ってデプロイに必要な環境を整えてくれるので、本当に便利だなと改めて感じました。

また、全体的に操作する際に迷う箇所がなくわかりやすかったですし、この機能とこの機能がこういう風に繋がってるのね、という納得感のある作りになっている面も非常に好印象でした。


関連記事

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?