デプロイ
Nuxtアプリケーションを任意のホスティングプロバイダにデプロイする方法を学びます。
Nuxtアプリケーションは、Node.jsサーバーにデプロイしたり、静的ホスティング用にプリレンダリングしたり、サーバーレスやエッジ(CDN)環境にデプロイすることができます。
Nuxtをサポートするクラウドプロバイダのリストをお探しの場合は、ホスティングプロバイダセクションをご覧ください。
Node.jsサーバー
Nitroを使用して、任意のNodeホスティングにデプロイするためのNode.jsサーバープリセットを発見しましょう。
- デフォルトの出力形式 は指定されていない場合や自動検出されない場合
- リクエストをレンダリングするために必要なチャンクのみをロードし、最適なコールドスタートタイミングを実現
- 任意のNode.jsホスティングにNuxtアプリをデプロイするのに便利
エントリーポイント
Nodeサーバープリセットでnuxt build
を実行すると、実行可能なNodeサーバーを起動するエントリーポイントが生成されます。
node .output/server/index.mjs
これにより、デフォルトでポート3000でリッスンする本番Nuxtサーバーが起動します。
以下のランタイム環境変数を尊重します:
NITRO_PORT
またはPORT
(デフォルトは3000
)NITRO_HOST
またはHOST
(デフォルトは'0.0.0.0'
)NITRO_SSL_CERT
とNITRO_SSL_KEY
- 両方が存在する場合、HTTPSモードでサーバーを起動します。ほとんどの場合、テスト以外では使用せず、NitroサーバーはnginxやCloudflareのようなリバースプロキシの背後でSSLを終了するべきです。
PM2
PM2(Process Manager 2)は、サーバーやVM上でNuxtアプリケーションをホスティングするための迅速で簡単なソリューションです。
pm2
を使用するには、ecosystem.config.cjs
を使用します:
module.exports = {
apps: [
{
name: 'NuxtAppName',
port: '3000',
exec_mode: 'cluster',
instances: 'max',
script: './.output/server/index.mjs'
}
]
}
クラスターモード
Node.jsのclusterモジュールを使用してマルチプロセスのパフォーマンスを活用するために、NITRO_PRESET=node_cluster
を使用できます。
デフォルトでは、ラウンドロビン戦略でワーカーに負荷が分散されます。
詳細を学ぶ
こちらも参照 node-serverプリセットのNitroドキュメント静的ホスティング
Nuxtアプリケーションを任意の静的ホスティングサービスにデプロイする方法は2つあります:
ssr: true
を使用した静的サイト生成(SSG)は、ビルド時にアプリケーションのルートをプリレンダリングします。(これはnuxt generate
を実行したときのデフォルトの動作です。)また、クライアントで動的ルートや404エラーをレンダリングできる/200.html
と/404.html
のシングルページアプリのフォールバックページを生成します(ただし、静的ホストでこれを設定する必要があるかもしれません)。- あるいは、
ssr: false
(静的シングルページアプリ)でサイトをプリレンダリングすることもできます。これにより、通常Vueアプリがレンダリングされる場所に空の<div id="__nuxt"></div>
を持つHTMLページが生成されます。サイトのプリレンダリングによる多くのSEOの利点を失うことになるため、サーバーレンダリングできない部分(もしあれば)を<ClientOnly>
でラップすることをお勧めします。
クライアントサイドのみのレンダリング
ルートをプリレンダリングしたくない場合、静的ホスティングを使用するもう一つの方法は、nuxt.config
ファイルでssr
プロパティをfalse
に設定することです。nuxt generate
コマンドは、クラシックなクライアントサイドVue.jsアプリケーションのように.output/public/index.html
エントリーポイントとJavaScriptバンドルを出力します。
export default defineNuxtConfig({
ssr: false
})
ホスティングプロバイダ
Nuxtは、最小限の設定で複数のクラウドプロバイダにデプロイできます:
こちらも参照 deployプリセット
Node.jsサーバーや静的ホスティングサービスに加えて、Nuxtプロジェクトは、いくつかの十分にテストされたプリセットと最小限の設定でデプロイできます。
nuxt.config.ts
ファイルで希望するプリセットを明示的に設定できます:
export default defineNuxtConfig({
nitro: {
preset: 'node-server'
}
})
... またはnuxt build
を実行するときにNITRO_PRESET
環境変数を使用します:
NITRO_PRESET=node-server nuxt build
🔎 すべての可能なデプロイプリセットとプロバイダについては、Nitroデプロイメントを確認してください。
CDNプロキシ
ほとんどの場合、NuxtはNuxt自体によって生成または作成されていないサードパーティのコンテンツと連携できます。しかし、時にはそのようなコンテンツが問題を引き起こすことがあります。特にCloudflareの「Minification and Security Options」が原因です。
したがって、Cloudflareで以下のオプションがチェックされていない/無効になっていることを確認する必要があります。そうしないと、不要な再レンダリングやハイドレーションエラーが本番アプリケーションに影響を与える可能性があります。
- Speed > Optimization > Content Optimization > 「Rocket Loader™」を無効にする
- Speed > Optimization > Image Optimization > 「Mirage」を無効にする
- Scrape Shield > 「Email Address Obfuscation」を無効にする
これらの設定により、CloudflareがNuxtアプリケーションにスクリプトを注入して不要な副作用を引き起こすことがないことを確認できます。
Cloudflareダッシュボード上での位置が時々変わるので、探してみてください。
※このページは Nuxt.js 公式ドキュメントの翻訳ページ(非公式)です。
公式ドキュメントの該当ページはこちら:
https://nuxt.com/docs/4.x/getting-started/deployment