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

Установка Grav CMS на Ubuntu 20.04 с Nginx и Let's Encrypt

• 5 min read • DevOps • Обновлено 23 Nov 2025
Grav CMS: Nginx + Let's Encrypt на Ubuntu 20.04
Grav CMS: Nginx + Let's Encrypt на Ubuntu 20.04

Что такое Grav (одним предложением)

Grav — это лёгкая открытая CMS без базы данных, которая хранит контент в файлах и использует Twig, Markdown и YAML.

Предварительные требования

  • Сервер с Ubuntu 20.04.
  • Доменное имя, настроенное на IP сервера (A-запись).
  • Пароль root или доступ через sudo.

Важно: перед началом убедитесь, что DNS указывает на ваш сервер и что порт 80 доступен извне (для проверки Let’s Encrypt).

План действий (кратко)

  1. Обновить пакеты.
  2. Установить Nginx, PHP и расширения.
  3. Настроить php.ini и перезапустить php-fpm.
  4. Скачать и развернуть Grav в веб-корень.
  5. Создать конфигурацию Nginx для сайта.
  6. Проверить конфигурацию и перезапустить Nginx.
  7. Установить Certbot и получить SSL-сертификат.

Обновление системы

Обновите списки пакетов и установите последние версии:

apt-get update -y

После обновления можно переходить к установке сервисов.

Установка Nginx и PHP

Установите Nginx, PHP-FPM и необходимые расширения:

apt-get install nginx php php-cli php-fpm php-common php-curl php-gd php-json php-mbstring php-xml php-zip php-opcache php-apcu unzip -y

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

php --version

Ожидаемый пример вывода (на вашем сервере может быть другая версия):

PHP 7.4.3 (cli) (built: Jul  5 2021 15:13:35) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies

Редактирование php.ini

Откройте конфигурационный файл PHP-FPM для правки настроек производительности и загрузки:

nano /etc/php/7.4/fpm/php.ini

Найдите и измените/проверьте эти строки (оставьте значения в соответствии с потребностями сайта):

memory_limit = 256M
upload_max_filesize = 100M
max_execution_time = 360
max_input_vars = 1500
date.timezone = America/Chicago

Важно: замените date.timezone на ваш часовой пояс, например Europe/Moscow, если нужно.

Сохраните файл и перезапустите PHP-FPM:

systemctl restart php7.4-fpm

Установка Grav CMS

Перейдите в веб-корень и скачайте архив с Grav Admin:

cd /var/www/html  
wget https://getgrav.org/download/core/grav-admin/1.7.17

Распакуйте архив:

unzip 1.7.17

Переименуйте извлечённую директорию и задайте права владельца:

mv grav-admin grav
chown -R www-data:www-data /var/www/html/grav

Права и владелец важны: веб-сервер (www-data) должен иметь доступ на запись к нужным папкам (cache, images, logs, assets, backups и т.д.).

Настройка Nginx для Grav

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

nano /etc/nginx/conf.d/grav.conf

Вставьте (или отредактируйте) следующую конфигурацию:

server {

listen 80;

server_name grav.example.com;
root /var/www/html/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.4-fpm.sock;
   fastcgi_split_path_info ^(.+\.php)(/.+)$;
   fastcgi_index index.php;
   include fastcgi_params;
   fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
 }

}

Сохраните и проверьте синтаксис Nginx:

nginx -t

Ожидаемый вывод:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Перезапустите Nginx и проверьте статус:

systemctl restart nginx
systemctl status nginx

Пример вывода systemd (будет отличаться в вашей системе):

? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2021-07-09 06:45:28 UTC; 3s ago
       Docs: man:nginx(8)
    Process: 33099 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
...

Доступ к интерфейсу Grav

После настройки откройте в браузере http://grav.example.com

Переход к интерфейсу установки Grav CMS

Заполните логин и пароль администратора и нажмите Create User — вы будете перенаправлены в панель управления:

Панель управления Grav CMS

Конфигурация системы:

Страница системных настроек Grav

Учетные записи пользователей:

Список учётных записей Grav

Плагины:

Список плагинов Grav

Инструменты и резервное копирование:

Функция резервного копирования в Grav

