Grav CMS — файловая (не использующая БД) система управления сайтами. В сочетании с шаблоном Learn2 отлично подходит для создания базы знаний и\или документации к какому-либо продукту. По оформлению близка к известному ReadTheDocs.
Установка веб-сервера подробно описана тут, в листингах ниже приведу только необходимые в текущей настройке команды и конфиги.
Обновляемся и ставим пакеты Nginx и php-fpm.
$ apt-get update
$ apt-get install nginx php-fpm unzip
Устанавливаем дополнительные библиотеки PHP.
$ apt-get install php-curl php-dompdf php-gd php-mbstring php-xml php-zip
Создаем конфиг Nginx; указанную директорию (/var/www/grav) создадим позже, при распаковке архива.
$ nano /etc/nginx/sites-available/grav.koobik.lan
server {
listen 80;
root /var/www/grav/;
index index.php index.html;
server_name grav.koobik.lan;
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|json|yaml|yml|php|pl|py|cgi|twig|sh|bat)$ { return >
location ~* /user/.*\.(txt|md|json|yaml|yml|php|pl|py|cgi|twig|sh|bat)$ { return 403; }
location ~ /(LICENSE\.txt|composer\.lock|composer\.json|nginx\.conf|web\.config|htaccess\.txt|\.htacc>
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
}
}
$ ln -s /etc/nginx/sites-available/grav.koobik.lan /etc/nginx/sites-enabled/grav.koobik.lan
$ nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
$ systemctl reload nginx.service
Качаем GRAV с официального сайта (версию Core + Admin Plugin), закидываем на сервер и распаковываем.
$ unzip grav-admin-v1.7.32.zip -d /var/www/
$ ls -1 /var/www
grav-admin
html
Как видно выше, внутри архива с CMS все файлы спрятаны в директорию grav-admin, а мы в конфиге nginx указали grav. Можно или поменять название в конфиге, или переименовать директорию, я пойду по второму пути.
$ mv /var/www/grav-admin /var/www/grav
Меняем владельца на файлах и директориях, проверяем.
$ chown -R www-data:root /var/www/*
$ ls -l /var/www/grav/
total 544
-rw-r--r-- 1 www-data root 214288 Mar 28 17:38 CHANGELOG.md
-rw-r--r-- 1 www-data root 5476 Mar 28 17:38 CODE_OF_CONDUCT.md
-rw-r--r-- 1 www-data root 7098 Mar 28 17:38 CONTRIBUTING.md
-rw-r--r-- 1 www-data root 1071 Mar 28 17:38 LICENSE.txt
-rw-r--r-- 1 www-data root 7664 Mar 28 17:38 README.md
-rw-r--r-- 1 www-data root 996 Mar 28 17:38 SECURITY.md
drwxr-xr-x 2 www-data root 4096 Apr 6 06:44 assets
drwxr-xr-x 2 www-data root 4096 Mar 28 17:38 backup
drwxr-xr-x 2 www-data root 4096 Mar 28 17:38 bin
drwxr-xr-x 5 www-data root 4096 Apr 6 06:44 cache
-rw-r--r-- 1 www-data root 4551 Mar 28 17:38 composer.json
-rw-r--r-- 1 www-data root 241339 Mar 28 17:38 composer.lock
drwxr-xr-x 2 www-data root 4096 Mar 28 17:38 images
-rw-r--r-- 1 www-data root 1500 Mar 28 17:38 index.php
drwxr-xr-x 2 www-data root 4096 Mar 28 17:38 logs
-rw-r--r-- 1 www-data root 72 Mar 28 17:38 now.json
-rw-r--r-- 1 www-data root 274 Mar 28 17:38 robots.txt
drwxr-xr-x 10 www-data root 4096 Mar 28 17:38 system
drwxr-xr-x 2 www-data root 4096 Mar 28 17:38 tmp
drwxr-xr-x 8 www-data root 4096 Mar 28 17:38 user
drwxr-xr-x 29 www-data root 4096 Mar 28 17:38 vendor
drwxr-xr-x 2 www-data root 4096 Mar 28 17:38 webserver-configs
Теперь в браузере по адресу, сконфигурированному в nginx (в примере — http://grav.koobik.lan), будет доступен интерфейс установки CMS. Если все необходимые модули найдены и нет проблем с правами на директории — откроется окно со скриншота ниже (в противном случае — появится сообщение о нехватке тех или иных пакетов \ прав). Заполните форму для создания учетной записи администратора.

После создания учетной записи браузер перенаправит вас в админ-панель.

Теперь нам необходимо установить шаблон оформления. Нет необходимости скачивать его вручную, все темы и модули для CMS Grav могут быть установлены одним кликом в панели администрирования. Перейдите в раздел Themes, в поиске введите Learn2.

Под темой кликните на Install. CMS проверит зависимости, загрузит и установит тему. Останется только нажать Activate Learn2.

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

На этом установка завершена, информацию по администрированию CMS Grav можно найти тут.
Также рекомендую «допилить» веб-сервер с точки зрения безопасности:
Установка сертификата SSL в NGINX
Ограничение доступа в NGINX
nginx: [emerg] directive «return» is not terminated by «;» in /etc/nginx/sites-enabled/grav:13
location ~* /(system|vendor)/.*\.(txt|xml|md|html|json|yaml|yml|php|pl|py|cgi|twig|sh|bat)$ { return >
return не закрыт }
location ~ /(LICENSE\.txt|composer\.lock|composer\.json|nginx\.conf|web\.config|htaccess\.txt|\.htacc>
И тут location не закрыт