You are browsing Nuxt 2 docs. Go to Nuxt 3 docs, or learn more about Nuxt 2 Long Term Support.

翻訳されたページ このページのコンテンツは古い可能性があります。

Nuxt を Azure Portal へデプロイする

Nuxt アプリケーションを Azure Portal にデプロイするには?


前提条件

  • プロジェクトを設定する時、バックエンドを選択する必要があります。たとえ必要でなくても、そうしなければサイトを起動することができません。
  • サーバーが Node 8 以上であること。

もしバックエンドのないプロジェクトがすでにある場合は?

心配いりません。既存のプロジェクトに express サーバーを追加するのは簡単です。

プロジェクトのルートに server という新しいフォルダを作成してください。次に server フォルダ内に index.js を作成し、以下の内容を index.js に貼り付けてください:

const express = require('express')
const consola = require('consola')
const { loadNuxt } = require('nuxt-start')
const app = express()

async function start () {
  const nuxt = await loadNuxt(isDev ? 'dev' : 'start')
  await nuxt.listen(process.env.PORT, process.env.HOST)
}

start()

次に nuxt.config.js を編集してください:

Before:

import pkg from './package'

export default {
... config
}

After:

module.exports = {
... config
}

config 内の pkg オブジェクトへの参照を削除することを忘れないでください。

それだけです!

Azure App Service のデプロイメントの場合、 App Service › Settings › Configuration › Application settings で、以下 2 つの環境変数(アプリケーション設定)を設定していることを確認してください。

HOST: '0.0.0.0'
NODE_ENV: 'production'

DevOps で Web アプリケーションに Node のバージョンを設定する方法

リリースパイプラインの "Deploy Azure Web Service" タスク内のアプリ設定経由で、サーバー上の Node のバージョンを設定することができます

アプリ設定欄の"Application and Configuration Settings"に追加します

-WEBSITE_NODE_DEFAULT_VERSION 10.16.3

LTS バージョンを使用することが推奨されています。

アーティファクト

Azure DevOps を使用してビルドパイプラインを働かせていて、かつアーティファクトを保存したい場合。接頭辞に . が付いているファイルは明示的に artifact フォルダーに移動する必要があります。次に Artifact Archive を作成し、そのあと Release Deployment からダウンロードします。

web サーバーの実行

Azure Portal の場合 web.config ファイルが必要です。提供されていない場合、自分で作成します。これは Nuxt では使えません。リポジトリに web.config ファイルを追加してください。Nuxt が最新バージョンの場合サーバーファイルは server/index.js にあります。web.config では正しいパス server/index.js を指定せず server となっています。以下の web.config の例を見てください。これを行わないと、Vue がルートを見つけられないというログが表示されます。

<?xml version="1.0" encoding="utf-8"?>
<!--
     iinode が IIS または IIS Express の後ろでノードプロセスを実行するために使用される場合、
     この設定ファイルが必要です。詳細はこちらを確認してください:

     https://github.com/tjanczuk/iisnode/blob/master/src/samples/configuration/web.config
-->

<configuration>
  <system.webServer>
    <!-- WebSocket サポートの詳細は https://azure.microsoft.com/en-us/blog/introduction-to-websockets-on-windows-azure-web-sites/ を確認してください -->
    <webSocket enabled="false" />
    <handlers>
      <!-- server.js ファイルが iisnode モジュールによって処理される Node.js サイトであることを示しています -->
      <add name="iisnode" path="server" verb="*" modules="iisnode"/>
    </handlers>
    <rewrite>
      <rules>
        <!-- node-inspector のデバッグの要求を妨害しないようにする -->
        <rule name="NodeInspector" patternSyntax="ECMAScript" stopProcessing="true">
          <match url="^server\/debug[\/]?" />
        </rule>

        <!-- はじめに受信した URL が /public フォルダ内の物理ファイルと一致するかどうかを判別します -->
        <rule name="StaticContent">
          <action type="Rewrite" url="public{REQUEST_URI}"/>
        </rule>

        <!-- 他のすべての URL は Node.js サイトのエントリーポイントにマッピングされます -->
        <rule name="DynamicContent">
          <conditions>
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="True"/>
          </conditions>
          <action type="Rewrite" url="server"/>
        </rule>
      </rules>
    </rewrite>

    <!-- 'bin' ディレクトリは Node.js にとって特別な意味はありませんが、アプリケーションをそこに置くことができます -->
    <security>
      <requestFiltering>
        <hiddenSegments>
          <remove segment="bin"/>
        </hiddenSegments>
      </requestFiltering>
    </security>

    <!-- エラーレスポンスがそのまま残るようにします -->
    <httpErrors existingResponse="PassThrough" />

    <!--
      以下のオプションを使用すれば、IIS 内で Node がホストされる方法を制御することができます:
        * watchedFiles: サーバーを再起動する時の変更を監視する、セミコロンで区切られたリストのファイル
        * node_env: 環境変数 NODE_ENV として node に伝わります
        * debuggingEnabled - 組み込みのデバッガを有効にするかどうかを制御します

      オプションの全リストは https://github.com/tjanczuk/iisnode/blob/master/src/samples/configuration/web.config で確認してください
    -->
    <!--<iisnode watchedFiles="web.config;*.js"/>-->
  </system.webServer>
</configuration>