Защита сайта через Let’s Encrypt (Certbot)

Установите Certbot с плагином для Nginx:

apt-get install python3-certbot-nginx -y

Запустите Certbot и выдайте сертификат для домена:

certbot --nginx -d grav.example.com

В процессе вас попросят указать email и согласиться с условиями. В конце предложат автоматически перенаправлять HTTP на HTTPS — обычно для новых сайтов выбирайте перенаправление (Redirect).

Пример интерактивной сессии и типичный итоговый вывод приведены в исходной инструкции. После успешного завершения сертификат будет сохранён в /etc/letsencrypt/live/grav.example.com/.

Важно: Certbot настраивает cron/systemd для автоматического обновления сертификатов. Проверьте работу команды “certbot renew –dry-run”.

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

  • Сайт доступен по HTTPS: https://grav.example.com
  • На странице установки можно создать администратора и войти в панель.
  • Файлы сертификата присутствуют: /etc/letsencrypt/live/grav.example.com/fullchain.pem и privkey.pem
  • Nginx конфигурация проходит проверку nginx -t без ошибок.

Отладка и распространённые ошибки

  • Nginx не стартует: выполните nginx -t, затем journalctl -u nginx -b для логов.
  • Ошибка FastCGI: проверьте путь к сокету php7.4-fpm.sock и что php-fpm работает: systemctl status php7.4-fpm.
  • Проблемы с правами: chown -R www-data:www-data /var/www/html/grav и проверьте права для папок cache и logs.
  • Certbot не смог пройти проверку: убедитесь, что порт 80 открыт и домен указывает на сервер.

Когда этот подход не подходит

  • Вам нужна масштабируемая, шардированная CMS с БД и большими нагрузками — лучше рассмотреть WordPress в связке с БД и балансировкой нагрузки.
  • Требуются сложные транзакционные возможности и реляционные связи между сущностями — Grav не предназначен для этого.

Рекомендации по безопасности

  • Регулярно обновляйте пакеты: apt-get update && apt-get upgrade.
  • Настройте брандмауэр (ufw): разрешите 22 (или SSH порт), 80 и 443, закройте всё лишнее.
  • Сделайте резервные копии каталога /var/www/html/grav и /etc/letsencrypt.
  • Ограничьте доступ к административной панели по IP или используйте двухфакторную аутентификацию (если плагин доступен).
  • Минимизируйте права: веб-процессу нужен доступ только к необходимым каталогам.

Чек-лист ролей

  • DevOps / Системный администратор:

    • Подготовил сервер и DNS.
    • Установил Nginx, PHP-FPM и Certbot.
    • Настроил SSL и автоматическое продление.
    • Настроил бэкапы и мониторинг.
  • Веб-разработчик:

    • Убедился в корректной работе шаблонов Twig.
    • Проверил загрузку медиа и обработку изображений.
    • Настроил плагины, не нарушающие безопасность.
  • Контент-менеджер:

    • Создал учётную запись администратора.
    • Заполнил тестовое содержимое в Markdown.
    • Проверил отображение страниц и меню.

Мини-методология развёртывания (быстрая шпаргалка)

  1. Обновление: apt-get update -y && apt-get upgrade -y
  2. Установка: apt-get install nginx php-fpm …
  3. Настройка PHP: изменить php.ini и перезапустить php-fpm
  4. Развёртывание Grav: wget, unzip, chown
  5. Nginx: создать конфиг, nginx -t, systemctl restart nginx
  6. SSL: apt-get install certbot, certbot –nginx -d your.domain

Однострочный глоссарий

  • Grav: CMS без БД на основе файлов.
  • Nginx: веб-сервер и обратный прокси.
  • PHP-FPM: менеджер процессов PHP.
  • Certbot: клиент для Let’s Encrypt.

Короткое резюме

Вы установили Grav CMS на Ubuntu 20.04, настроили Nginx и PHP-FPM, развернули сайт в /var/www/html/grav и защитили его SSL-сертификатом от Let’s Encrypt. Проверьте доступ по HTTPS и настройте регулярные бэкапы и обновления.

Важно: изменяйте конфигурации под потребности вашей среды и всегда проверяйте работу обновлений на тестовом стенде.

Поделиться: 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 быстро