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

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

Astro имеет два пути развертывания на Lizard: обслуживание статического каталога `dist/` на порту `80` или запуск автономного адаптера Node на порту `3000` для маршрутов по запросу. Выберите режим перед развертыванием, так как адаптер меняет и вывод, и среду выполнения.

<span id="choose-a-mode" />

## Выбор режима

| Режим | Конфигурация | Среда выполнения | Порт |
|---|---|---|---|
| Статический сайт | Статический вывод без серверного адаптера | nginx обслуживает `dist/` | `80` |
| Node-сервер | `@astrojs/node` в автономном режиме | `node ./dist/server/entry.mjs` | `3000` |

Оба пути используют скрипт `build`, который запускает `astro build`. Закоммитьте файл блокировки и сохраните путь вывода `dist` по умолчанию. Определение считывает конфигурацию Astro и установленные зависимости. Неиспользуемая зависимость адаптера Node сама по себе не выбирает серверный путь. Используйте буквальные значения `output` и настройки адаптера; динамические значения, пользовательские пути вывода и режим посредника (middleware) требуют Dockerfile.

<span id="configure-a-node-server" />

## Настройка Node-сервера

Для страниц по запросу добавьте версию адаптера Node, совместимую с вашей версией Astro:

```bash
npx astro add node
```

Проверьте `astro.config.mjs`:

```js
import { defineConfig } from 'astro/config';
import node from '@astrojs/node';

export default defineConfig({
  output: 'server',
  adapter: node({ mode: 'standalone' }),
});
```

Автономный режим запускает собственный HTTP-сервер. Режим посредника требует отдельного сервера и не подходит для этой команды запуска. Ознакомьтесь с [руководством по адаптеру Astro Node](https://docs.astro.build/en/guides/integrations-guide/node/), если вам нужен посредник или смесь предварительно отрендеренных и по запросу маршрутов.

<span id="test-locally" />

## Локальное тестирование

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

Для режима Node:

```bash
HOST=0.0.0.0 PORT=3000 node ./dist/server/entry.mjs
```

Запросите маршрут, который действительно работает на сервере, и собранный ассет. Для статического сайта используйте `npm run preview` локально и проверьте сгенерированные файлы маршрутов в `dist/`.

<span id="deploy" />

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

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

```bash
lizard init --name astro-app
lizard add --service web
```

Для адаптера Node:

```bash
lizard up --service web --port 3000
```

Для статического сайта:

```bash
lizard up --service web --port 80
```

Используйте только команду для выбранного режима. Оставьте переопределения команды сервиса не заданными для обнаружения lizardpack. Прочитайте `lizard logs --build --service web --json`, затем проверьте логи выполнения и живой URL.

<span id="variables-sessions-and-routes" />

## Переменные, сессии и маршруты

Значения, используемые для генерации статического HTML, требуют новой сборки при изменении. Серверный код может считывать переменные среды выполнения через механизмы, поддерживаемые вашей версией Astro; настройте их в [переменных и секретах](https://lizard.build/ru/docs/variables). Значения, видимые в браузере, не должны содержать учётные данные.

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

Для сайта со статическим контентом протестируйте несуществующий URL и используйте [статические маршруты и 404](https://lizard.build/ru/docs/framework-guides/static-routing) для возврата правильного статуса. Если развертывание SSR завершается или не обслуживает маршруты, убедитесь, что существует `dist/server/entry.mjs`, адаптер использует автономный режим, а порт сервиса — `3000`.

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