Публикация обновления сайта мероприятий

LinuxBeginner
Практиковаться сейчас

Введение

Common Ground — демонстрационный сайт сообщества. Посетители находят Linux Evening, открывают описание и читают порядок регистрации. Следующий релиз переносит мероприятие из Room A в Community Hall. Вам предстоит опубликовать подготовленное обновление, сохранив текущую версию.

Вы научитесь различать установленный и работающий релизы, выберете обновление и проверите настоящий сайт. Приложение и вспомогательный скрипт публикации уже предоставлены; писать код и настраивать Nginx не требуется. Достаточно базового знакомства с терминалом. Все мероприятия и адреса вымышлены.

Вкладка Назначение
Website Просмотр настоящего сайта сообщества.
Workstation Работа с подготовленным каталогом и скриптом публикации.
Topology Знакомство со связью между терминалом, файлами и сайтом.

Каждая лабораторная работа начинается в собственной подготовленной среде. Вкладки готовы к работе.

Познакомьтесь с сайтом и подготовьте обновление

На этом шаге вы определите нормальное поведение сайта и установите новый релиз, не меняя того, что видят посетители. Начните со вкладки Website.

Проверьте нормальную работу

Главная страница представляет Common Ground и показывает Linux Evening в разделе On the horizon. Сейчас указано Location: Room A. Прокрутите страницу вниз: в небольшом подвале написано Release: event-v1. Релиз — это конкретная сохранённая версия файлов сайта.

Common Ground до обновления

В Website нажмите строку Linux Evening. На странице описания указаны вторник, 18:00 и Room A. Откройте Registration instructions: здесь описана демонстрационная регистрация по электронной почте. Регистрироваться на самом деле не нужно. Нажмите логотип COMMON GROUND вверху, чтобы вернуться на главную в той же вкладке.

Эти пользовательские маршруты необходимо сохранить. Одна главная страница — ещё не весь сервис.

Подготовьте отдельную копию

Переключитесь на Workstation. Терминал уже открыт в /home/labex/project/website-release, предоставленном рабочем каталоге публикации. ls выводит имена в текущем каталоге:

ls

Вы увидите packages, releases, current и release.sh. В packages находятся предоставленные версии, ожидающие установки, а в releases — установленные. current выбирает версию для посетителей; вы изучите его на следующем шаге.

release.sh — небольшой готовый вспомогательный скрипт. bash запускает его; слова после имени файла задают действие и, при необходимости, релиз. Вы используете скрипт, а не пишете код на Bash.

bash release.sh help

Прочитайте краткую справку. install копирует пакет в отдельный каталог; deploy выбирает версию для сайта; rollback выбирает уже установленную версию. Ни одно действие не определяет, выполняют ли страницы свои пользовательские функции.

Выведите список предоставленных версий:

bash release.sh list

Они называются event-v1 и event-v2. Установите обновление:

bash release.sh install event-v2

Ожидаемый вывод:

Installed event-v2. The current website was not changed.

Убедитесь, что существуют оба установленных каталога. Аргумент releases указывает команде ls, какой каталог показать:

ls releases

Вы должны увидеть event-v1 и event-v2. Установка отдельной копии сохраняет старую версию, но ещё не публикует обновление.

Вернитесь в Website и обновите страницу. Место остаётся Room A, а в подвале по-прежнему указано event-v1. Так и задумано: обновление вы выберете на следующем шаге.

Выберите и опубликуйте обновление

На этом шаге вы измените выбранный релиз сайта, сохранив версию для восстановления. Начните в Workstation.

Разберитесь, как выбирается версия

Символическая ссылка — это ссылка файловой системы на другое расположение. Здесь current указывает на каталог одного установленного релиза. Предоставленный веб-сервер Nginx читает файлы сайта через эту ссылку.

readlink выводит цель символической ссылки:

readlink current

Ожидаемый вывод:

releases/event-v1

Этот относительный путь означает каталог event-v1 внутри каталога releases рабочего пространства. Каждый каталог содержит страницы HTML, локальные стили CSS, локальную иллюстрацию и небольшой файл версии. Вместе они образуют полный релиз сайта.

