Программа для ЭВМ · документация
Программное обеспечение «Фортуна»
Веб-приложение официального сайта АНО «Фортуна» с каталогом открытых уроков по языку 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. Установка
- Скачайте архив fortuna-1.0.0.zip и сверьте его SHA-256 со значением в файле SHA256SUMS.txt.
- Распакуйте архив. Готовый исполняемый файл приложения находится в каталоге
target/. - Задайте пароль базы данных в переменной окружения
FORTUNA_DB_PASSWORD. - Для Astra Linux выполните
docker compose up --build, для ОС Альт —docker compose -f compose.alt.yaml up --build. - Откройте
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. Загрузка и запуск
- Перейдите в каталог распакованного архива:
cd fortuna-1.0.0. - Задайте пароль базы данных:
export FORTUNA_DB_PASSWORD='пароль'. При повторных запусках указывайте тот же пароль: он записывается в базу данных при первом запуске. - Запустите программу:
docker compose up -d(при первом запуске —docker compose up --build -d). Ответ: сообщения о создании и запуске контейнеровpostgresиapp; контейнерpostgresполучает состояниеHealthy. - Дождитесь окончания загрузки:
docker compose logs -f app. Ответ программы при успешной загрузке — строкаStarted SchoolFortunaSiteApplication in N seconds; при первом запуске перед ней выводятся сообщения Flyway о создании схемы базы данных и загрузке исходного содержимого. - Проверьте готовность:
curl -i http://127.0.0.1:8080/actuator/health/readiness. ОтветHTTP 200и{"status":"UP"}означает, что программа подключена к базе данных и содержимое полно. ОтветHTTP 503со статусомDOWNилиOUT_OF_SERVICEозначает, что загрузка не завершена или обнаружена неисправность (см. п. 5.7). - Откройте в браузере
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.