Cómo instalar ExpressionEngine CMS en CentOS 8

ExpressionEngine es un sistema de gestión de contenidos (CMS) de código abierto, maduro, flexible y seguro, escrito en PHP. Su código fuente está alojado en Github. Con ExpressionEngine, puedes construir sitios web con todas las funciones, crear una aplicación web o servir contenido a aplicaciones móviles. Todo ello sin requerir complejos conocimientos de programación. Esta guía te guiará a través del proceso de instalación de ExpressionEngine en un CentOS 8 fresco utilizando PHP, MariaDB como base de datos y Nginx como servidor web.

Requisitos

ExpressionEngine requiere un servidor web con PHP y MySQL/MariaDB. La pila de software y las versiones recomendadas son

  • PHP versión 7.0 o superior, funcionando con PHP-FPM y con las siguientes extensiones de PHP (gd, fileinfo, intl, mbstring).
  • MySQL versión 5.6 o superior o Percona versión 5.6 o superior. Estetutorial utilizará MariaDB.
  • Un servidor web como Nginx o Apache. Este tutorial utilizará Nginx.

Pasos iniciales

Comprueba tu versión de CentOS:

cat /etc/centos-release
# CentOS Linux release 8.0.1905 (Core)

Configura la zona horaria:

timedatectl list-timezones
sudo timedatectl set-timezone 'Region/City'

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 yum update -y

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

sudo yum install -y curl wget vim git unzip socat bash-completion epel-release

Paso 1 – Instalar PHP

Instala PHP, así como las extensiones PHP necesarias:

sudo yum install -y php-cli php-fpm php-common php-mbstring php-gd php-intl php-mysql php-json php-zip

Comprueba la versión de PHP:

php --version
# PHP 7.2.19 (cli) (built: Jun  2 2019 09:49:05) ( NTS )
# Copyright (c) 1997-2018 The PHP Group
# Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies

Para mostrar el PHP compilado en módulos, puedes ejecutar:

php -m

ctype
curl
exif
fileinfo
. . .
. . .

Iniciar y habilitar el servicio PHP-FPM:

sudo systemctl start php-fpm.service
sudo systemctl enable php-fpm.service

Paso 2 – Instalar MariaDB

Instala el servidor de bases de datos MariaDB:

sudo yum install -y mariadb-server

Comprueba la versión de MariaDB:

mysql --version
# mysql Ver 15.1 Distrib 10.3.11-MariaDB, for Linux (x86_64) using readline 5.1

Inicia y habilita el servicio MariaDB:

sudo systemctl start mariadb.service
sudo systemctl enable mariadb.service

Ejecuta el script mysql_secure_installation para mejorar la seguridad de tu instalación de MariaDB:

sudo mysql_secure_installation

Accede a MariaDB como usuario root:

sudo mysql -u root -p
# Enter password:

Crea una nueva base de datos MariaDB y un usuario de base de datos, y recuerda las credenciales:

CREATE DATABASE dbname;
GRANT ALL ON dbname.* TO 'username' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
quit

NOTA: Sustituye dbname y username por los nombres adecuados para tu instalación. Sustituye password por una contraseña fuerte.

Paso 3 – 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 un certificado SSL 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 su - root
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install --accountemail [email protected]
source ~/.bashrc
cd ~

Comprueba la versión de acme.sh:

acme.sh --version
# v2.8.3

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

# RSA 2048
acme.sh --issue --standalone -d example.com --keylength 2048
# ECDSA
acme.sh --issue --standalone -d example.com --keylength ec-256

Si quieres certificados falsos para hacer pruebas, puedes añadir --staging flag to the above commands.

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

  • Para RSA: /home/username/example.com directory.
  • Para ECC/ECDSA: /home/username/example.com_ecc directory.

Para listar tus certificados emitidos puedes ejecutar:

acme.sh --list

Crea un directorio para almacenar tus certificados. Utilizaremos un directorio /etc/letsencrypt.

mkdir -p /etc/letsecnrypt/example.com
sudo mkdir -p /etc/letsencrypt/example.com_ecc

