Cómo instalar Craft CMS con Nginx en Ubuntu 20.04
Craft CMS es un sistema de gestión de contenidos gratuito y de código abierto para sitios web. Apoyado por una amplia y creciente comunidad de desarrolladores y diseñadores, ofrece una serie de funciones innovadoras con un diseño elegante que facilita su uso. Además, te permite controlar todos los aspectos del desarrollo de tu sitio.
Es una gran alternativa a WordPress y Drupal, que son dos de los sistemas de gestión de contenidos más populares en la actualidad.
Un sistema de gestión de contenidos (CMS) es un software que se utiliza para facilitar la gestión de los contenidos de la web, como la edición de contenidos o la adición de nuevas páginas e imágenes. Gestionar un sitio web puede ser difícil si tienes que crear cada página individualmente en código usando HTML u otros lenguajes de marcado; esto puede causar problemas si tienes varias personas trabajando en tu sitio a la vez, ya que puede no haber acuerdo sobre cómo deben verse o comportarse ciertos elementos.
El uso de un CMS te permite establecer la estructura general de cada página, así como elementos específicos, como una entrada de blog o la descripción de un producto; luego, cuando otra persona necesite editar esa información, sólo tendrá que utilizar el CMS.
Esta guía muestra cómo instalar Craft CMS en Ubuntu 20.04 LTS (Focal Fossa). Te mostrará cómo instalar Craft CMS en tu servidor Ubuntu. Si quieres utilizar la base de datos MySQL/MariaDB, esta guía te ayudará a instalarla también.
El proceso de instalación de Craft CMS en Ubuntu es similar independientemente de la distribución y la versión que utilices, por lo que deberías poder seguir esta guía aunque tu sistema sea ligeramente diferente. Este tutorial se ha creado teniendo en cuenta una instalación nueva de Ubuntu; sin embargo, algunos pasos pueden variar ligeramente en función de la configuración actual de tu servidor.
Requisitos previos
Para seguir esta guía necesitarás algunas cosas:
- Un servidor con Ubuntu 20.04 LTS.
- Un usuario no root con privilegios sudo configurado en tu servidor Ubuntu.
Cómo empezar
Actualizar tu sistema
En primer lugar, entra en tu servidor como tu usuario no root ejecutando el siguiente comando:
ssh root@your_instance_ip
El nombre de usuario es root, te conectas al servidor ‘instance_ip’ utilizando el protocolo SSH
tu_instancia_ip es la dirección IP privada de tu servidor donde se instalará Craft CMS.
Actualiza tu sistema operativo ejecutando el siguiente comando
sudo apt update && sudo apt upgrade -y
ejecuta sudo apt update para asegurarte de que tu sistema Ubuntu está actualizado. Este comando hará que Ubuntu descargue nuevos paquetes de los repositorios de Ubuntu y los instale en tu sistema operativo Ubuntu. Ubuntu utiliza un repositorio (o más exactamente, «repositorios») que son centros de distribución de software de donde Ubuntu obtiene todas sus aplicaciones.
sudo apt upgrade es un comando de Ubuntu para actualizar y mejorar el software de Ubuntu. Esto actualiza tu software de Ubuntu, lo que incluye la actualización del núcleo de Ubuntu, de los paquetes instalados y de cualquier nueva versión del software de Ubuntu.
-y es la forma corta de –y. El comando de Ubuntu ‘apt upgrade -y’ significa que Ubuntu dirá automáticamente que sí a cualquier solicitud de actualización del software de Ubuntu.
Si obtienes algún error al ejecutar este comando, es posible que tengas que corregirlo con el Centro de Software de Ubuntu o a través de un terminal. Puedes hacerlo escribiendo sudo apt-get -f install y siguiendo las instrucciones del Centro de Software de Ubuntu para solucionar todos los problemas, o puedes utilizar el comando de Terminal «sudo dpkg –configure -a» para solucionar los errores y luego volver a ejecutar el comando anterior.
sudo apt-get -f install
sudo dpkg --configure -a
Ejemplo de salida:
Instalación de dependencias
Instala las dependencias ejecutando el siguiente comando:
sudo apt install -y curl wget vim git unzip socat
curl es para que Ubuntu descargue las actualizaciones de los repositorios de Ubuntu. wget es un software gratuito soportado en Ubuntu y otros sistemas operativos Linux para obtener archivos mediante los protocolos HTTP, HTTPS y FTP.
vim es un popular editor de texto basado en Unix que funciona en casi todos los sistemas Unix, así como en Microsoft Windows.
Ubuntu utiliza unzip para extraer archivos de un archivo ZIP.
Ubuntu utiliza socat, una utilidad basada en la línea de comandos para abrir conexiones entre dos aplicaciones diferentes utilizando los flujos o archivos de entrada y salida estándar.
Ejemplo de salida:
Instalar el servidor LEMP
Craft CMS está escrito en PHP y utiliza MySQL/MariaDB como motor de base de datos. Configuraremos Ubuntu para utilizarlo conjuntamente utilizando «una pila LEMP». Una pila LEMP es un acrónimo de Linux, servidor web Nginx, motor de base de datos MySQL/MariaDB y lenguaje de programación PHP.
Primero, instala el servidor Nginx y MariaDB ejecutando el siguiente comando en tu terminal:
sudo apt-get install nginx mariadb-server -y
Salida de ejemplo:
Una vez instalados ambos, puedes instalar PHP ejecutando el siguiente comando en tu terminal:
sudo apt-get install php php-cli php-fpm php-common php-curl php-gd php-imagick php-json php-mbstring php-mysql php-pgsql php-zip php-intl php-xml -y
php-cli es la interfaz de línea de comandos para PHP, y el nombre del paquete por defecto era «php5» en el pasado. Ahora ha cambiado su nombre a «php».
php-fpm es la versión -wait de php-cgi. Puede manejar bien las peticiones concurrentes y es útil para ser utilizado detrás de un servidor proxy.
php-common es para las bibliotecas comunes que necesitan otros módulos, por ejemplo, php-json se instala automáticamente cuando instalamos «php».
php-curl es un módulo para acceder a la URL a través de cURL (herramienta de línea de comandos que envía peticiones HTTP).
Nota: Ubuntu utiliza el Centro de Software de Ubuntu para instalar el software de Ubuntu. Sin embargo, el Centro de Software de Ubuntu no puede descargar ni instalar software de terceros, como algunos paquetes de Python (virtualenv, etc.) necesarios para Craft CMS. En el Centro de Software de Ubuntu, tienes que copiar y pegar manualmente los comandos que se encuentran aquí en una ventana de Terminal y seguir las instrucciones.
Después de instalar todos los paquetes, edita el archivo php.ini en el directorio etc/php/7.4/fpm de Ubuntu:
sudo nano /etc/php/7.4/fpm/php.ini
Cambia las siguientes configuraciones en el archivo
memory_limit = 512M post_max_size = 32M upload_max_filesize = 32M date.timezone = Asia/Kolkata
memory_limit = 512M es necesario para Craft CMS, en Ubuntu 20.04 LTS , PHP no puede cambiar el memory_limit por sí mismo por lo que debemos cambiarlo manualmente en el archivo php.ini.
post_max_size = 32M y upload_max_filesize = 32M son necesarios para subir archivos de imagen a través del CMS, Ubuntu 20.04 LTS ha establecido los valores de post_max_size y upload_max_filesize a 16M por defecto en el archivo php.ini de Ubuntu, Craft CMS requiere 32M.
Craft CMS también requiere date.timezone = Asia/Kolkata para mostrar la hora correctamente en Ubuntu 20.04 LTS. Ubuntu 20.04 LTS utiliza UTC-5 como zona horaria por defecto, Craft CMS requiere la zona horaria en UTC+05:30 (hora estándar de la India).
Después de editar el archivo php.ini, guarda y cierra el archivo y reinicia el servicio PHP-FPM de Ubuntu:
sudo systemctl restart php7.4-fpm
Para comprobar el estado del servicio PHP-FPM de Ubuntu, introduce el siguiente comando:
sudo systemctl status php7.4-fpm
Ejemplo de salida:
Ahora que tienes listo el servidor LEMP, vamos al siguiente paso.
Crear la base de datos
Ahora vamos a crear una base de datos para Craft CMS. Abre la consola MySQL de Ubuntu:
sudo mysql -u root -p
-p significa contraseña. Si quieres conectarte mediante el usuario root, sólo tienes que escribir -u root y pulsar Enter sin escribir ninguna otra información específica.
Introduce la contraseña que has establecido durante la instalación de Ubuntu. A continuación, ejecuta los siguientes comandos para crear una base de datos llamada ‘craftdb’:
CREATE DATABASE craftdb;
GRANT ALL ON craftdb.* TO 'craftuser' IDENTIFIED BY 'mypassword';
FLUSH PRIVILEGES;
EXIT;
Para utilizar esta base de datos, necesitamos conectarnos a ella. Así que creamos un usuario llamado ‘craftuser’. Utilizamos IDENTIFIED BY en lugar de VALUES porque le decimos a MySQL que sólo utilice la base de datos y no otros datos. Sustituye la palabra mypassword por una contraseña segura de tu elección.
FLUSH PRIVILEGES es para descartar todas las transacciones no comprometidas en esta sesión.
Instalar Craft CMS
Para instalar Craft CMS, primero debemos instalar la última versión de Composer. Porque Ubuntu no soporta el uso de gemas en su sistema. Sólo podemos instalar Craft CMS utilizando Composer. Ejecuta el siguiente comando para instalar Composer:
sudo curl -sS https://getcomposer.org/installer -o composer-setup.php
-s activa el modo silencioso. Por defecto, curl no muestra la salida a medida que avanza el -s, puedes pasar una url para que sea analizada. En este caso le decimos a curl que obtenga la URL https://getcomposre el -s, añadimos la bandera para descargar un archivo (que es https://getcomposer.org/installer) y guardar la URL, la bandera -o le dice a curl que escriba el archivo descargado en composer-setup.php
A continuación, instala el Composer ejecutando el siguiente comando:
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
El comando php es necesario para indicar al ordenador que quieres ejecutar este script PHP sudo composer-setup.php –install-dir=/usr/local/bin –filename=composer
El directorio de instalación es la ruta de destino de Composer. En este caso es /usr/local/bin. Si no quieres que el archivo sea accesible para todos los usuarios, utiliza ./ o ./. Además, este directorio debe tener permisos de ejecución.
La bandera –filename es el nombre del archivo con el que se instalará Composer.
Si no sabes dónde ponerlo, puedes copiar el archivo en cualquier directorio de tu elección o especificarlo después de –filename
Una vez instalado el Composer, verifica la versión instalada con el siguiente comando:
composer --version
Ejemplo de salida:
A continuación, crea un directorio para tu proyecto Craft CMS. Creamos un directorio llamado craft bajo el directorio /var/www/html/. Utilizaremos este directorio como raíz de nuestra web. Es decir, todos los archivos que creemos o las páginas que sirva Craft CMS se accederán desde la raíz web.
mkdir /var/www/html/craft
A continuación, entra en el directorio craft e instala el Craft CMS utilizando Composer:
cd /var/www/html/craft
composer create-project craftcms/craft
Nota: Si utilizas una versión de Craft inferior a la 0.97, sustituye create-project por install.
Waring: Esto sobrescribirá cualquier archivo existente en el directorio.
Si quieres tener un directorio diferente para tu Craft CMS, puedes especificar la opción –prefer-dist.
Si tu proveedor de alojamiento no permite cambiar la raíz del documento a /var/www, entonces es muy recomendable instalar Craft en un subdirectorio de la raíz web como: mkdir craft y ejecutar composer create-project craftcms/craft craft.
Ejemplo de salida:
Se te pedirán los datos de la base de datos, un nombre de usuario y una contraseña para la administración.
Tienes que proporcionar unas credenciales de usuario para la base de datos MYSQL para que Craft pueda configurar sus claves de seguridad internas. El nombre de host es ‘localhost’, el nombre de usuario es ‘craftuser’ y la contraseña es la que has elegido en el momento de crear la base de datos MySQL anteriormente.
En este punto, Composer debería ser capaz de compilar e instalar Craft en un directorio llamado craft dentro de tu estructura webroot /var/www. Por defecto, no es accesible a través de Internet a menos que hayas habilitado el acceso HTTP.
A continuación, establece la propiedad adecuada para el directorio Craft recién instalado:
chown -R www-data:www-data /var/www/html/craft
Configurar Nginx
Nginx se utiliza para servir las peticiones de los clientes que van directamente a él. Ofrece algunas ventajas adicionales, como servir muy bien los archivos estáticos, almacenar en caché las páginas y comprimirlas con gzip.
sudo nano /etc/nginx/conf.d/craft.conf
Rellena el archivo con las siguientes líneas:
server {
listen 80;
server_name craft.example.com;
root /var/www/html/craft/web;
index index.php;
location / {
try_files $uri/index.html $uri $uri/ /index.php?$query_string;
}
location ~ [^/]\.php(/|$) {
try_files $uri $uri/ /index.php?$query_string;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param HTTP_PROXY "";
}
}
Nombre del servidor: Es el nombre de dominio o la dirección IP de tu servidor, los clientes lo utilizarán para resolver a quién tienen que solicitar los archivos (en nuestro caso es craft.example.com).
Raíz de los documentos: Aquí es donde residen los activos principales de Craft CMS, incluyendo las carpetas web y del núcleo que están bajo /var/www/html/craft. La ruta que ves aquí puede ser diferente, dependiendo de la versión de craft que estés utilizando o de si la estructura de carpetas ha cambiado.
Try_files $uri $uri/$uri : Para cualquier petición a una URI relativa como http:// craft.example.com/index.php devolverá el archivo index.php que suele estar en la raíz del documento de tu instalación de craft.
Ubicación ~ [^/]\\Nde.php(/|$) : La regex para archivos PHP significa básicamente buscar cualquier petición que termine con un .php o que coincida con todo excepto / y $ (busca recursivamente).
Ubicación del socket PHP-FPM: Esto es utilizado por las solicitudes de activos del núcleo de Craft CMS, este valor debe corresponder con el nombre de tu archivo de socket php-fpm en tu archivo de configuración principal /etc/php/7.4{5,6}-fpm.conf
Guarda y cierra el archivo y luego verifica que funciona ejecutando:
sudo nginx -t
Ejemplo de salida:
Si no hay ningún error, puedes reiniciar Nginx con el siguiente comando:
sudo systemctl reload nginx
Acceder a Craft CMS
Ahora que los archivos están configurados, podemos acceder a nuestra instalación de Craft CMS. Dirige tu navegador a http://craft.example.com y deberías ver la pantalla de bienvenida:
Haz clic en «ir a tu panel de control», rellena los datos de tu administrador y haz clic en «iniciar sesión». Deberías ver el panel de control por defecto.
Si te encuentras con un mensaje que dice «503 no disponible» como este:
Asegúrate de que tienes las últimas actualizaciones de Craft, del tema Craft y del plugin Craft. Si eso no ayuda, prueba los siguientes pasos: asegúrate de que los permisos de las carpetas de Craft son correctos como se describe en este artículo. Estos archivos deberían ser propiedad de root y craft no debería tener permiso de escritura en ninguna de sus carpetas.
Conclusión
¡Enhorabuena! Ahora has instalado con éxito CraftCMS en Ubuntu 20.04. ¡Vamos a hacer algunos sitios web! Como siempre, no dudes en dejar comentarios o sugerencias a continuación.