ITLB.Поиск

Как развернуть статический сайт на Astro

От сборки в dist до HTTPS: как выложить сайт, проверить 404 и подготовить быстрый откат.

Статическому сайту на Astro нужен сервер, который отдаёт файлы из dist/. Node.js нужен на этапе сборки. Оставьте его в образе сборщика или в CI; в продакшене достаточно файлового сервера.

Соберите проект в чистом окружении

Закоммитьте lock-файл, зафиксируйте версию Node.js и используйте ту же версию локально и на хостинге. Затем выполните:

npm ci
npm run build
npm run preview

Откройте адрес из вывода последней команды. Кроме главной, проверьте вложенную страницу, ссылку на CSS и загрузку изображения. Сборку запускайте из каталога, в котором лежит package.json. В типовом проекте результат появится в dist/; путь может отличаться, если в конфигурации задан outDir.

Опубликуйте каталог сборки

Подключите репозиторий к хостингу или скопируйте результат сборки на свой сервер. Укажите команду npm run build и каталог публикации dist. На своём сервере отдавайте index.html для каталогов страниц, а отсутствующие адреса возвращайте со статусом 404. Правило «любой путь → главная» здесь создаст страницы-двойники и скроет битые ссылки.

Если маршруту нужен сервер в момент запроса, например для чтения личного кабинета, выберите среду и адаптер из руководства по деплою Astro. Обычная публикация папки не запустит серверный обработчик.

Проверьте сайт снаружи

Дождитесь действующего HTTPS. Выполните запросы к главной, статье и вымышленному URL со слешем и без него. Для первых двух ожидайте 200, для последних — 404. Проверьте HTTP → HTTPS, канонический URL и карту сайта. Проверьте также прямой заход на статью с телефона: переход с главной иногда скрывает проблемы маршрутизации.

curl -I https://example.com/
curl -I https://example.com/articles/first/
curl -I https://example.com/does-not-exist/

Сделайте откат обычным действием

Храните предыдущую сборку как отдельный релиз. Если после публикации не грузится CSS или пропал маршрут, переключитесь на последний рабочий релиз целиком. Тогда HTML и файлы с хешами в именах снова совпадут. При ручной выкладке не копируйте файлы поверх работающей папки по одному: загрузите сборку целиком и только потом переключите каталог.

Частые вопросы

Подойдёт ли npm run preview для публичного сайта?

Эта команда предназначена для локальной проверки результата сборки. В продакшене используйте штатный сервер или хостинг.

Нужно ли выкладывать исходники на VPS?

Если сайт полностью статический, серверу достаточно артефакта сборки. Исходники и секреты сборки могут оставаться в репозитории и CI.