cat выводит содержимое файла. Перед публикацией проверьте, какая версия сохранена для восстановления:

cat releases/event-v1/version.txt

Команда выводит event-v1. Сохраните весь этот каталог. Если обновление не пройдёт проверки, план восстановления состоит в повторном выборе этого каталога; его пересоздание или удаление нарушит план.

Опубликуйте установленную версию

Выберите обновление:

bash release.sh deploy event-v2

Ожидаемый вывод:

Selected event-v2. The server reports:
event-v2
Selection finished. Check the required pages before accepting this release.

Скрипт использует установленный каталог, переключает current с помощью временной ссылки и переименования, затем делает настоящий запрос версии. Это позволяет не перезаписывать старые файлы. Но это не доказывает работоспособность всех страниц и не гарантирует одновременную смену версии во всей сессии браузера.

Проверьте выбор:

readlink current

Теперь выводится releases/event-v2.

Переключитесь в Website. Если открыта другая страница, нажмите COMMON GROUND, вернитесь на главную и обновите её. Под On the horizon теперь указано Location: Community Hall. В подвале — event-v2.

Опубликованное обновление

Новое место и подвал подтверждают изменение сайта. Прежде чем принять релиз, нужно проверить важные пользовательские маршруты.

Проверьте сайт и сохраните возможность восстановления

Вы проверите новый релиз как посетитель и как HTTP-клиент, затем убедитесь, что старая версия доступна. Начните в Website.

Пройдите пользовательские маршруты

Нажмите строку Linux Evening. Боковая панель описания должна показывать Community Hall, а не Room A. Откройте Registration instructions. Страница должна содержать шаги участия и events@example.test, а не экран отсутствующей страницы.

Обновлённое описание встречи

Нажмите COMMON GROUND внутри Website, чтобы вернуться на главную.

Проверьте реальные ответы HTTP

Переключитесь в Workstation. HTTP — протокол запросов и ответов, используемый сайтом. Запрос задаёт путь, например /registration.html; сервер возвращает статус и содержимое. 200 означает успешный ответ на запрос. 404 означает, что запрошенная страница не найдена.

curl отправляет запрос. -sS скрывает индикатор прогресса, но показывает ошибки соединения. -o /dev/null отбрасывает тело ответа; /dev/null — системное место для отбрасывания данных. -w выводит следующий за ним формат. Одинарные кавычки сохраняют формат как единое целое, %{http_code} выбирает статус, а \n завершает строку вывода.

127.0.0.1 обозначает эту учебную среду; порт 8081 ведёт к подготовленному сайту. Используйте адрес в Workstation, а не в терминале своего компьютера. Завершающий / запрашивает главную страницу.

Проверьте главную:

curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8081/

Результат — 200.

Отдельно проверьте описание и регистрацию:

curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8081/events/linux-evening.html
curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8081/registration.html

Оба запроса должны вернуть 200. Важно также проверить содержимое в Website: ответ 200 с неправильной страницей не является успехом.

Можно запросить небольшой ответ версии, не отбрасывая тело:

curl -sS http://127.0.0.1:8081/version.txt

Он выводит event-v2. Это полезное свидетельство, но метка версии не заменяет проверку страниц и ссылок.

Сохраните возможность восстановления

Исходный релиз должен остаться целым:

cat releases/event-v1/version.txt

По-прежнему выводится event-v1. Сохраните также страницы, стили и иллюстрацию: изменение одной метки версии не сохраняет сайт.

Переключитесь в Topology. Homepage reachable означает только, что главная отвечает. Это не решение о приёмке всего релиза. Вы уже независимо проверили пользовательские маршруты и сохранили полную версию для восстановления.

Резюме

Вы установили отдельный релиз, выбрали его без перезаписи старых файлов и проверили настоящие страницы и ссылки. Также вы сохранили полную заведомо рабочую версию для восстановления. В следующей работе вы используете её, когда главная страница релиза работает, но важный пользовательский маршрут нарушен.