Программа для ЭВМ · документация

Программное обеспечение «Фортуна»

Веб-приложение официального сайта АНО «Фортуна» с каталогом открытых уроков по языку Java. Версия 1.0.0. Правообладатель — Автономная некоммерческая организация поддержки и развития общественно полезных инициатив «Фортуна».

1. Общие сведения

«Фортуна» — серверное веб-приложение, которое публикует сведения о некоммерческой организации, её образовательной программе и открытые просветительские уроки. Содержимое хранится в реляционной базе данных и выдаётся посетителю в виде HTML-страниц, сформированных на сервере.

Правообладатель: АНО «Фортуна», ОГРН 1267700276898, ИНН 9723277811, адрес: 115193, г. Москва, ул. 6-я Кожуховская, д. 11, к. 2, помещ. 2/1/1. Экземпляр программы в эксплуатации — сайт school-fortuna.ru.

2. Функциональные характеристики

  • Главная страница с целями организации, принципами работы, текущим статусом и контактами.
  • Раздел сведений об организации и страница образовательной программы.
  • Каталог открытых уроков: оглавление, страница каждого урока, переходы к предыдущему и следующему уроку.
  • Проверка полноты опубликованного содержимого: приложение не переходит в состояние готовности, если опубликованный урок не имеет шаблона или имеет недопустимый адрес.
  • Проверка внешних ссылок из базы данных по списку разрешённых адресов перед выводом.
  • Политика обработки персональных данных в свободном доступе.
  • Карта сайта, файл robots.txt и структурированные метаданные страниц.
  • Пробы работоспособности и готовности для систем оркестрации.
  • Защитные HTTP-заголовки: политика безопасности содержимого с одноразовым nonce, HSTS, запрет встраивания во фреймы.

Приложение не принимает изменяющих запросов, не создаёт учётных записей и сессий посетителей, не содержит форм.

3. Системные требования

Компонент Astra Linux Special Edition ОС Альт
Операционная система Astra Linux SE 1.8 (образы Astra Linux UBI) ОС Альт p11 (образы ALT Linux)
Среда исполнения Java OpenJDK 17 из репозитория Astra Linux OpenJDK 21 из репозитория ALT
СУБД PostgreSQL 15 из репозитория Astra Linux PostgreSQL 16 из репозитория ALT
Контейнеризация Docker Engine 24+ или Podman 4+ с поддержкой compose
Аппаратные ресурсы 2 ядра процессора x86-64, 2 ГБ оперативной памяти, 5 ГБ дискового пространства

4. Установка

  1. Скачайте архив fortuna-1.0.0.zip и сверьте его SHA-256 со значением в файле SHA256SUMS.txt.
  2. Распакуйте архив. Готовый исполняемый файл приложения находится в каталоге target/.
  3. Задайте пароль базы данных в переменной окружения FORTUNA_DB_PASSWORD.
  4. Для Astra Linux выполните docker compose up --build, для ОС Альт — docker compose -f compose.alt.yaml up --build.
  5. Откройте http://127.0.0.1:8080/. Готовность подтверждает ответ UP по адресу /actuator/health/readiness.

Схема базы данных и исходное содержимое создаются автоматически при первом запуске. Подробная инструкция находится в файле INSTALL.md внутри архива.

5. Эксплуатация: информация, необходимая для эксплуатации программы

Раздел описывает последовательность действий, обеспечивающих загрузку, запуск, выполнение и завершение программы, команды управления, их формат и ответы программы на эти команды. Команды приведены для установки на Astra Linux; для ОС Альт после docker compose добавляется -f compose.alt.yaml. Для Podman вместо docker compose используется podman compose.

5.1. Экземпляр и доступ для проверки

  • Экземпляр для развёртывания у проверяющего — архив fortuna-1.0.0.zip, установка описана в разделе 4 и в файле INSTALL.md архива.
  • Развёрнутый экземпляр — https://school-fortuna.ru/. Все функции программы открыты без регистрации; логин и пароль не требуются, поскольку программа не создаёт учётных записей посетителей.
  • Администрирование выполняется из командной строки сервера, на котором установлен экземпляр, пользователем с правом управления контейнерами (root или участник группы docker).

5.2. Загрузка и запуск

  1. Перейдите в каталог распакованного архива: cd fortuna-1.0.0.
  2. Задайте пароль базы данных: export FORTUNA_DB_PASSWORD='пароль'. При повторных запусках указывайте тот же пароль: он записывается в базу данных при первом запуске.
  3. Запустите программу: docker compose up -d (при первом запуске — docker compose up --build -d). Ответ: сообщения о создании и запуске контейнеров postgres и app; контейнер postgres получает состояние Healthy.
  4. Дождитесь окончания загрузки: docker compose logs -f app. Ответ программы при успешной загрузке — строка Started SchoolFortunaSiteApplication in N seconds; при первом запуске перед ней выводятся сообщения Flyway о создании схемы базы данных и загрузке исходного содержимого.
  5. Проверьте готовность: curl -i http://127.0.0.1:8080/actuator/health/readiness. Ответ HTTP 200 и {"status":"UP"} означает, что программа подключена к базе данных и содержимое полно. Ответ HTTP 503 со статусом DOWN или OUT_OF_SERVICE означает, что загрузка не завершена или обнаружена неисправность (см. п. 5.7).
  6. Откройте в браузере http://127.0.0.1:8080/.

5.3. Выполнение: работа пользователя

Пользователь работает с программой через браузер, переходя по ссылкам меню в шапке страницы. На странице урока внизу расположены ссылки «Предыдущий урок» и «Следующий урок». Программа принимает только запросы чтения (GET и HEAD).

