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. Если все необходимые модули найдены и нет проблем с правами на директории — откроется окно со скриншота ниже (в противном случае — появится сообщение о нехватке тех или иных пакетов \ прав). Заполните форму для создания учетной записи администратора.
![](https://koobik.net/wp-content/uploads/2022/04/grav1.png)
После создания учетной записи браузер перенаправит вас в админ-панель.
![](https://koobik.net/wp-content/uploads/2022/04/grav2-1024x375.png)
Теперь нам необходимо установить шаблон оформления. Нет необходимости скачивать его вручную, все темы и модули для CMS Grav могут быть установлены одним кликом в панели администрирования. Перейдите в раздел Themes, в поиске введите Learn2.
![](https://koobik.net/wp-content/uploads/2022/04/grav3-1024x500.png)
Под темой кликните на Install. CMS проверит зависимости, загрузит и установит тему. Останется только нажать Activate Learn2.
![](https://koobik.net/wp-content/uploads/2022/04/grav4-1024x561.png)
Внешний вид клиентской части изменится. На дефолтной странице Typography можно найти примеры визуального оформления.
![](https://koobik.net/wp-content/uploads/2022/04/grav5-1024x494.png)
На этом установка завершена, информацию по администрированию CMS Grav можно найти тут.
Также рекомендую «допилить» веб-сервер с точки зрения безопасности:
Установка сертификата SSL в NGINX
Ограничение доступа в NGINX