Instala/copia los certificados en /etc/letsencrypt directorio:

# RSA
acme.sh --install-cert -d example.com --cert-file /etc/letsencrypt/example.com/cert.pem --key-file /etc/letsencrypt/example.com/private.key --fullchain-file /etc/letsencrypt/example.com/fullchain.pem --reloadcmd "sudo systemctl reload nginx.service"
# ECC/ECDSA
acme.sh --install-cert -d example.com --ecc --cert-file /etc/letsencrypt/example.com_ecc/cert.pem --key-file /etc/letsencrypt/example.com_ecc/private.key --fullchain-file /etc/letsencrypt/example.com_ecc/fullchain.pem --reloadcmd "sudo systemctl reload nginx.service"

Todos los certificados se renovarán automáticamente cada 60 días.

Tras obtener los certs sal del usuario root y vuelve al usuario sudo normal:

exit

Paso 4 - Instalar Nginx

Instala el servidor web Nginx:

sudo yum install -y nginx

Comprueba la versión de Nginx:

nginx -v
# nginx version: nginx/1.12.2

Inicia y habilita Nginx:

sudo systemctl start nginx.service
sudo systemctl enable nginx.service

Configura Nginx para ExpressionEngine. Ejecuta sudo vi /etc/nginx/conf.d/expressionengine.conf y rellena el archivo con la siguiente configuración.

server {

  listen 443 ssl;
  listen 80;
  
  server_name example.com;
  root /var/www/expressionengine;
# RSA
ssl_certificate /etc/letsencrypt/example.com/fullchain.cer;
ssl_certificate_key /etc/letsencrypt/example.com/example.com.key;
# ECDSA
ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.cer;
ssl_certificate_key /etc/letsencrypt/example.com_ecc/example.com.key;
index index.php; location / { index index.php; try_files $uri $uri/ @ee; } location @ee { rewrite ^(.*) /index.php?$1 last; } location ~* \.php$ { fastcgi_pass 127.0.0.1:9000; include fastcgi_params; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } }

Comprueba que la configuración de NGINX no tiene errores de sintaxis:

sudo nginx -t

Recarga el servicio NGINX:

sudo systemctl reload nginx.service

Paso 5 - Instalar ExpressionEngine

Crea un directorio raíz de documentos en el que deba residir ExpressionEngine:

sudo mkdir -p /var/www/expressionengine

Navega hasta la carpeta raíz del documento:

cd /var/www/expressionengine

Descarga la última versión de ExpressionEngine y descomprime los archivos en una carpeta de tu servidor:

sudo wget -O ee.zip --referer https://expressionengine.com/ 'https://expressionengine.com/?ACT=243'
sudo unzip ee.zip
sudo rm ee.zip

Cambia la propiedad del directorio /var/www/expressionengine a nginx:

sudo chown -R nginx:nginx /var/www/expressionengine

Ejecuta sudo vim /etc/php-fpm.d/www.conf y establece el usuario y el grupo como nginx. Inicialmente, estarán establecidos como apache:

sudo vi /etc/php-fpm.d/www.conf
# user = nginx
# group = nginx

Reinicia el servicio PHP-FPM:

sudo systemctl restart php-fpm.service

Dirige tu navegador a la URL del archivo admin.php que has subido. Por ejemplo: http://example.com/admin.php. Sigue las instrucciones en pantalla para instalar ExpressionEngine. Una vez que el asistente de instalación haya terminado, deberás cambiar el nombre o eliminar el directorio system/ee/installer/ de tu servidor.

Paso 6 - Completa la instalación de ExpressionEngine

Completa la instalación de ExpressionEngine introduciendo los datos de la base de datos y de la cuenta de administrador:

Establecer los detalles de la conexión a la base de datos

Después, verás la página de inicio de sesión por defecto:

Página de inicio de sesión

Este es el panel de administración de ExpressionEngine:

Panel de control del administrador

Y esta es la página del frontend:

Sitio web predeterminado

¡Ya está! La instalación de ExpressionEngine se ha completado.

Enlaces

Scroll al inicio