Адрес Функция Ответ программы
/главная страница: цели организации, принципы работы, статус, контактыHTML-страница, код 200
/info/сведения об организацииHTML-страница, код 200
/info/education/образовательная программаHTML-страница, код 200
/uroki/оглавление каталога опубликованных уроковHTML-страница, код 200
/uroki/{адрес-урока}/страница урока с переходами к соседним урокамкод 200; для неопубликованного или отсутствующего урока — страница «не найдено», код 404
/personal-data/политика обработки персональных данныхHTML-страница, код 200
/po/документация программыHTML-страница, код 200
/dist/{файл}файлы дистрибутивафайл, код 200
/sitemap.xml, /robots.txtкарта сайта и правила для поисковых системXML или текст, код 200
адрес без завершающей «/»: /po, /info, /uroki/{адрес-урока}перенаправление на канонический адрескод 301
любой другой адресдоступ запрещён политикой безопасностикод 403
запросы POST, PUT, DELETEизменяющие запросы не принимаютсякод 405 или 403

5.4. Команды администрирования

Команда Назначение Ответ программы
docker compose psсостояние программысписок контейнеров app и postgres с состоянием running
docker compose logs -f appжурнал программызаписи журнала в реальном времени; выход — Ctrl+C
curl http://127.0.0.1:8080/actuator/health/livenessпроверка работоспособности процесса{"status":"UP"}
curl http://127.0.0.1:8080/actuator/health/readinessпроверка готовности к обслуживанию{"status":"UP"}, при неисправности — код 503
docker compose restart appперезапуск программысообщение о перезапуске контейнера; через 20–60 секунд готовность снова UP
docker compose exec postgres psql -U fortuna -d school_fortuna -c "SELECT slug, title, published FROM lessons ORDER BY sort_order;"просмотр каталога уроков в базе данныхтаблица уроков с признаком публикации
docker compose stopзавершение работы с сохранением данныхсообщения об остановке контейнеров; повторный запуск — docker compose start
docker compose downостановка и удаление контейнеров; данные базы сохраняются в томесообщения об удалении контейнеров и сети
docker compose down -vполное удаление экземпляра вместе с даннымидополнительно — сообщение об удалении тома postgres-data

5.5. Управление содержимым

Содержимое хранится в базе данных: профиль организации — таблица organization_profile, блоки главной страницы — content_blocks, каталог уроков — lessons. На сайт выводятся только записи с признаком published = TRUE, в порядке поля sort_order; изменения в базе данных видны посетителю при следующем обращении к странице.

  • Снять урок с публикации: docker compose exec postgres psql -U fortuna -d school_fortuna -c "UPDATE lessons SET published = FALSE WHERE slug = 'адрес-урока';". Ответ: UPDATE 1; страница урока начинает отвечать кодом 404.
  • Добавить урок: в новой версии программы добавляются SQL-миграция db/migration/V{номер}__{описание}.sql с записью в таблице lessons и шаблон страницы templates/lessons/{адрес-урока}.html. Миграция применяется автоматически при запуске.
  • Если опубликованный урок не имеет шаблона страницы или его адрес содержит недопустимые символы, программа не переходит в состояние готовности: проба готовности отвечает кодом 503, причина записывается в журнал.

5.6. Резервное копирование, восстановление и обновление

  • Резервная копия: docker compose exec postgres pg_dump -U fortuna school_fortuna > backup.sql — создаёт файл backup.sql.
  • Восстановление в новый экземпляр: docker compose down -v, docker compose up -d postgres, затем docker compose exec -T postgres psql -U fortuna -d school_fortuna < backup.sql и docker compose up -d.
  • Обновление: сделайте резервную копию, распакуйте архив новой версии в отдельный каталог, выполните в старом каталоге docker compose down, в новом — docker compose up --build -d. Миграции схемы базы данных применяются автоматически, данные сохраняются в томе.

5.7. Нештатные ситуации

Признак Причина Действие
при запуске выводится FORTUNA_DB_PASSWORD is requiredне задан пароль базы данныхзадать переменную окружения (п. 5.2)
готовность 503, в журнале password authentication failedпароль отличается от заданного при первом запускеуказать прежний пароль либо удалить данные командой docker compose down -v
готовность 503 при работающей базе данныхопубликованный урок без шаблона или с недопустимым адресомпо журналу найти урок, снять его с публикации или добавить шаблон
address already in use при запускепорт 8080 или 5432 занят другой программойосвободить порт или изменить раздел ports в compose-файле

5.8. Консультации

По установке, настройке и эксплуатации консультирует директор АНО «Фортуна» Овчаренко Андрей Александрович: info@school-fortuna.ru, телефон +7 (960) 450-06-00.

6. Жизненный цикл

Разработку и сопровождение выполняет правообладатель. Исходный текст хранится в системе контроля версий Git. Каждое изменение проходит автоматическую сборку и тесты; выпуски помечаются тегами версий. Выпускная сборка дистрибутива и образов выполняется на сервере в Российской Федерации. Сообщения об ошибках и вопросы принимаются по адресу info@school-fortuna.ru; ответ предоставляется в течение пяти рабочих дней.

7. Стоимость

Стоимость программы — 0 (ноль) рублей. Программа распространяется безвозмездно на условиях открытой лицензии (статья 1286.1 Гражданского кодекса Российской Федерации) — GNU General Public License версии 3 или более поздней. Текст лицензии: gpl-3.0.txt; он же входит в архив дистрибутива (файл LICENSE).

Платных функций, лицензионных ключей и тарифной политики нет. Установка, обновления и техническая поддержка предоставляются безвозмездно.

8. Контакты

АНО «Фортуна», info@school-fortuna.ru, телефон +7 (960) 450-06-00.