<span id="deploy-nuxt-on-lizard" />

# Развертывание Nuxt на Lizard

Запустите Nuxt на Lizard с пресетом `node-server` от Nitro. Сборка создаёт `.output/server/index.mjs`, а процесс Node.js обслуживает страницы и серверные маршруты на порту `3000`. Для сгенерированного сайта на порту `80` используйте рецепт для статических сайтов ниже.

<span id="configure-the-production-build" />

## Настройка продакшн-сборки

Используйте актуальный Lizard CLI из раздела [Подготовка проекта](https://lizard.build/ru/docs/framework-guides#prepare-the-project). Версия 0.3.95 исключает метаданные macOS-архивов при загрузке. Если старый CLI сообщает об ошибке маршрута `._*.ts`, обновите CLI и загрузите снова.

Установите пресет в `nuxt.config.ts`:

```ts
export default defineNuxtConfig({
  nitro: { preset: 'node-server' },
});
```

Объедините эти скрипты в `package.json`, сохраняя остальные скрипты, необходимые вашему приложению:

```json
{
  "scripts": {
    "dev": "nuxt dev",
    "build": "nuxt build",
    "start": "HOST=0.0.0.0 PORT=3000 node .output/server/index.mjs"
  }
}
```

Скрипт запуска использует оболочку Linux в контейнере развертывания. lizardpack определяет зависимость `nuxt` и запускает скрипты сборки и запуска. В новом проекте Nuxt может не быть `start`; добавьте его вместо того, чтобы полагаться на то, что `nuxt dev` обслужит продакшн-сборку.

| Настройка | Значение |
|---|---|
| Сборка | `npm run build` |
| Точка входа сервера | `.output/server/index.mjs` |
| Запуск | `npm run start` |
| Порт сервиса | `3000` |

<span id="test-the-built-app" />

## Проверка собранного приложения

```bash
npm ci
npm run build
npm run start
```

Откройте `http://localhost:3000`, запросите внутреннюю страницу напрямую и вызовите один из ваших маршрутов `server/api`, если они есть. Убедитесь, что отчёт сборки указывает на пресет Node-сервера. Пресет Nitro для конкретного провайдера может создать другую точку входа.

<span id="deploy" />

## Развертывание

После [настройки CLI](https://lizard.build/ru/docs/framework-guides#prepare-the-project) выполните из каталога Nuxt-приложения:

```bash
lizard init --name nuxt-app
lizard add --service web
lizard up --service web --port 3000
lizard logs --build --service web --json
lizard logs --service web --json
lizard ps --json
```

Не включайте в загрузку файлы `.nuxt/`, `.output/`, `node_modules/` и `.env`. Включайте исходный код, конфигурацию и локфайл. Существующие переопределения сборки/запуска сервиса обходят используемое здесь определение; см. [порядок решения о сборке](https://lizard.build/ru/docs/concepts/build-pipeline#build-decision-order).

<span id="runtime-configuration" />

## Среда выполнения-конфигурация

Объявите настройки времени выполнения в `runtimeConfig` и настройте соответствующие значения `NUXT_*` для сервиса. Храните секреты вне `runtimeConfig.public`; публичная часть попадает в браузер. Значения, используемые для предрендеринга страниц, всё равно влияют на сгенерированную сборку, поэтому проверяйте как маршруты времени запроса, так и предрендеренные маршруты после изменений.

Используйте [переменные и секреты](https://lizard.build/ru/docs/variables) для настройки сервиса и [хранилище и восстановление](https://lizard.build/ru/docs/platform/storage-and-recovery) для долговечных данных. Не рассматривайте локальный кэш или файл сессии как общее хранилище между репликами.

<span id="troubleshooting" />

## Устранение неполадок

Если процесс сообщает об отсутствующем `.output/server/index.mjs`, проверьте пресет и вывод сборки. Если сообщается об отсутствующем скрипте запуска, добавьте приведённый выше. Если сайт никогда не становится здоровым, проверьте хост и порт.

Для чисто сгенерированного Nuxt-сайта обслуживайте `.output/public/` с помощью статического Dockerfile и правильной обработкой маршрутов. Не запускайте этот вывод командой Node из примера выше. [Руководство по развертыванию Nuxt](https://nuxt.com/docs/4.x/getting-started/deployment) объясняет выводы Node и генерации; [статические маршруты и 404](https://lizard.build/ru/docs/framework-guides/static-routing) описывает настройку статического сервера Lizard.

<span id="generate-a-static-site" />

## Генерация статического сайта

Для HTML-генерации замените Node-пресет на явные настройки prerender и измените скрипт сборки на `nuxt generate`:

```ts
export default defineNuxtConfig({
  nitro: {
    prerender: { crawlLinks: true, routes: ['/'] },
  },
});
```

Добавьте нелинкованные или динамические маршруты в `routes`, когда краулер не может их обнаружить. Запустите `npm run build` и убедитесь, что существуют `.output/public/index.html` и файлы ваших внутренних маршрутов. В тесте с Nuxt 4.5.2 сохранение `preset: 'node-server'` при переключении только на `nuxt generate` дало fallback-страницы без маршрутов сайта. Успешная сборка сама по себе не гарантировала, что экспорт содержит сайт.

Используйте Dockerfile и конфигурацию nginx из [статических маршрутов и 404](https://lizard.build/ru/docs/framework-guides/static-routing) со скриптом сборки `build`, выходной директорией `.output/public` и портом сервиса `80`. Статический контейнер не запускает серверные маршруты Nuxt и не читает runtime config для уже сгенерированных страниц.

См. [проверенные версии и результаты в облаке](https://lizard.build/ru/docs/framework-guides/validation) для проверок развертывания от 9 сентября 2026 г. и их ограничений.
