Гид по технологиям

Установка Grav CMS на Debian 9 с Nginx и Let’s Encrypt

• 5 min read • Инструкции • Обновлено 26 Nov 2025
Установка Grav на Debian 9 с Nginx и Let’s Encrypt
Установка Grav на Debian 9 с Nginx и Let’s Encrypt

Логотип Grav и описание: быстрая, простая и гибкая файловая платформа

Grav — это быстрая, простая и гибкая файловая веб-платформа. Она следует принципам flat-file CMS, но отличается собственной философией проектирования. Grav включает мощную систему управления пакетами для установки и обновления плагинов, тем и самого ядра.

Архитектура Grav построена на проверенных технологиях, что делает систему простой в использовании и лёгкой для расширения. К ключевым технологиям относятся:

  • Twig — шаблонизатор для гибкого управления интерфейсом;
  • Markdown — для удобного создания контента;
  • YAML — для простых конфигураций;
  • Parsedown — быстрый парсер Markdown и Markdown Extra;
  • Doctrine Cache — слой кеширования для повышения производительности;
  • Pimple DI Container — контейнер зависимостей для расширяемости;
  • Symfony Event Dispatcher — обработка событий плагинов;
  • Symfony Console — CLI-инструменты;
  • Gregwar Image Library — динамическая обработка изображений.

Основные требования

  • Веб-сервер: Nginx (в инструкции используется Nginx). Альтернативы: Apache, LiteSpeed, IIS.
  • PHP 7.1.3 или выше и расширения: curl, ctype, dom, gd, json, mbstring, openssl, session, simplexml, xml, zip. Дополнительно: apcu и opcache по желанию.

Что нужно подготовить

  • Сервер с Debian 9.
  • Непользователь root; учётная запись с sudo-привилегиями.

Первичные шаги

Проверьте версию Debian:

lsb_release -ds
# Debian GNU/Linux 9.9 (stretch)

Настройте часовой пояс:

sudo dpkg-reconfigure tzdata

Обновите пакеты ОС:

sudo apt update && sudo apt upgrade -y

Установите основные инструменты администрирования:

sudo apt install -y curl wget vim git unzip socat apt-transport-https

Шаг 1 — установка PHP и расширений

Grav требует PHP 7.1+. В репозитории Debian 9 доступен PHP 7.0/7.1, поэтому мы добавим репозиторий SURY для версии 7.2 (пример). Выполните:

sudo apt install apt-transport-https lsb-release ca-certificates
sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list
sudo apt update

Установите PHP 7.2 и нужные модули:

sudo apt install -y php7.2 php7.2-cli php7.2-fpm php7.2-common php7.2-curl php7.2-gd php7.2-json php7.2-mbstring php7.2-xml php7.2-zip php7.2-opcache php-apcu

Проверьте версию PHP:

php --version

# Пример вывода:
# PHP 7.2.18-1+0~20190503103213.21+stretch~1.gbp101320 (cli) (built: May  3 2019 10:32:13) ( NTS )

PHP-FPM на Debian 9 запускается и включается автоматически. После установки можно переходить к SSL-настройке.

Шаг 2 — установка acme.sh и получение сертификата Let’s Encrypt (опционально)

HTTPS не обязателен, но настоятельно рекомендуется. В этой инструкции мы используем acme.sh — лёгкий клиент на shell без зависимости от Python/Node.

Установите acme.sh и зарегистрируйте почту аккаунта:

sudo mkdir /etc/letsencrypt
sudo git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
sudo ./acme.sh --install --home /etc/letsencrypt --accountemail [email protected]
cd ~

Проверьте версию acme.sh:

/etc/letsencrypt/acme.sh --version
# v2.8.0

Запросите сертификаты RSA и ECDSA для вашего домена (замените example.com на ваш домен):

# RSA 2048
sudo /etc/letsencrypt/acme.sh --issue --standalone --home /etc/letsencrypt -d example.com --keylength 2048
# ECDSA
sudo /etc/letsencrypt/acme.sh --issue --standalone --home /etc/letsencrypt -d example.com --keylength ec-256

После успешного выполнения сертификаты и ключи будут расположены:

  • RSA: /etc/letsencrypt/example.com
  • ECDSA: /etc/letsencrypt/example.com_ecc

Совет: для автоматического обновления и установки в Nginx используйте опции –install-cert и укажите пути.

Шаг 3 — установка и настройка Nginx

Установите Nginx:

sudo apt install -y nginx

Проверьте версию:

nginx -v
# nginx version: nginx/1.10.3

Создайте файл конфигурации виртуального хоста:

sudo vim /etc/nginx/sites-available/grav.conf

Вставьте в него следующее (подставьте ваш server_name и root при необходимости):

server {
  listen 80;

  server_name example.com;
  root /var/www/grav;

  index index.html index.php;

  location / {
    try_files $uri $uri/ /index.php?$query_string;
  }

  location ~* /(\.git|cache|bin|logs|backup|tests)/.*$ { return 403; }
  location ~* /(system|vendor)/.*\.(txt|xml|md|html|yaml|yml|php|pl|py|cgi|twig|sh|bat)$ { return 403; }
  location ~* /user/.*\.(txt|md|yaml|yml|php|pl|py|cgi|twig|sh|bat)$ { return 403; }
  location ~ /(LICENSE\.txt|composer\.lock|composer\.json|nginx\.conf|web\.config|htaccess\.txt|\.htaccess) { return 403; }

  location ~ \.php$ {
    fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
  }

}

