Повторная публикация на Beget
В вводном курсе мы уже разместили статический сайт на Beget. Здесь задача другая: повторно опубликовать известный кандидат, не смешать его с прежними файлами и заранее описать возврат. Модель выпуска полезна и на виртуальном хостинге, хотя инструменты там отличаются от управляемого VPS.
Учебный сайт release-lab имеет домен example.com, прежний выпуск r1 и проверенный кандидат r2. Архив получен из отдельного задания CI. Все действия ниже описывают будущую работу на выделенном учебном сайте. Мы не открываем настоящий аккаунт, не загружаем файлы ProfessorWeb и не считаем показанные ответы измерениями его размещения.
Сначала определить действующий корень
В панели Beget сайт представляет файловое размещение, к которому прикрепляют домен. Поэтому перед загрузкой выясняют полный путь конкретного сайта и список прикреплённых имён. Нельзя выбирать папку по похожему названию, если аккаунт содержит несколько проектов. Записываем: имя домена, выбранный сайт, текущий public_html и фактическую версию. Управление сайтами Beget.
На VPS мы управляли директивой Nginx root. На виртуальном хостинге системная конфигурация принадлежит площадке, а владелец использует разрешённые инструменты панели, файлового менеджера или SSH. Наличие SSH не означает доступ к системному Nginx или systemd. Поэтому команды переключения ссылки из следующего урока нельзя автоматически переносить сюда. Сначала подтверждают, какой способ изменения корня поддерживается для выбранного сайта.
Привязка имени и DNS остаются самостоятельными настройками. Если мы меняем только содержимое прежнего сайта, записи DNS могут остаться прежними. Если создаём отдельное размещение кандидата, его удобно проверять через закрытый тестовый поддомен, но производственный домен пока продолжает смотреть на r1. Не нужно устраивать переезд адреса сервера ради обычного обновления файлов.
Подготовить кандидат рядом с действующим результатом
Распакованный архив размещают в отдельной папке, не поверх public_html. Проверьте уровень вложенности: внутри будущего публичного корня должны оказаться index.html, catalog, my, assets и остальные публичные файлы. Паспорт выпуска лучше сохранить вне этого корня, но рядом с кандидатом. Архив и файл контрольной суммы также не должны стать доступными посетителю.
Учебное размещение до переключения
site/
public_html/ ← действующее публичное дерево r1
prepared-r2/ ← непубличное подготовленное дерево r2
private-releases/
r2/release.json
r2/release.tgz
Слово «непубличное» в схеме требует проверки фактической привязки. Если техническое имя площадки или другой домен обслуживает родительский каталог, соседняя папка может оказаться доступной. Безопасный путь для архивов выбирают вне всех корней, которые выдаются веб-сервером. Простое переименование в backup-secret не меняет эту границу. У владельца должен быть список публичных размещений, а не только знание основного домена.
При передаче файлов учитывают скрытые настройки, права и полноту ресурсов. Загрузка только изменённых HTML может оставить лишние страницы или пропустить необходимые изображения. Для целостного статического выпуска предпочтительнее подготовить новое полное дерево. Кандидат с другой вложенностью или отсутствующим старым адресом отклоняют до переключения. Такой отказ дешевле, чем исправление действующего сайта по отдельным файлам.
Сохранить режим статических старых адресов
В предыдущем курсе обсуждалась настройка выдачи HTML с расширением .php на конкретной цепочке веб-серверов хостинга. Её нужно сохранить или снова подтвердить для нового размещения. На изолированном статическом сайте обработчик может выдавать эти файлы как HTML; на настоящем PHP-проекте подобная замена раскрыла бы исходный код. Отдельная подготовленная папка не должна случайно унаследовать настройки другого приложения.
Если площадка допускает подходящий .htaccess, он является конфигурацией окружения и должен присутствовать в новом публичном корне в согласованном виде. Однако директива, работающая на одном аккаунте, не становится универсальной для любого режима обработки PHP. При несовпадении ожидаемого поведения обращаются к настройкам и документации выбранного режима. Не лечат скачивание HTML переносом старого материала на новый URL: сначала проверяют тип ответа и обработчик.
Копия перед изменением
До переключения сохраняют полный действующий результат, включая скрытые файлы и ресурсы. Кроме копии на том же хостинге полезно получить независимую копию вне аккаунта. Встроенное резервирование провайдера даёт дополнительную возможность, но нужно знать доступную дату и состав. Для динамического сайта файлы и база требуют согласования; наш текущий стенд статический, поэтому пользовательские данные пока отсутствуют. Резервное копирование и восстановление Beget.
Копию не считают готовой только по появлению архивного файла. Убедитесь, что её можно прочитать и что понятно, куда восстановить результат. Для будущего возврата понадобится не только HTML, но и информация о привязке домена, обработке старых файлов и используемой папке. В двенадцатом уроке проведём отдельное пробное восстановление; здесь важна предварительная сохранность прежней публикации.
Переключение и короткое окно изменения
Если поддерживается управление корнем сайта или проверенный механизм ссылок, используют его. Если выбран способ двух переименований — прежний public_html в сохранённую папку и кандидат в новый public_html — между действиями существует промежуток. Это не атомарное переключение. В этот момент сервер может не найти корень, поэтому заранее выбирают допустимое окно и держат оба действия подготовленными. Нельзя обещать отсутствие перерыва на основании двух быстрых кликов.
После переключения проверяют основной домен, health.json, каталог, старый путь и отсутствующий адрес. Особое внимание уделяют CSS и изображениям глубокой старой страницы. Пример ожидаемого наблюдения: индикатор показывает r2, старый URL отдаёт HTML с кодом 200, неизвестный путь — оформление с кодом 404. Эти строки являются планом проверки, не фактическим отчётом. Неправильный MIME или пустая страница означают, что выпуск не принят.
Завершить запись, сохранить возврат
Журнал содержит выбранный архив, путь прежнего дерева, путь нового дерева, время будущего переключения и полученные ответы. Если проверка не прошла, возвращают прежний корень или прежнее дерево целиком. Не начинают копировать случайные старые файлы поверх кандидата: так появляется состояние, которому не соответствует ни r1, ни r2.
После успешного просмотра прежнюю версию сохраняют на оговорённый срок, учитывая размер диска и возможность возврата. Удаление старой папки — отдельное действие после принятия результата, а не часть мгновенной публикации. Теперь модель выпуска применима на Beget. Далее разберём более точное переключение на VPS, где можно управлять неизменяемыми каталогами и одной ссылкой.