1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

VercelにLaravel11をデプロイ!詰まった点の備忘録

Posted at

今回はAWSではなく、 「すぐにデプロイしたい!」「費用を抑えたい!」
そんな希望から調べた結果、Vercelという「GitHubと連携することで簡単にデプロイが始められる」サービスを発見しました。
実際に試してみると、予想以上に詰まる場面があり、特に仕組みの理解や設定に時間がかかりました。
ここでは、その過程で学んだことを備忘録としてまとめます。

参考にした記事

以下の記事を参考にデプロイ作業を進めました。貴重な情報をありがとうございます!

Vercelとは?

Vercelは、以下の特徴を持つデプロイサービスです。

  • 無料で利用可能
  • GitHubなどのリポジトリと連携し、アプリケーションを簡単にデプロイ可能
  • プッシュするだけで自動ビルド&デプロイ

前提

今回のデプロイ環境の前提条件は以下の通りです。

  • Vercelアカウント作成済み(GitHubとの連携も完了)
  • GitHubリポジトリ作成済み
  • Gitインストール済み
  • ローカルでLaravelがインストール済み
  • バージョン情報:
     - PHP version 8.3.10
     - Laravel Framework 11.34.2

操作方法

まず、ローカルのLaravelプロジェクトのルートディレクトリで以下を実行します

composer require revolution/laravel-vercel-installer --dev
php artisan vercel:install

この操作で複数のファイルが追加されます。
その中で、 vercel.json の編集が必要です。
ここで私は詰まりました。

詰まった点(その後の操作手順)

vercel.jsonの編集

このファイルは環境に合わせた設定が重要です。
公式ドキュメントやサンプルを参考にすることをお勧めします!

vercel.jsonの公式推奨サンプル

ちなみに私の環境では以下のように設定しました。

{
    "version": 2,
    "regions": [
        "hnd1"
    ],
    "builds": [
        {
            "src": "/api/index.php",
            "use": "vercel-php@0.6.2"
        },
        {
            "src": "/public/**",
            "use": "@vercel/static"
        }
    ],
    "routes": [
        {
            "src": "/(css|js|image)/(.*)",
            "dest": "public/$1/$2"
        },
        {
            "src": "/favicon.ico",
            "dest": "/public/favicon.ico"
        },
        {
            "src": "/robots.txt",
            "dest": "/public/robots.txt"
        },
        {
            "src": "/(.*)",
            "dest": "/api/index.php"
        }
    ],
    "env": {
        "APP_NAME": "Laravel Vercel",
        "APP_DEBUG": "false",
        "APP_CONFIG_CACHE": "/tmp/config.php",
        "APP_EVENTS_CACHE": "/tmp/events.php",
        "APP_PACKAGES_CACHE": "/tmp/packages.php",
        "APP_ROUTES_CACHE": "/tmp/routes.php",
        "APP_SERVICES_CACHE": "/tmp/services.php",
        "CACHE_DRIVER": "array",
        "CACHE_STORE": "array",
        "LOG_CHANNEL": "stderr",
        "SESSION_DRIVER": "cookie",
        "VIEW_COMPILED_PATH": "/tmp"
    }
}

環境変数の設定

リポジトリを連携してDeploy!だけではうまくいきません。
環境変数の設定が必要です。

手順

  1. ローカル上で.env.exampleをコピーして、新しく.env.productionを作成
  2. 以下2点書き加える
  • APP_KEY(ローカルの.envファイルからコピー)
  • APP_ENV=production

その後、Vercelの設定画面で環境変数を一括インポート(.env.productionをインポート)しました。
この方法は非常に効率的で、メンターさんからも推奨されました。
以下の画像のように進めます。

スクリーンショット 2024-12-31 16.15.26.jpg

インポート後、ひとまずSAVEする。
ひとまずReDeploy。(この時はHTMLだけデプロイされた状態になっています)

CSSや画像もデプロイする

環境変数の設定で以下2つを修正します。

  • APP_URL:デプロイ後のURLを設定(最後のスラッシュは削除)
  • ASSET_URL:同上

その他の設定

Build & Development Settings

  • OutPut Directoryを public に変更
  • Node.js Versionを 18.X に設定

これでReDeploy!成功!

感想

Vercelのシンプルさは魅力的ですが、vercel.jsonや環境変数の設定に手こずりました。特にLaravel特有の設定が必要な部分は、事前に知識を持っているとスムーズです。
AWSと比較すると設定作業は少なく、費用面でも抑えられるため、小規模なプロジェクトや簡単なデモには最適だと感じました。

1
2
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
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?