Готовая серверная часть для проекта «Электронная библиотека» с автоматическим сканированием указанной папки на сервере.
- Автосканирование каталога
ELIBRARY_ROOTи индексация книг форматов: PDF, EPUB, FB2, DJVU, DOCX. - Раскладка книг по направлениям и программам на основе структуры папок:
root/<направление>/<программа>/<файл-книги>
- Глубокий анализ метаданных:
- sidecar JSON (
book.pdf.json), - извлечение заголовка из PDF/EPUB/FB2/DOCX,
- fallback к анализу имени файла.
- sidecar JSON (
- Поиск по каталогу с базовой морфологической нормализацией русского текста.
- Привязка медиафайлов к книге (изображения/аудио/видео с тем же именем файла).
- Генерация динамической ссылки на скачивание (TTL по умолчанию 5 минут).
GET /healthGET /version— версия сервиса (для проверки успешного обновления).POST /scan— пересканировать каталог.GET /books— список/фильтрация/поиск.GET /books/{book_id}— карточка книги.GET /books/{book_id}/dynamic-link— временная ссылка.GET /download?...— проверка динамической ссылки.GET /— человеко-понятный веб-интерфейс каталога.GET /ui/books/{book_id}— карточка книги в веб-интерфейсе.
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
export ELIBRARY_ROOT=/absolute/path/to/library
export ELIBRARY_SIGNING_KEY=$(openssl rand -hex 32)
uvicorn app.main:app --reload/library
/Информатика
/Python
Гвидо ван Россум - Введение в Python.pdf
Гвидо ван Россум - Введение в Python.mp4
sudo apt update
sudo apt install -y python3 python3-venv apache2
sudo a2enmod proxy proxy_http headerssudo mkdir -p /opt/e_library
sudo cp -R . /opt/e_library
cd /opt/e_library
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtsudo mkdir -p /srv/e_library/library
sudo chown -R www-data:www-data /srv/e_library- Скопируйте шаблон сервиса:
sudo cp deploy/systemd/e_library.service /etc/systemd/system/e_library.service- Отредактируйте
/etc/systemd/system/e_library.service:ELIBRARY_ROOT(путь к папке книг)ELIBRARY_SIGNING_KEY(длинный секрет)WorkingDirectoryиExecStart, если путь другой
- Запустите сервис:
sudo systemctl daemon-reload
sudo systemctl enable --now e_library
sudo systemctl status e_librarysudo cp deploy/apache/e_library.conf /etc/apache2/sites-available/e_library.conf
sudo a2ensite e_library.conf
sudo systemctl reload apache2По умолчанию Apache слушает *:80, а backend работает на 127.0.0.1:8085.
Для доступа по локальной сети откройте в браузере:
http://<IP_СЕРВЕРА>/— обычный сайт библиотекиhttp://<IP_СЕРВЕРА>/docs— технический API Swagger
sudo ufw allow 80/tcp
sudo ufw reloadcurl http://127.0.0.1:8085/health
curl http://<IP_СЕРВЕРА>/healthРекомендуется явно задать
ELIBRARY_SIGNING_KEY; иначе будет сгенерирован эфемерный ключ на каждый запуск.
pytest -q