Современная веб-система управления библиотекой, разработанная на PHP с использованием фреймворка Yii 2. Система предоставляет полный функционал для управления книгами, авторами и категориями с интуитивно понятным интерфейсом.
- 📖 Управление книгами: добавление, редактирование, удаление книг с обложками
- 👥 Управление авторами: создание и связывание авторов с книгами
- 📁 Иерархические категории: организация книг по категориям и подкатегориям
- 🔍 Умная фильтрация: поиск и фильтрация книг по названию, автору, статусу
- 🛡️ Система аутентификации: защищенная админ-панель
- 📱 Адаптивный дизайн: Bootstrap 5 для всех устройств
- 🗄️ Импорт данных: автоматическая загрузка книг из внешних источников
- Backend: PHP 8.2, Yii Framework 2.0.45
- Frontend: Bootstrap 5, HTML5, CSS3, JavaScript
- База данных: MySQL 8.0
- Веб-сервер: Nginx + PHP-FPM
- Контейнеризация: Docker, Docker Compose
- Тестирование: Codeception
- Почта: Symfony Mailer
- Docker и Docker Compose
- Git
- Клонируйте репозиторий:
git clone <repository-url>
cd books-management-system- Запустите контейнеры:
docker-compose up -d --build- Выполните миграции базы данных:
docker-compose exec php php yii migrate- Загрузите тестовые данные:
docker-compose exec php php yii books/load- Откройте приложение: Перейдите по адресу: http://localhost:8080
├── src/ # Основной код приложения
│ ├── config/ # Конфигурационные файлы
│ ├── controllers/ # Контроллеры (SiteController, AdminController)
│ ├── forms/ # Формы для валидации данных
│ ├── models/ # Модели (Book, Author, Category)
│ ├── views/ # Шаблоны представлений
│ ├── migrations/ # Миграции базы данных
│ ├── commands/ # Консольные команды
│ ├── assets/ # Статические ресурсы
│ └── web/ # Публичная директория
├── php/ # Dockerfile для PHP
├── nginx/ # Конфигурация Nginx
├── mysql/ # Инициализационные скрипты MySQL
└── tests/ # Тесты (Codeception)
- Главная страница (
/) - отображение категорий верхнего уровня - Категории (
/site/category?categoryId=X) - список книг в категории с фильтрацией - Детали книги (
/site/book?isbn=X) - подробная информация о книге - Контакты (
/site/contact) - форма обратной связи
- Вход (
/admin/login) - аутентификация администратора - Управление категориями (
/admin/category) - CRUD операции с категориями - Управление книгами (
/admin/book) - CRUD операции с книгами
# Загрузка книг из внешнего источника
docker-compose exec php php yii books/load
# Выполнение миграций
docker-compose exec php php yii migrate
# Сброс кэша
docker-compose exec php php yii cache/flush-all- books - информация о книгах (ISBN как первичный ключ)
- authors - список авторов
- categories - иерархические категории
- books_authors - связь многие-ко-многим между книгами и авторами
categories (id, parent_id, name)
books (isbn, title, pageCount, publishedDate, shortDescription, longDescription, status, category_id)
authors (id, name)
books_authors (author_id, isbn)Создайте файл .env в корне проекта:
DB_HOST=mysql
DB_NAME=books_db
DB_USER=bookuser
DB_PASSWORD=bookpass
MYSQL_ROOT_PASSWORD=rootpass
MYSQL_DATABASE=books_db
MYSQL_USER=bookuser
MYSQL_PASSWORD=bookpassКонфигурация подключения к БД находится в src/config/db.php:
return [
'class' => 'yii\db\Connection',
'dsn' => "mysql:host={$_ENV['DB_HOST']};dbname={$_ENV['DB_NAME']}",
'username' => $_ENV['DB_USER'],
'password' => $_ENV['DB_PASSWORD'],
'charset' => 'utf8',
];# Unit тесты
docker-compose exec php vendor/bin/codecept run unit
# Functional тесты
docker-compose exec php vendor/bin/codecept run functional
# Acceptance тесты
docker-compose exec php vendor/bin/codecept run acceptance- Unit - тестирование отдельных компонентов
- Functional - тестирование контроллеров
- Acceptance - тестирование пользовательского интерфейса
- Доступ к админ-панели только для авторизованных пользователей
- Защита от CSRF атак через встроенные средства Yii
- Валидация всех входных данных
- Защита от SQL-инъекций через prepared statements
- Регулярно обновляйте зависимости
- Используйте HTTPS в production
- Настройте файрвол для базы данных
- Ограничьте доступ к файлам конфигурации
# Установите Docker и Docker Compose
sudo apt update
sudo apt install docker.io docker-composeserver {
listen 443 ssl;
server_name yourdomain.com;
ssl_certificate /path/to/certificate.crt;
ssl_certificate_key /path/to/private.key;
# остальная конфигурация...
}- Логи приложения:
docker-compose logs -f php - Логи Nginx:
docker-compose logs -f nginx - Логи MySQL:
docker-compose logs -f mysql
# Создание резервной копии БД
docker-compose exec mysql mysqldump -u bookuser -pbookpass books_db > backup.sql
# Восстановление из резервной копии
docker-compose exec -T mysql -u bookuser -pbookpass books_db < backup.sql