Grav es un sistema de gestión de contenido (CMS) autohospedado de software libre escrito en el lenguaje de programación PHP y basado en el marco de la aplicación web Symfony. Utiliza una base de datos de archivos planos tanto para backend como para frontend.
Es una buena alternativa a WordPress, ofrece un Dashboard, tiene una API, un administrador de paquetes, copias de seguridad y con capacidades de SEO.
También tiene un sistema de almacenamiento en caché sofisticado y automático. Compatible con memcached, redis, xcache, etc. Entre otras funciones interesantes.
Enlaces
- Documentación
- Repositorio GitHub
- Foro para soporte/ayuda.
Prerrequisitos
Un servidor Ubuntu Server 20.04 LTS con usuario root o con permisos para poder realizar sudo y un registro DNS para adquirir un certificado con Certbot.
Instalación
En este artículo se explica cómo instalar Grav CMS, pero previamente instalando y configurando NGINX con PHP con un certificado Let's Encrypt adquiriéndolo con Certbot. Sigue los pasos son los siguientes y ejecuta estos comandos.
Actualiza el repositorio e instala las actualizaciones:
# apt update && apt upgrade
Accede al directorio temporal y descarga Grav de la web oficial (incluye admin plugin):
# cd /tmp && wget https://getgrav.org/download/core/grav-admin/latest/grav-admin-v1.7.17.zip
Descomprime el fichero descargado:
# apt install -y unzip && unzip grav-admin-v1.7.17.zip
Instala NGINX, PHP con los requerimientos de Grav (algunos paquetes opcionales) y Certbot:
# apt install nginx php-cli php-fpm php-common php-curl php-dompdf php-gd php-zip php-apcu php-yaml php-xdebug php-mbstring php-gd php-xml php-json certbot python3-certbot-nginx
Comprueba la instalación de PHP y la versión:
# php -v
Sincroniza el directorio descomprimido con webroot:
# rsync -rtv grav-admin/ /var/www/html/
Cambia la propiedad y el grupo recursivamente:
# chown -R www-data:www-data /var/www/html/
También modifica los permisos al directorio:
# chmod -R 755 /var/www/html/
Luego edita el fichero del site:
# vi /etc/nginx/sites-available/default
Cambia el server_name del fichero por el registro del subdominio o dominio:
server_name grav.ejemplo.com;
Añade en la línea index el index.php:
index index.php;
Modifica la línea try_files por:
try_files $uri $uri/ /index.php?$args;
También descomenta las líneas para el uso de PHP y deniega .htaccess (no utilizado por NGINX). Quedará de esta forma:
# pass PHP scripts to FastCGI server
location ~ \.php$ {
# include snippets/fastcgi-php.conf;
include fastcgi.conf;
# fastcgi_index index.php;
# With php-fpm (or other unix sockets):
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
# With php-cgi (or other tcp sockets):
# fastcgi_pass 127.0.0.1:9000;
fastcgi_param HTTPS on;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.ht {
deny all;
}
Verifica la configuración modificada con:
# nginx -t
Reinicia el servicio web para recargar los cambios:
# systemctl restart nginx.service
Por último, certifica con Certbot con redirect:
# certbot --nginx --redirect -d grav.ejemplo.com
Con esta última acción, podrás acceder directamente por HTTPS al admin para finalizar la instalación creando un usuario desde el navegador para Grav (https://grav.ejemplo.es/admin)