Активируйте сайт и проверьте конфигурацию:

sudo ln -s /etc/nginx/sites-available/grav.conf /etc/nginx/sites-enabled
sudo nginx -t
sudo systemctl reload nginx.service

Если вы получили сертификаты в шаге 2, настройте блок server для HTTPS: добавьте listen 443 ssl; пути к .crt и .key из /etc/letsencrypt/example.com — проверьте права и владелец файлов.

Important: не забывайте защитить конфиденциальные директории и файлы, как показано в конфигурации выше.

Шаг 4 — установка Grav CMS

Создайте корневую папку сайта:

sudo mkdir -p /var/www/grav

Передайте права вашему пользователю (замените {your_user} на реальный логин):

sudo chown -R {your_user}:{your_user} /var/www/grav

Перейдите в папку сайта и загрузите пакет Grav Admin (версия в примере — 1.6.9). Обновите URL при необходимости.

cd /var/www/grav
wget https://getgrav.org/download/core/grav-admin/1.6.9
unzip 1.6.9
mv grav-admin/* . && mv grav-admin/.* .
rm -rf grav-admin 1.6.9

После распаковки установите владельца www-data для работы веб-сервера:

sudo chown -R www-data:www-data /var/www/grav

NOTE: проверяйте официальную страницу загрузок Grav на предмет новых релизов.

Шаг 5 — завершение настройки Grav

Откройте сайт в браузере по вашему домену. Должна появиться страница для создания административного аккаунта Grav. Создайте пользователя и нажмите кнопку “Create User”:

Страница создания администратора Grav в браузере

После создания учётной записи установка завершена.

Критерии приёмки

  • Сайт доступен по HTTP (порт 80) и/или HTTPS (порт 443).
  • Главная страница Grav отображается без ошибок PHP.
  • В админке можно создать пользователя и войти.
  • Статические файлы (CSS/JS) загружаются корректно.
  • Конфигурация Nginx закрывает доступ к чувствительным файлам и папкам.

Чек-листы по ролям

Sysadmin:

  • Обновил систему и установил PHP-FPM, Nginx.
  • Настроил сертификаты и автоматическое обновление certs.
  • Настроил права и резервное копирование /var/www/grav.

Разработчик:

  • Проверил шаблон Twig и работу Markdown.
  • Убедился, что кешировка и opcache работают.
  • Протестировал плагины в staging перед production.

Контент-менеджер:

  • Создал административного пользователя.
  • Проверил редактор страниц и загрузку изображений.

Быстрый факт-бокс

  • Минимальный PHP: 7.1.3
  • Рекомендуемые расширения: gd, json, mbstring, zip
  • Примерная минимальная установка пакетов: 10–15 пакетов (зависит от набора расширений)
  • Стандартный путь установки: /var/www/grav

Альтернативные подходы

  • Apache: используйте файл .htaccess и модуль php-fpm через proxy_fcgi;
  • Docker: официальный образ Grav позволяет изолировать окружение и упростить деплой;
  • Управляемый хостинг: многие провайдеры поддерживают Grav без ручной настройки сервера.

Когда этот план не подойдёт: если вы используете Windows-сервер или у вас уже настроен другой веб-сервер с нестандартной архитектурой — рассмотрите Docker или PaaS-решения.

Безопасность и рекомендации по эксплуатации

  • Обновляйте Grav и плагины регулярно через панель администратора или CLI.
  • Настройте бэкапы файлов и конфигураций / базы данных (если используются внешние сервисы).
  • Закройте доступ к административным директориям по IP при возможности.
  • Следите за сроком действия сертификатов и автоматизируйте их обновление.

Короткий план обновлений (mini-методология)

  1. Сделать резервную копию /var/www/grav и конфигураций Nginx.
  2. В режиме теста обновить Grav и плагины на staging.
  3. Прогнать smoke-тесты (главная страница, админка, статические ресурсы).
  4. Если всё хорошо — обновить production и мониторить логи 24 часа.

Быстрое руководство по устранению неполадок

  • 502 Bad Gateway: проверьте статус php7.2-fpm и путь unix-сокета в Nginx.
  • 403 на файлы: проверьте правила location в конфигурации Nginx и права на файловой системе.
  • Белый экран/500: включите логи Grav (logs/) и системные логи /var/log/nginx/error.log и /var/log/php7.2-fpm.log.

Часто задаваемые вопросы

Q: Можно ли установить Grav без SSL? A: Да, Grav работает без HTTPS. Однако лучше использовать HTTPS для защиты трафика и админ-панели.

Q: Как обновлять сертификаты acme.sh? A: Acme.sh сам создаёт cron- или systemd-задание при установке. Проверьте /etc/letsencrypt и логи acme.sh.

Полезные ссылки

Итого: следуя этим шагам, вы получите рабочую установку Grav на Debian 9 с Nginx и при необходимости с автоматическим получением сертификатов Let’s Encrypt. После установки уделите внимание регулярным обновлениям, бэкапам и настройкам безопасности.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро