Grav flat-file CMS — установка, настройка и оптимизация без базы данных.
Проблема: база данных под нагрузкой
На одном из проектов клиента WordPress «падал» при пиковых нагрузках — MySQL не справлялась с N+1 запросами, LCP достигал 3.2 секунды. Решение — переход на Grav, flat-file CMS без БД. Страницы начали генерироваться из файлов, скорость выросла в 4 раза, LCP снизился до 0.8 с. Grav хранит контент в YAML-файлах, а не в таблицах, поэтому нет простоев из-за SQL-запросов. Ниже — как мы устанавливаем и настраиваем Grav под ключ.
Почему Grav решает эти проблемы?
Отсутствие базы данных исключает классические проблемы традиционных CMS: N+1 запросы, медленные JOIN, блокировки таблиц. Grav читает контент напрямую из файлов — это даёт прирост скорости до 4× по сравнению с типичной CMS. Развёртывание упрощается: достаточно PHP и веб-сервера, не нужен отдельный сервер БД. Grav кэширует статические страницы; на сервере с 2 vCPU и 4 GB RAM LCP падает в 4 раза. Наша команда с 10+ летним опытом внедрения таких решений гарантирует стабильность.
Установка и базовая настройка
Выбор метода установки
| Метод | Сложность | Время | Преимущество |
|---|---|---|---|
| Прямая загрузка ZIP | Низкая | 5 мин | Простота |
| Composer | Средняя | 10 мин | Версионирование, обновление одной командой |
| Admin Panel (веб-инсталлятор) | Низкая | 15 мин | Для Apache, генерация пользователя |
Рекомендуем Composer — он проще в поддержке и позволяет легко обновлять ядро и плагины.
# Composer composer create-project getgrav/grav /var/www/mysite # Права find . -type f | xargs chmod 664 find . -type d | xargs chmod 775 find . -type d -name cache -o -name logs -o -name images -o -name assets | xargs chmod 777 Настройка Nginx
server { listen 80; server_name mysite.com; root /var/www/mysite; index index.php; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ ^/(\.git|cache|logs|backup|bin|system|vendor|\.env) { return 403; } location ~ \.php$ { fastcgi_pass unix:/run/php/php8.1-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } Для Apache используйте .htaccess из поставки Grav.
Базовая конфигурация
# user/config/system.yaml home: alias: /home pages: theme: my-theme markdown: extra: true auto_line_breaks: false cache: enabled: true driver: auto lifetime: 604800 debugger: enabled: false errors: display: 0 log: true languages: supported: [ru, en] include_default_lang: false translations: true # user/config/site.yaml title: Мой сайт author: name: Компания email: [email protected] metadata: description: Описание сайта taxonomies: [category, tag] summary: enabled: true size: 300 Производительность и безопасность
Кэширование и сжатие
| Оптимизация | Рекомендация | Эффект |
|---|---|---|
| Кэш | Включить, driver = redis, lifetime = 604800 | Снижение TTFB в 2-3 раза |
| Gzip | Включить на уровне сервера | Уменьшение объёма данных до 70% |
| Минификация | Плагин Assets | Сокращение CSS/JS на 30% |
| CDN | Cloudflare | Снижение нагрузки на сервер вдвое |
Для максимальной производительности мы настраиваем Redis — это ускоряет ответ сервера ещё на 30% по сравнению с файловым кэшем.
Управление окружениями
Переключение между production и development через переменную GRAV_ENVIRONMENT:
# user/config/env/production/system.yaml cache: enabled: true driver: redis redis: socket: '/var/run/redis/redis.sock' debugger: enabled: false # user/config/env/development/system.yaml cache: enabled: false debugger: enabled: true shutdown: close_connection: true Окружение задаётся переменной GRAV_ENVIRONMENT в начале запроса (production или development).
Управление плагинами и администратором
GPM — менеджер пакетов
bin/gpm index bin/gpm install form login admin sitemap feed bin/gpm update bin/gpm selfupgrade bin/gpm list Создание администратора
Администратор создаётся командой bin/plugin login newuser --user=admin --password=... --admin=true — параметры задаются под ваши данные.
Что входит в нашу работу
- Полная установка и первичная конфигурация Grav на вашем сервере.
- Настройка Nginx/Apache, PHP-FPM, защита служебных директорий.
- Установка базовых плагинов: Form, Login, Admin, Sitemap.
- Конфигурация system.yaml и site.yaml под ваш проект.
- Включение кэширования (Redis или файловое) и сжатия.
- Создание администратора и удаление инсталлятора.
- Документирование управления: доступы, GPM-команды, рекомендации по резервному копированию.
- Консультация по дальнейшей оптимизации и поддержке.
Пошаговый запуск Grav: от нуля до рабочего сайта
- Установите Grav через Composer:
composer create-project getgrav/grav /var/www/mysite. - Настройте веб-сервер — скопируйте конфиг Nginx из раздела выше или используйте
.htaccessдля Apache. - Установите Admin-плагин:
bin/gpm install admin login form sitemap. - Создайте администратора командой
bin/plugin login newuserс вашими учётными данными. - Настройте
user/config/system.yaml— включите кеш, укажите тему, добавьте нужные языки. - Переключите окружение через переменную
GRAV_ENVIRONMENT=productionдля боевого сервера. - Проверьте права доступа на папки
cache,logs,images— они должны быть 777. - Закройте служебные директории в конфиге веб-сервера согласно примеру Nginx выше.
После этих шагов сайт готов к наполнению контентом. Для сложных проектов с мультиязычностью, кастомными темами и e-commerce обращайтесь к нам — настроим Grav под ключ за 1–3 дня. Стоимость базовой установки — от 5 000 ₽, с оптимизацией Redis и настройкой окружений — от 15 000 ₽.
Мы — команда с 10+ летним опытом в веб-разработке. Настроили уже более 200 проектов на Grav. Даём гарантию: если что-то не работает — дорабатываем бесплатно. Свяжитесь с нами, чтобы получить консультацию по настройке и оптимизации под ваш проект. Закажите установку Grav — и мы превратим ваш сайт в быстрый, надёжный flat-file проект.
Типичные ошибки при настройке
- Неправильные права на папки cache, logs, images — сайт не загружается или не кэшируется.
- Забыли отключить debugger в production — снижение производительности и утечка данных.
- Не настроили rewrite-правила для Nginx/Apache — 404 ошибки при обращении к страницам.
- Используете файловый кэш на сервере с частыми перезаписями — лучше Redis.
Официальная документация Grav: Grav Documentation







