Cómo instalar Grav CMS con Nginx en Debian 9

Graves una plataforma web basada en archivos, rápida,sencilla yflexible. Sigue principios similares a los de otras plataformas CMS de archivos planos, pero tiene una filosofía de diseño diferente a la de la mayoría.Grav viene con un potentesistema de gestión de paquetes que permite la instalación y actualización sencilla de plugins y temas, así como la actualización sencilla del propio Grav.

La arquitectura subyacente de Grav está diseñada para utilizar tecnologías bien establecidas y de primera clase para garantizar que Grav sea sencillo de utilizar y fácil de ampliar. Algunas de estas tecnologías clave son

  • Twig Templating: para un potente control de la interfaz de usuario
  • Markdown: para la creación sencilla de contenidos
  • YAML: para una configuración sencilla
  • Parsedown: para un soporte rápido de Markdown y Markdown Extra
  • Doctrine Cache: capa para el rendimiento
  • Pimple Dependency Injection Container: para la extensibilidad y la mantenibilidad
  • Symfony Event Dispatcher: para el manejo de eventos del plugin
  • Symfony Console: para la interfaz CLI
  • Gregwar Image Library: para la manipulación dinámica de imágenes

En esta guía, te guiaremos paso a paso a través del proceso de instalación de Grav CMS en el sistema operativo Debian 9 utilizando Nginx como servidor web, y acme.sh y Let’s Encrypt para HTTPS.

Requisitos

  • Servidor web (Apache, Nginx, LiteSpeed, Lightly o IIS). En esta guía, utilizaremos NGINX.
  • PHP 7.1.3 o superior con las siguientes extensiones PHP: curl, ctype, dom, gd, json, mbstring, openssl, session, simplexml, xml, zip, apcu(opcional), opcache(opcional).

Requisitos previos

  • Un sistema operativo con Debian 9.
  • Un usuario no root con privilegios sudo.

Pasos iniciales

Comprueba tu versión de Debian:

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

Configura la zona horaria:

sudo dpkg-reconfigure tzdata

Actualiza los paquetes de tu sistema operativo (software). Este es un primer paso importante porque garantiza que tienes las últimas actualizaciones y correcciones de seguridad de los paquetes de software por defecto de tu sistema operativo:

sudo apt update && sudo apt upgrade -y

Instala algunos paquetes esenciales que son necesarios para la administración básica del sistema operativo Debian:

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

Paso 1 – Instalar PHP y las extensiones de PHP

Grav CMS requiere la versión 7.1de PHP o superior. Debian tiene la versión 7 de PHP en el repositorio por defecto, por lo que tendrás que utilizar el repositorio de un tercero para instalar una versión más reciente.

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

Instala PHP 7.2, así como las extensiones PHP necesarias:

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

Comprueba la versión de PHP:

php --version

# PHP 7.2.18-1+0~20190503103213.21+stretch~1.gbp101320 (cli) (built: May  3 2019 10:32:13) ( NTS )
# Copyright (c) 1997-2018 The PHP Group
# Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
# with Zend OPcache v7.2.18-1+0~20190503103213.21+stretch~1.gbp101320, Copyright (c) 1999-2018, by Zend Technologies

El servicio PHP-FPM se inicia y habilita automáticamente al reiniciar el sistema Debian 9, por lo que no es necesario iniciarlo y habilitarlo manualmente. Podemos pasar al siguiente paso, que es la configuración de SSL.

Paso 2 – Instalar el cliente Acme.sh y obtener el certificado Let’s Encrypt (opcional)

Asegurar tu sitio web con HTTPS no es necesario, pero es una buena práctica para asegurar el tráfico de tu sitio. Para obtener el certificado TLS de Let’s Encrypt utilizaremos el cliente Acme.sh. Acme.sh es un software de shell Unix puro para obtener certificados TLS de Let’s Encrypt con cero dependencias.

Descarga e instala Acme.sh:

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

Comprueba la versión de Acme.sh:

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

Obtén certificados RSA y ECC/ECDSA para tu dominio/nombre de host:

# 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

Después de ejecutar los comandos anteriores, tus certificados y claves estarán en:

  • Para RSA: directorio /etc/letsencrypt/example.com.
  • Para ECC/ECDSA: directorio /etc/letsencrypt/example.com_ecc.

Paso 3 – Instalar y configurar NGINX

Instala el servidor web NGINX:

sudo apt install -y nginx

Comprueba la versión de NGINX:

nginx -v
# nginx version: nginx/1.10.3

Ejecuta sudo vim /etc/nginx/sites-available/grav.conf y rellena el archivo con la siguiente configuración:

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;
  }

}

Activa la nueva configuración degrav.conf vinculando el archivo al directorio sites-enabled.

sudo ln -s /etc/nginx/sites-available/grav.conf /etc/nginx/sites-enabled

CompruebaNGINX en busca de errores de sintaxis:

sudo nginx -t

RecargaNGINX :

sudo systemctl reload nginx.service

Paso 4 - Instalar Grav CMS

Crea un directorio raíz de documentos donde deba residir Grav:

sudo mkdir -p /var/www/grav

Cambia la propiedad del directorio /var/www/grav a {tu_usuario}. Sustituye {tu_usuario} en el comando que aparece a continuación por el nombre de usuario con el que has iniciado la sesión en Debian.:

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

Navega hasta el directorio raíz del documento:

cd /var/www/grav

Descarga la última versión de la página oficial y extrae el archivo zip:

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

NOTA: Actualiza la URL de descarga si hay una versión más reciente.

Cambia la propiedad del directorio /var/www/grav a www-data:

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

Paso 5 - Completa la configuración de Grav

Abre tu sitio en un navegador web y deberías ver una página que te pide que crees una cuenta de administrador de Grav. Crea una y procede haciendo clic en el botón "Crear usuario":

Eso es todo. Tu instalación de Grav está completa.

Enlaces

También te podría gustar...